stlviewer.js

changeset 12
b3cf0176512e
parent 11
098335a1d510
child 13
39fb313ba27c
equal deleted inserted replaced
11:098335a1d510 12:b3cf0176512e
23 } ); 23 } );
24 24
25 function clear_scene() { 25 function clear_scene() {
26 scene.children.forEach(function(v){ 26 scene.children.forEach(function(v){
27 if(v.stlfile === true) { 27 if(v.stlfile === true) {
28 v.material.dispose(); 28 //v.material.dispose();
29 v.geometry.dispose(); 29 v.geometry.dispose();
30 scene.remove(v); 30 scene.remove(v);
31 } 31 }
32 //scene.remove(object); 32 //scene.remove(object);
33 }); 33 });
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 }

mercurial