Skip to content

Instantly share code, notes, and snippets.

@ntzyz
Created September 28, 2017 07:20
Show Gist options
  • Save ntzyz/b845b1260f0128673b616a759d2c53b5 to your computer and use it in GitHub Desktop.
Save ntzyz/b845b1260f0128673b616a759d2c53b5 to your computer and use it in GitHub Desktop.
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