Created
September 28, 2017 07:20
-
-
Save ntzyz/b845b1260f0128673b616a759d2c53b5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function loadSkin(domImg, domCanvas) { | |
var renderer; | |
this.renderer = renderer = new THREE.WebGLRenderer({ | |
canvas: domCanvas, | |
// antialias: true | |
}); | |
renderer.setClearColor(0xffffff); | |
var scene = this.scene = new THREE.Scene(); | |
var camera = this.camera = new THREE.PerspectiveCamera(45, 1, 1, 80); | |
renderer.autoClear = false; | |
var sampleRatio = 2; | |
var renderModel = new THREE.RenderPass(scene, camera); | |
var effectCopy = new THREE.ShaderPass(THREE.CopyShader); | |
effectCopy.renderToScreen = true; | |
composer = new THREE.EffectComposer(renderer); | |
composer.setSize(domCanvas.clientWidth * sampleRatio, domCanvas.clientHeight * sampleRatio); | |
composer.addPass(renderModel); | |
composer.addPass(effectCopy); | |
// Skin, or Material | |
var loader = this.loader = new THREE.TextureLoader(); | |
loader.load( | |
domImg.src, | |
function ( texture ) { // on finish | |
texture.magFilter = THREE.NearestFilter; | |
texture.minFilter = THREE.NearestMipMapNearestFilter; | |
material = new THREE.MeshBasicMaterial({ | |
map: texture, | |
}); | |
materialOverlay = new THREE.MeshBasicMaterial({ | |
map: texture, | |
alphaTest: 0.9, | |
side: THREE.DoubleSide | |
}); | |
camera.position.set(10, 20, 50); | |
camera.lookAt(new THREE.Vector3(0, 0, 0)); | |
if (domImg.naturalHeight == 64) { | |
scene.add(loadHead()); | |
scene.add(loadHeadOverlay()); | |
scene.add(loadBody()); | |
scene.add(loadBodyOverlay()); | |
scene.add(loadLeftLeg()); | |
scene.add(loadLeftLegOverlay()); | |
scene.add(loadRightLeg()); | |
scene.add(loadRightLegOverlay()); | |
scene.add(loadLeftArm()); | |
scene.add(loadLeftArmOverlay()); | |
scene.add(loadRightArm()); | |
scene.add(loadRightArmOverlay()); | |
} | |
else { | |
head = loadHead17(); scene.add(head); | |
body = loadBody17(); scene.add(body); | |
leg1 = loadRightLeg17(); scene.add(leg1); | |
leg2 = loadRightLeg17(); leg2.position.x *= -1; scene.add(leg2); | |
arm1 = loadRightArm17(); scene.add(arm1); | |
arm2 = loadRightArm17(); arm2.position.x *= -1; scene.add(arm2); | |
} | |
renderer.render(scene, camera); | |
this.theta = 0; | |
var render = function () { | |
this.theta += 0.01; | |
requestAnimationFrame( render ); | |
camera.position.set(50 * Math.sin(this.theta), 20, 50 * Math.cos(this.theta)); | |
camera.lookAt(new THREE.Vector3(0, 0, 0)); | |
// renderer.render(scene, camera); | |
renderer.clear(); | |
composer.render(); | |
}; | |
render(); | |
}, | |
function ( xhr ) { // on loading | |
console.log( (xhr.loaded / xhr.total * 100) + '% loaded' ); | |
}, // on errors | |
function ( xhr ) { | |
console.log( 'An error happened' ); | |
} | |
); | |
this.reload = function() { | |
loader.load( | |
domImg.src, | |
function ( texture ) { // on finish | |
texture.magFilter = THREE.NearestFilter; | |
texture.minFilter = THREE.NearestMipMapNearestFilter; | |
material = new THREE.MeshBasicMaterial({ | |
map: texture, | |
}); | |
materialOverlay = new THREE.MeshBasicMaterial({ | |
map: texture, | |
alphaTest: 0.9, | |
side: THREE.DoubleSide | |
}); | |
camera.lookAt(new THREE.Vector3(0, 0, 0)); | |
console.info('Removing all children...') | |
for (var i = scene.children.length - 1; i >= 0 ; i--) { | |
var child = scene.children[ i ]; | |
if (child !== camera) { | |
scene.remove(child); | |
} | |
} | |
if (domImg.naturalHeight == 64) { | |
scene.add(loadHead()); | |
scene.add(loadHeadOverlay()); | |
scene.add(loadBody()); | |
scene.add(loadBodyOverlay()); | |
scene.add(loadLeftLeg()); | |
scene.add(loadLeftLegOverlay()); | |
scene.add(loadRightLeg()); | |
scene.add(loadRightLegOverlay()); | |
scene.add(loadLeftArm()); | |
scene.add(loadLeftArmOverlay()); | |
scene.add(loadRightArm()); | |
scene.add(loadRightArmOverlay()); | |
} | |
else { | |
head = loadHead17(); scene.add(head); | |
body = loadBody17(); scene.add(body); | |
leg1 = loadRightLeg17(); scene.add(leg1); | |
leg2 = loadRightLeg17(); leg2.position.x *= -1; scene.add(leg2); | |
arm1 = loadRightArm17(); scene.add(arm1); | |
arm2 = loadRightArm17(); arm2.position.x *= -1; scene.add(arm2); | |
} | |
renderer.render(scene, camera); | |
}, | |
function ( xhr ) { // on loading | |
console.log( (xhr.loaded / xhr.total * 100) + '% loaded' ); | |
}, // on errors | |
function ( xhr ) { | |
console.log( 'An error happened' ); | |
} | |
); | |
} | |
function loadHead() { | |
var head_front = [ | |
new THREE.Vector2(8/64, 56/64), new THREE.Vector2(8/64, 48/64), | |
new THREE.Vector2(16/64, 48/64), new THREE.Vector2(16/64, 56/64), | |
] | |
var head_end = [ | |
new THREE.Vector2(24/64, 56/64), new THREE.Vector2(24/64, 48/64), | |
new THREE.Vector2(32/64, 48/64), new THREE.Vector2(32/64, 56/64), | |
] | |
var head_right = [ | |
new THREE.Vector2(0/64, 56/64), new THREE.Vector2(0/64, 48/64), | |
new THREE.Vector2(8/64, 48/64), new THREE.Vector2(8/64, 56/64), | |
]; | |
var head_left = [ | |
new THREE.Vector2(16/64, 56/64), new THREE.Vector2(16/64, 48/64), | |
new THREE.Vector2(24/64, 48/64), new THREE.Vector2(24/64, 56/64), | |
]; | |
var head_top = [ | |
new THREE.Vector2(8/64, 64/64), new THREE.Vector2(8/64, 56/64), | |
new THREE.Vector2(16/64, 56/64), new THREE.Vector2(16/64, 64/64), | |
]; | |
var head_bottom = [ | |
new THREE.Vector2(16/64, 64/64), new THREE.Vector2(16/64, 56/64), | |
new THREE.Vector2(24/64, 56/64), new THREE.Vector2(24/64, 64/64), | |
]; | |
var head_geomerty = new THREE.CubeGeometry(8, 8, 8); | |
// left | |
head_geomerty.faceVertexUvs[0][0] = [ head_left[0], head_left[1], head_left[3] ]; | |
head_geomerty.faceVertexUvs[0][1] = [ head_left[1], head_left[2], head_left[3] ]; | |
// right | |
head_geomerty.faceVertexUvs[0][2] = [ head_right[0], head_right[1], head_right[3] ]; | |
head_geomerty.faceVertexUvs[0][3] = [ head_right[1], head_right[2], head_right[3] ]; | |
// top | |
head_geomerty.faceVertexUvs[0][4] = [ head_top[0], head_top[1], head_top[3] ]; | |
head_geomerty.faceVertexUvs[0][5] = [ head_top[1], head_top[2], head_top[3] ]; | |
// bottom | |
head_geomerty.faceVertexUvs[0][6] = [ head_bottom[0], head_bottom[1], head_bottom[3] ]; | |
head_geomerty.faceVertexUvs[0][7] = [ head_bottom[1], head_bottom[2], head_bottom[3] ]; | |
// front | |
head_geomerty.faceVertexUvs[0][8] = [ head_front[0], head_front[1], head_front[3] ]; | |
head_geomerty.faceVertexUvs[0][9] = [ head_front[1], head_front[2], head_front[3] ]; | |
// end | |
head_geomerty.faceVertexUvs[0][10] = [ head_end[0], head_end[1], head_end[3] ]; | |
head_geomerty.faceVertexUvs[0][11] = [ head_end[1], head_end[2], head_end[3] ]; | |
var head = new THREE.Mesh(head_geomerty, material); | |
head.position.y = 10; | |
return head; | |
} | |
function loadHeadOverlay() { | |
var head_front = [ | |
new THREE.Vector2(40/64, 56/64), new THREE.Vector2(40/64, 48/64), | |
new THREE.Vector2(48/64, 48/64), new THREE.Vector2(48/64, 56/64), | |
] | |
var head_end = [ | |
new THREE.Vector2(56/64, 56/64), new THREE.Vector2(56/64, 48/64), | |
new THREE.Vector2(64/64, 48/64), new THREE.Vector2(64/64, 56/64), | |
] | |
var head_right = [ | |
new THREE.Vector2(32/64, 56/64), new THREE.Vector2(32/64, 48/64), | |
new THREE.Vector2(40/64, 48/64), new THREE.Vector2(40/64, 56/64), | |
]; | |
var head_left = [ | |
new THREE.Vector2(48/64, 56/64), new THREE.Vector2(48/64, 48/64), | |
new THREE.Vector2(56/64, 48/64), new THREE.Vector2(56/64, 56/64), | |
]; | |
var head_top = [ | |
new THREE.Vector2(40/64, 64/64), new THREE.Vector2(40/64, 56/64), | |
new THREE.Vector2(48/64, 56/64), new THREE.Vector2(48/64, 64/64), | |
]; | |
var head_bottom = [ | |
new THREE.Vector2(48/64, 64/64), new THREE.Vector2(48/64, 56/64), | |
new THREE.Vector2(56/64, 56/64), new THREE.Vector2(56/64, 64/64), | |
]; | |
var head_geomerty = new THREE.CubeGeometry(9, 9, 9); | |
// left | |
head_geomerty.faceVertexUvs[0][0] = [ head_left[0], head_left[1], head_left[3] ]; | |
head_geomerty.faceVertexUvs[0][1] = [ head_left[1], head_left[2], head_left[3] ]; | |
// right | |
head_geomerty.faceVertexUvs[0][2] = [ head_right[0], head_right[1], head_right[3] ]; | |
head_geomerty.faceVertexUvs[0][3] = [ head_right[1], head_right[2], head_right[3] ]; | |
// top | |
head_geomerty.faceVertexUvs[0][4] = [ head_top[0], head_top[1], head_top[3] ]; | |
head_geomerty.faceVertexUvs[0][5] = [ head_top[1], head_top[2], head_top[3] ]; | |
// bottom | |
head_geomerty.faceVertexUvs[0][6] = [ head_bottom[0], head_bottom[1], head_bottom[3] ]; | |
head_geomerty.faceVertexUvs[0][7] = [ head_bottom[1], head_bottom[2], head_bottom[3] ]; | |
// front | |
head_geomerty.faceVertexUvs[0][8] = [ head_front[0], head_front[1], head_front[3] ]; | |
head_geomerty.faceVertexUvs[0][9] = [ head_front[1], head_front[2], head_front[3] ]; | |
// end | |
head_geomerty.faceVertexUvs[0][10] = [ head_end[0], head_end[1], head_end[3] ]; | |
head_geomerty.faceVertexUvs[0][11] = [ head_end[1], head_end[2], head_end[3] ]; | |
var head = new THREE.Mesh(head_geomerty, materialOverlay); | |
head.position.y = 10; | |
return head; | |
} | |
function loadHead17() { | |
var head_front = [ | |
new THREE.Vector2(8/64, 24/32), new THREE.Vector2(8/64, 16/32), | |
new THREE.Vector2(16/64, 16/32), new THREE.Vector2(16/64, 24/32), | |
] | |
var head_end = [ | |
new THREE.Vector2(24/64, 24/32), new THREE.Vector2(24/64, 16/32), | |
new THREE.Vector2(32/64, 16/32), new THREE.Vector2(32/64, 24/32), | |
] | |
var head_right = [ | |
new THREE.Vector2(0/64, 24/32), new THREE.Vector2(0/64, 16/32), | |
new THREE.Vector2(8/64, 16/32), new THREE.Vector2(8/64, 24/32), | |
]; | |
var head_left = [ | |
new THREE.Vector2(16/64, 24/32), new THREE.Vector2(16/64, 16/32), | |
new THREE.Vector2(24/64, 16/32), new THREE.Vector2(24/64, 24/32), | |
]; | |
var head_top = [ | |
new THREE.Vector2(8/64, 32/32), new THREE.Vector2(8/64, 24/32), | |
new THREE.Vector2(16/64, 24/32), new THREE.Vector2(16/64, 32/32), | |
]; | |
var head_bottom = [ | |
new THREE.Vector2(16/64, 32/32), new THREE.Vector2(16/64, 24/32), | |
new THREE.Vector2(24/64, 24/32), new THREE.Vector2(24/64, 32/32), | |
]; | |
var head_geomerty = new THREE.CubeGeometry(8, 8, 8); | |
// left | |
head_geomerty.faceVertexUvs[0][0] = [ head_left[0], head_left[1], head_left[3] ]; | |
head_geomerty.faceVertexUvs[0][1] = [ head_left[1], head_left[2], head_left[3] ]; | |
// right | |
head_geomerty.faceVertexUvs[0][2] = [ head_right[0], head_right[1], head_right[3] ]; | |
head_geomerty.faceVertexUvs[0][3] = [ head_right[1], head_right[2], head_right[3] ]; | |
// top | |
head_geomerty.faceVertexUvs[0][4] = [ head_top[0], head_top[1], head_top[3] ]; | |
head_geomerty.faceVertexUvs[0][5] = [ head_top[1], head_top[2], head_top[3] ]; | |
// bottom | |
head_geomerty.faceVertexUvs[0][6] = [ head_bottom[0], head_bottom[1], head_bottom[3] ]; | |
head_geomerty.faceVertexUvs[0][7] = [ head_bottom[1], head_bottom[2], head_bottom[3] ]; | |
// front | |
head_geomerty.faceVertexUvs[0][8] = [ head_front[0], head_front[1], head_front[3] ]; | |
head_geomerty.faceVertexUvs[0][9] = [ head_front[1], head_front[2], head_front[3] ]; | |
// end | |
head_geomerty.faceVertexUvs[0][10] = [ head_end[0], head_end[1], head_end[3] ]; | |
head_geomerty.faceVertexUvs[0][11] = [ head_end[1], head_end[2], head_end[3] ]; | |
var head = new THREE.Mesh(head_geomerty, material); | |
head.position.y = 10; | |
return head; | |
} | |
function loadBody() { | |
var body_front = [ | |
new THREE.Vector2(20/64, 44/64), new THREE.Vector2(20/64, 32/64), | |
new THREE.Vector2(28/64, 32/64), new THREE.Vector2(28/64, 44/64), | |
] | |
var body_end = [ | |
new THREE.Vector2(32/64, 44/64), new THREE.Vector2(32/64, 32/64), | |
new THREE.Vector2(40/64, 32/64), new THREE.Vector2(40/64, 44/64), | |
] | |
var body_right = [ | |
new THREE.Vector2(28/64, 44/64), new THREE.Vector2(28/64, 32/64), | |
new THREE.Vector2(32/64, 32/64), new THREE.Vector2(32/64, 44/64), | |
]; | |
var body_left = [ | |
new THREE.Vector2(16/64, 44/64), new THREE.Vector2(16/64, 32/64), | |
new THREE.Vector2(20/64, 32/64), new THREE.Vector2(20/64, 44/64), | |
]; | |
var body_top = [ | |
new THREE.Vector2(20/64, 48/64), new THREE.Vector2(20/64, 44/64), | |
new THREE.Vector2(28/64, 44/64), new THREE.Vector2(28/64, 48/64), | |
]; | |
var body_bottom = [ | |
new THREE.Vector2(28/64, 48/64), new THREE.Vector2(28/64, 44/64), | |
new THREE.Vector2(36/64, 44/64), new THREE.Vector2(36/64, 48/64), | |
]; | |
var body_geomerty = new THREE.CubeGeometry(8, 12, 4); | |
// left | |
body_geomerty.faceVertexUvs[0][0] = [ body_left[0], body_left[1], body_left[3] ]; | |
body_geomerty.faceVertexUvs[0][1] = [ body_left[1], body_left[2], body_left[3] ]; | |
// right | |
body_geomerty.faceVertexUvs[0][2] = [ body_right[0], body_right[1], body_right[3] ]; | |
body_geomerty.faceVertexUvs[0][3] = [ body_right[1], body_right[2], body_right[3] ]; | |
// top | |
body_geomerty.faceVertexUvs[0][4] = [ body_top[0], body_top[1], body_top[3] ]; | |
body_geomerty.faceVertexUvs[0][5] = [ body_top[1], body_top[2], body_top[3] ]; | |
// bottom | |
body_geomerty.faceVertexUvs[0][6] = [ body_bottom[0], body_bottom[1], body_bottom[3] ]; | |
body_geomerty.faceVertexUvs[0][7] = [ body_bottom[1], body_bottom[2], body_bottom[3] ]; | |
// front | |
body_geomerty.faceVertexUvs[0][8] = [ body_front[0], body_front[1], body_front[3] ]; | |
body_geomerty.faceVertexUvs[0][9] = [ body_front[1], body_front[2], body_front[3] ]; | |
// end | |
body_geomerty.faceVertexUvs[0][10] = [ body_end[0], body_end[1], body_end[3] ]; | |
body_geomerty.faceVertexUvs[0][11] = [ body_end[1], body_end[2], body_end[3] ]; | |
var body = new THREE.Mesh(body_geomerty, material); | |
return body; | |
} | |
function loadBodyOverlay() { | |
var body_front = [ | |
new THREE.Vector2(20/64, 28/64), new THREE.Vector2(20/64, 16/64), | |
new THREE.Vector2(28/64, 16/64), new THREE.Vector2(28/64, 28/64), | |
] | |
var body_end = [ | |
new THREE.Vector2(32/64, 28/64), new THREE.Vector2(32/64, 16/64), | |
new THREE.Vector2(40/64, 16/64), new THREE.Vector2(40/64, 28/64), | |
] | |
var body_right = [ | |
new THREE.Vector2(28/64, 28/64), new THREE.Vector2(28/64, 16/64), | |
new THREE.Vector2(32/64, 16/64), new THREE.Vector2(32/64, 28/64), | |
]; | |
var body_left = [ | |
new THREE.Vector2(16/64, 28/64), new THREE.Vector2(16/64, 16/64), | |
new THREE.Vector2(20/64, 16/64), new THREE.Vector2(20/64, 28/64), | |
]; | |
var body_top = [ | |
new THREE.Vector2(20/64, 32/64), new THREE.Vector2(20/64, 28/64), | |
new THREE.Vector2(28/64, 28/64), new THREE.Vector2(28/64, 32/64), | |
]; | |
var body_bottom = [ | |
new THREE.Vector2(28/64, 32/64), new THREE.Vector2(28/64, 28/64), | |
new THREE.Vector2(36/64, 28/64), new THREE.Vector2(36/64, 32/64), | |
]; | |
var body_geomerty = new THREE.CubeGeometry(8.5, 12.5, 4.5); | |
// left | |
body_geomerty.faceVertexUvs[0][0] = [ body_left[0], body_left[1], body_left[3] ]; | |
body_geomerty.faceVertexUvs[0][1] = [ body_left[1], body_left[2], body_left[3] ]; | |
// right | |
body_geomerty.faceVertexUvs[0][2] = [ body_right[0], body_right[1], body_right[3] ]; | |
body_geomerty.faceVertexUvs[0][3] = [ body_right[1], body_right[2], body_right[3] ]; | |
// top | |
body_geomerty.faceVertexUvs[0][4] = [ body_top[0], body_top[1], body_top[3] ]; | |
body_geomerty.faceVertexUvs[0][5] = [ body_top[1], body_top[2], body_top[3] ]; | |
// bottom | |
body_geomerty.faceVertexUvs[0][6] = [ body_bottom[0], body_bottom[1], body_bottom[3] ]; | |
body_geomerty.faceVertexUvs[0][7] = [ body_bottom[1], body_bottom[2], body_bottom[3] ]; | |
// front | |
body_geomerty.faceVertexUvs[0][8] = [ body_front[0], body_front[1], body_front[3] ]; | |
body_geomerty.faceVertexUvs[0][9] = [ body_front[1], body_front[2], body_front[3] ]; | |
// end | |
body_geomerty.faceVertexUvs[0][10] = [ body_end[0], body_end[1], body_end[3] ]; | |
body_geomerty.faceVertexUvs[0][11] = [ body_end[1], body_end[2], body_end[3] ]; | |
var body = new THREE.Mesh(body_geomerty, materialOverlay); | |
return body; | |
} | |
function loadBody17() { | |
var body_front = [ | |
new THREE.Vector2(20/64, 44/32 - 1), new THREE.Vector2(20/64, 32/32 - 1), | |
new THREE.Vector2(28/64, 32/32 - 1), new THREE.Vector2(28/64, 44/32 - 1), | |
] | |
var body_end = [ | |
new THREE.Vector2(32/64, 44/32 - 1), new THREE.Vector2(32/64, 32/32 - 1), | |
new THREE.Vector2(40/64, 32/32 - 1), new THREE.Vector2(40/64, 44/32 - 1), | |
] | |
var body_right = [ | |
new THREE.Vector2(28/64, 44/32 - 1), new THREE.Vector2(28/64, 32/32 - 1), | |
new THREE.Vector2(32/64, 32/32 - 1), new THREE.Vector2(32/64, 44/32 - 1), | |
]; | |
var body_left = [ | |
new THREE.Vector2(16/64, 44/32 - 1), new THREE.Vector2(16/64, 32/32 - 1), | |
new THREE.Vector2(20/64, 32/32 - 1), new THREE.Vector2(20/64, 44/32 - 1), | |
]; | |
var body_top = [ | |
new THREE.Vector2(20/64, 48/32 - 1), new THREE.Vector2(20/64, 44/32 - 1), | |
new THREE.Vector2(28/64, 44/32 - 1), new THREE.Vector2(28/64, 48/32 - 1), | |
]; | |
var body_bottom = [ | |
new THREE.Vector2(28/64, 48/32 - 1), new THREE.Vector2(28/64, 44/32 - 1), | |
new THREE.Vector2(36/64, 44/32 - 1), new THREE.Vector2(36/64, 48/32 - 1), | |
]; | |
var body_geomerty = new THREE.CubeGeometry(8, 12, 4); | |
// left | |
body_geomerty.faceVertexUvs[0][0] = [ body_left[0], body_left[1], body_left[3] ]; | |
body_geomerty.faceVertexUvs[0][1] = [ body_left[1], body_left[2], body_left[3] ]; | |
// right | |
body_geomerty.faceVertexUvs[0][2] = [ body_right[0], body_right[1], body_right[3] ]; | |
body_geomerty.faceVertexUvs[0][3] = [ body_right[1], body_right[2], body_right[3] ]; | |
// top | |
body_geomerty.faceVertexUvs[0][4] = [ body_top[0], body_top[1], body_top[3] ]; | |
body_geomerty.faceVertexUvs[0][5] = [ body_top[1], body_top[2], body_top[3] ]; | |
// bottom | |
body_geomerty.faceVertexUvs[0][6] = [ body_bottom[0], body_bottom[1], body_bottom[3] ]; | |
body_geomerty.faceVertexUvs[0][7] = [ body_bottom[1], body_bottom[2], body_bottom[3] ]; | |
// front | |
body_geomerty.faceVertexUvs[0][8] = [ body_front[0], body_front[1], body_front[3] ]; | |
body_geomerty.faceVertexUvs[0][9] = [ body_front[1], body_front[2], body_front[3] ]; | |
// end | |
body_geomerty.faceVertexUvs[0][10] = [ body_end[0], body_end[1], body_end[3] ]; | |
body_geomerty.faceVertexUvs[0][11] = [ body_end[1], body_end[2], body_end[3] ]; | |
var body = new THREE.Mesh(body_geomerty, material); | |
return body; | |
} | |
function loadLeftLeg() { | |
var baseX = 16/64; | |
var baseY = 0/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4, 12, 4); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightLeg = new THREE.Mesh(geomerty, material); | |
rightLeg.position.x = 2; | |
rightLeg.position.y = -12; | |
return rightLeg; | |
} | |
function loadLeftLegOverlay() { | |
var baseX = 0/64; | |
var baseY = 0/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4.5, 12.5, 4.5); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var leftLeg = new THREE.Mesh(geomerty, materialOverlay); | |
leftLeg.position.x = 2; | |
leftLeg.position.y = -12; | |
return leftLeg; | |
} | |
function loadRightLeg() { | |
var baseX = 0/64; | |
var baseY = 32/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4, 12, 4); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightLeg = new THREE.Mesh(geomerty, material); | |
rightLeg.position.x = -2; | |
rightLeg.position.y = -12; | |
return rightLeg; | |
} | |
function loadRightLegOverlay() { | |
var baseX = 0/64; | |
var baseY = 16/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4.5, 12.5, 4.5); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightLeg = new THREE.Mesh(geomerty, materialOverlay); | |
rightLeg.position.x = -2; | |
rightLeg.position.y = -12; | |
return rightLeg; | |
} | |
function loadRightLeg17() { | |
var baseX = 0/64; | |
var baseY = 0/32; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4, 12, 4); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightLeg = new THREE.Mesh(geomerty, material); | |
rightLeg.position.x = -2; | |
rightLeg.position.y = -12; | |
return rightLeg; | |
} | |
function loadLeftArm() { | |
var baseX = 32/64; | |
var baseY = 0/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4, 12, 4); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightArm = new THREE.Mesh(geomerty, material); | |
rightArm.position.x = 6; | |
rightArm.position.y = 0; | |
return rightArm; | |
} | |
function loadLeftArmOverlay() { | |
var baseX = 32/64; | |
var baseY = 16/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4.5, 12.5, 4.5); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var LeftArm = new THREE.Mesh(geomerty, materialOverlay); | |
LeftArm.position.x = 6; | |
LeftArm.position.y = 0; | |
return LeftArm; | |
} | |
function loadRightArm() { | |
var baseX = 40/64; | |
var baseY = 32/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4, 12, 4); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightArm = new THREE.Mesh(geomerty, material); | |
rightArm.position.x = -6; | |
rightArm.position.y = 0; | |
return rightArm; | |
} | |
function loadRightArmOverlay() { | |
var baseX = 40/64; | |
var baseY = 16/64; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4.5, 12.5, 4.5); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightArm = new THREE.Mesh(geomerty, materialOverlay); | |
rightArm.position.x = -6; | |
rightArm.position.y = 0; | |
return rightArm; | |
} | |
function loadRightArm17() { | |
var baseX = 40/64; | |
var baseY = 0/32; | |
var front = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
] | |
var end = [ | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 16/64, baseY + 12/64), | |
] | |
var left = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
]; | |
var right = [ | |
new THREE.Vector2(baseX + 0/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 0/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 0/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
]; | |
var top = [ | |
new THREE.Vector2(baseX + 4/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 4/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
]; | |
var bottom = [ | |
new THREE.Vector2(baseX + 8/64, baseY + 16/64), | |
new THREE.Vector2(baseX + 8/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 12/64), | |
new THREE.Vector2(baseX + 12/64, baseY + 16/64), | |
]; | |
var geomerty = new THREE.CubeGeometry(4, 12, 4); | |
// left | |
geomerty.faceVertexUvs[0][0] = [ left[0], left[1], left[3] ]; | |
geomerty.faceVertexUvs[0][1] = [ left[1], left[2], left[3] ]; | |
// right | |
geomerty.faceVertexUvs[0][2] = [ right[0], right[1], right[3] ]; | |
geomerty.faceVertexUvs[0][3] = [ right[1], right[2], right[3] ]; | |
// top | |
geomerty.faceVertexUvs[0][4] = [ top[0], top[1], top[3] ]; | |
geomerty.faceVertexUvs[0][5] = [ top[1], top[2], top[3] ]; | |
// bottom | |
geomerty.faceVertexUvs[0][6] = [ bottom[0], bottom[1], bottom[3] ]; | |
geomerty.faceVertexUvs[0][7] = [ bottom[1], bottom[2], bottom[3] ]; | |
// front | |
geomerty.faceVertexUvs[0][8] = [ front[0], front[1], front[3] ]; | |
geomerty.faceVertexUvs[0][9] = [ front[1], front[2], front[3] ]; | |
// end | |
geomerty.faceVertexUvs[0][10] = [ end[0], end[1], end[3] ]; | |
geomerty.faceVertexUvs[0][11] = [ end[1], end[2], end[3] ]; | |
var rightArm = new THREE.Mesh(geomerty, material); | |
rightArm.position.x = -6; | |
rightArm.position.y = 0; | |
return rightArm; | |
} | |
return this; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment