1var inserter_version="1.2.2" 2var cameraZ;var r;var divId;var debug=!1;if(WEBGL.isWebGLAvailable()===!1){divS=document.getElementById(cname);divS.appendChild(WEBGL.getWebGLErrorMessage())} 3function showhide(divId){var x=document.getElementById(divId);if(x.style.display==="none"){x.style.display="block"}else{x.style.display="none"}} 4function hide(divId){var x=document.getElementById(divId);x.style.display="none"} 5function toggle_rotation(){rotate=!rotate} 6function zoom_refit(offset){offset=offset||1.25;camera.position.x=cameraX*offset;camera.position.y=cameraY*offset;camera.position.z=cameraZ*offset;camera.lookAt(scene.position);renderer.render(scene,camera)} 7function degToRad(degrees){var pi=Math.PI;return degrees*(pi/180)} 8function zoom(offset){offset=offset||1.25;camera.position.x=camera.position.x*offset;camera.position.y=camera.position.y*offset;camera.position.z=camera.position.z*offset;camera.lookAt(scene.position);renderer.render(scene,camera)} 9function fitCameraToObject(camera,object,offset,controls){offset=offset||1.35;const boundingBox=new THREE.Box3();boundingBox.setFromObject(object);const center=boundingBox.getCenter();const size=boundingBox.getSize();const maxDim=Math.max(size.x,size.y,size.z);const fov=camera.fov*(Math.PI/180);cameraZ=Math.abs(maxDim/2*Math.tan(fov*2));r=camera.position.z*offset;cameraZ*=offset;if(0){zoom_refit(offset)}else{scene.updateMatrixWorld();var objectWorldPosition=new THREE.Vector3();objectWorldPosition.setFromMatrixPosition(object.matrixWorld);const directionVector=camera.position.sub(objectWorldPosition);const unitDirectionVector=directionVector.normalize();camera.position=unitDirectionVector.multiplyScalar(cameraZ);camera.lookAt(objectWorldPosition);const minZ=boundingBox.min.z;const cameraToFarEdge=(minZ<0)?-minZ+cameraZ:cameraZ-minZ;camera.far=cameraToFarEdge*3;camera.updateProjectionMatrix();if(controls){controls.target=center;controls.maxDistance=cameraToFarEdge*2;controls.saveState()}else{camera.lookAt(center)}} 10cameraX=camera.position.x 11cameraY=camera.position.y} 12var container;var scene,renderer;var views=[];var model,cname,ar;var mixer;var clock=new THREE.Clock();function initTest(model){model_url=model;model_name=model;console.log(model_name);modelExt=model.substring(model.lastIndexOf(".")+1) 13console.log(modelExt);modelName=model.substring(0,model.lastIndexOf(".")) 14console.log(modelName);objName=modelName+'.obj' 15mtlName=modelName+'.mtl' 16console.log(objName);console.log(mtlName)} 17function init(model,cname,ar,ioffset,ground){divS=document.getElementById(cname);camera=new THREE.PerspectiveCamera(60,divS.clientWidth/(divS.clientWidth/ar),0.01,1e10);camera.position.z=6;scene=new THREE.Scene();scene.background=new THREE.Color(jsbackcolor);if(0){scene.fog=new THREE.Fog(0xD9D9D9,2,20)} 18scene.add(camera);if(0){var plane=new THREE.Mesh(new THREE.PlaneBufferGeometry(40,40),new THREE.MeshPhongMaterial({color:0x999999,specular:0x101010}));plane.rotation.x=-Math.PI/2;plane.position.y=-10.0;scene.add(plane);plane.receiveShadow=!0} 19if(ground==!0){var mesh=new THREE.Mesh(new THREE.PlaneBufferGeometry(2000,2000),new THREE.MeshPhongMaterial({color:groundcolor,specular:0x101010,depthWrite:!1}));mesh.rotation.x=-Math.PI/2;mesh.receiveShadow=!0;mesh.position.y=ground_offset;scene.add(mesh)} 20if(grid==!0){var gridXZ=new THREE.GridHelper(2000,20);gridXZ.setColors(new THREE.Color(0x006600),new THREE.Color(0x006600));gridXZ.position.set(0,0,0);gridXZ.position.y=ground_offset;scene.add(gridXZ)} 21if(1){var dirLight=new THREE.DirectionalLight(light_color,light_intensity);dirLight.position.set(lx,ly,lz).normalize();camera.add(dirLight);camera.add(dirLight.target)} 22var light=new THREE.AmbientLight(amb_light_color,amb_light_intensity);scene.add(light);if(0){light=new THREE.HemisphereLight(0xffffff,0x444444);light.position.set(0,200,0);scene.add(light);light=new THREE.DirectionalLight(0xffffff);light.position.set(0,200,100);light.castShadow=!0;light.shadow.camera.top=180;light.shadow.camera.bottom=-100;light.shadow.camera.left=-120;light.shadow.camera.right=120;scene.add(light)} 23if(0){spotLight=new THREE.SpotLight(0xffffff,1);spotLight.position.set(400,400,1000);spotLight.angle=Math.PI/4;spotLight.penumbra=0.05;spotLight.decay=2;spotLight.distance=200;spotLight.castShadow=!0;spotLight.shadow.mapSize.width=1024;spotLight.shadow.mapSize.height=1024;spotLight.shadow.camera.near=10;spotLight.shadow.camera.far=200;scene.add(spotLight)} 24if(back_image_url.length>0){new THREE.TextureLoader().load(back_image_url,function(texture){scene.background=texture})} 25modelName=model.substring(0,model.lastIndexOf(".")) 26modelType=model.substring(model.lastIndexOf(".")) 27if(modelType=='.obj'){objName=modelName+'.obj' 28mtlName=modelName+'.mtl'}else if(modelType=='.fbx'){objName=modelName+'.fbx'}else if(modelType=='.dae'){objName=modelName+'.dae'}else if(modelType=='.stl'){objName=modelName+'.stl'}else if(modelType=='.wrl'){objName=modelName+'.wrl'} 29var onProgress=function(xhr){if(xhr.lengthComputable){var percentComplete=xhr.loaded/xhr.total*100}};var onError=function(){};THREE.Loader.Handlers.add(/\.dds$/i,new THREE.DDSLoader());if(modelType=='.obj'){new THREE.MTLLoader().load(mtlName,function(materials){materials.preload();new THREE.OBJLoader().setMaterials(materials).load(objName,function(object){object.rotation.set(degToRad(rx),degToRad(ry),degToRad(rz));scene.add(object);fitCameraToObject(camera,object,ioffset,controls);setTimeout(function(){jQuery('.imgpreloader').fadeOut('slow');if(autostart==!0){rotate=!0}},100)},onProgress,onError)})}else if(modelType=='.fbx'){var loader=new THREE.FBXLoader();loader.load(objName,function(object){mixer=new THREE.AnimationMixer(object);if(object.animations.length>0){var action=mixer.clipAction(object.animations[0]);action.play()} 30object.traverse(function(child){if(child.isMesh){child.castShadow=!0;child.receiveShadow=!0}
30});object.rotation.set(degToRad(rx),degToRad(ry),degToRad(rz));scene.add(object);fitCameraToObject(camera,object,ioffset,controls);setTimeout(function(){jQuery('.imgpreloader').fadeOut('slow');if(autostart==!0){rotate=!0}},100)},onProgress,onError)} 31if(modelType=='.stl'){var loader=new THREE.STLLoader();loader.load(objName,function(geometry){var material=new THREE.MeshPhongMaterial({color:mesh_color,specular:0x111111,shininess:200});var mesh=new THREE.Mesh(geometry,material);mesh.castShadow=!0;mesh.receiveShadow=!0;object=mesh;object.rotation.set(degToRad(rx),degToRad(ry),degToRad(rz));scene.add(object);fitCameraToObject(camera,object,ioffset,controls);setTimeout(function(){jQuery('.imgpreloader').fadeOut('slow');if(autostart==!0){rotate=!0}},100)},onProgress,onError)}else if(modelType=='.wrl'){var loader=new THREE.VRMLLoader();loader.load(objName,function(object){object.rotation.set(degToRad(rx),degToRad(ry),degToRad(rz));scene.add(object);fitCameraToObject(camera,object,ioffset,controls);setTimeout(function(){jQuery('.imgpreloader').fadeOut('slow');if(autostart==!0){rotate=!0}},100)},onProgress,onError)} 32renderer=new THREE.WebGLRenderer({antialias:!0});renderer.setPixelRatio(window.devicePixelRatio);document.getElementById(cname).appendChild(renderer.domElement);controls=new THREE.OrbitControls(camera,renderer.domElement);divS=document.getElementById(cname);renderer.setSize(divS.clientWidth,divS.clientWidth/ar);window.addEventListener('resize',onWindowResize,!1)} 33function onWindowResize(){divS=document.getElementById(cname);camera.aspect=divS.clientWidth/(divS.clientWidth/ar);camera.updateProjectionMatrix();renderer.setSize(divS.clientWidth-0.5,divS.clientWidth/ar)} 34function animate(){requestAnimationFrame(animate);if(rotate){var timer=Date.now()*0.0005*speed;r=cameraZ*offs*1.0;camera.position.x=r*Math.cos(timer);camera.position.z=r*Math.sin(timer);camera.lookAt(scene.position);if(debug){console.log(timer+'% t');console.log(camera.position.x+'% x');console.log(camera.position.z+'% z')}}else{r=camera.position.z} 35var delta=clock.getDelta();if(mixer)mixer.update(delta);renderer.render(scene,camera)}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.