57 for (i = 0; i<data.objects.length; i++) { |
57 for (i = 0; i<data.objects.length; i++) { |
58 var obj = data.objects[i]; |
58 var obj = data.objects[i]; |
59 if (obj[5] == "") { |
59 if (obj[5] == "") { |
60 // spacer |
60 // spacer |
61 filename = "stl/spacer_" + obj[4][0] + '.stl'; |
61 filename = "stl/spacer_" + obj[4][0] + '.stl'; |
|
62 material = 'm_spacer'; |
62 } else { |
63 } else { |
63 // cylinder |
64 // cylinder |
64 filename = "stl/cylinder_" + obj[5] + '.stl'; |
65 filename = "stl/cylinder_" + obj[5] + '.stl'; |
|
66 material = 'm_cylinder'; |
65 } |
67 } |
66 position = [data.scale3d * 0.01 * obj[0], 0, 0]; |
68 position = [data.scale3d * 0.01 * obj[0], 0, 0]; |
67 loadSTL(filename, null, position); |
69 loadSTL(filename, material + "", position); |
68 } |
70 } |
69 |
71 |
70 } |
72 } |
71 }); |
73 }); |
72 } |
74 } |
73 |
75 |
74 function loadSTL(filename, material, position, rotation, scale) { |
76 function loadSTL(filename, material, position, rotation, scale) { |
75 //console.log(filename, position); |
77 //console.log(filename, position); |
76 var loader = new THREE.STLLoader(); |
78 var loader = new THREE.STLLoader(); |
77 loader.load( filename, function ( geometry ) { |
79 loader.load( filename, function ( geometry ) { |
78 if (!material) |
80 /*if (!material) |
79 var material = new THREE.MeshPhongMaterial( { |
81 var material = new THREE.MeshPhongMaterial( { |
80 color: 0xff5533, specular: 0x111111, shininess: 200 } ); |
82 color: 0xff5533, specular: 0x111111, shininess: 200 } ); |
|
83 else {*/ |
|
84 if (material == 'm_spacer') material = m_spacer; |
|
85 else if (material == 'm_cylinder') material = m_cylinder; |
|
86 //} |
|
87 |
81 var mesh = new THREE.Mesh( geometry, material ); |
88 var mesh = new THREE.Mesh( geometry, material ); |
|
89 //assignUVs(mesh.geometry); |
82 mesh["stlfile"] = true; |
90 mesh["stlfile"] = true; |
83 if (!position) mesh.position.set( 0, -0.25, 0 ); else |
91 if (!position) mesh.position.set( 0, -0.25, 0 ); else |
84 mesh.position.set( position[0], position[1], position[2] ); |
92 mesh.position.set( position[0], position[1], position[2] ); |
85 if (!rotation) mesh.rotation.set( 0, 0, 0 ); else |
93 if (!rotation) mesh.rotation.set( 0, 0, 0 ); else |
86 mesh.rotation.set( rotation[0], rotation[1], rotation[2] ); |
94 mesh.rotation.set( rotation[0], rotation[1], rotation[2] ); |
137 |
145 |
138 renderer.gammaInput = true; |
146 renderer.gammaInput = true; |
139 renderer.gammaOutput = true; |
147 renderer.gammaOutput = true; |
140 |
148 |
141 renderer.shadowMap.enabled = true; |
149 renderer.shadowMap.enabled = true; |
142 renderer.shadowMap.renderReverseSided = true; |
150 renderer.shadowMap.renderReverseSided = false; |
143 |
151 |
144 container.appendChild( renderer.domElement ); |
152 container.appendChild( renderer.domElement ); |
145 |
153 |
146 window.addEventListener( 'resize', onWindowResize, false ); |
154 window.addEventListener( 'resize', onWindowResize, false ); |
147 |
155 |
195 camera.position.x = Math.cos( timer ) * 3; |
203 camera.position.x = Math.cos( timer ) * 3; |
196 camera.position.z = Math.sin( timer ) * 3; |
204 camera.position.z = Math.sin( timer ) * 3; |
197 camera.lookAt( cameraTarget ); |
205 camera.lookAt( cameraTarget ); |
198 renderer.render( scene, camera ); |
206 renderer.render( scene, camera ); |
199 } |
207 } |
|
208 |
|
209 function assignUVs(geometry) { |
|
210 |
|
211 geometry.faceVertexUvs[0] = []; |
|
212 |
|
213 geometry.faces.forEach(function(face) { |
|
214 |
|
215 var components = ['x', 'y', 'z'].sort(function(a, b) { |
|
216 return Math.abs(face.normal[a]) > Math.abs(face.normal[b]); |
|
217 }); |
|
218 |
|
219 var v1 = geometry.vertices[face.a]; |
|
220 var v2 = geometry.vertices[face.b]; |
|
221 var v3 = geometry.vertices[face.c]; |
|
222 |
|
223 geometry.faceVertexUvs[0].push([ |
|
224 new THREE.Vector2(v1[components[0]], v1[components[1]]), |
|
225 new THREE.Vector2(v2[components[0]], v2[components[1]]), |
|
226 new THREE.Vector2(v3[components[0]], v3[components[1]]) |
|
227 ]); |
|
228 |
|
229 }); |
|
230 |
|
231 geometry.uvsNeedUpdate = true; |
|
232 } |