429 lines
154 KiB
Plaintext
429 lines
154 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import stl.mesh\n",
|
|
"import numpy\n",
|
|
"import trimesh\n",
|
|
"import random\n",
|
|
"\n",
|
|
"import meshutil\n",
|
|
"import examples"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#mesh = examples.ram_horn()\n",
|
|
"#mesh = examples.twist()\n",
|
|
"#mesh = examples.twist_nonlinear()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 65,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"def gen_twisted_boundary(count=4, dx0=2, dz=0.2, ang=0.1):\n",
|
|
" b = numpy.array([\n",
|
|
" [0, 0, 0],\n",
|
|
" [1, 0, 0],\n",
|
|
" [1, 0, 1],\n",
|
|
" [0, 0, 1],\n",
|
|
" ], dtype=numpy.float64) - [0.5, 0, 0.5]\n",
|
|
" # this function almost needs some sort of 'continuous'\n",
|
|
" # property about it - that it is not tied to an integral\n",
|
|
" # number of iterations of a transform, but can smoothly\n",
|
|
" # generate it at any resolution.\n",
|
|
" # but... can I do that? do all transforms accomodate that?\n",
|
|
" # some should (rotation, translation), for others it makes\n",
|
|
" # no sense (mirroring)\n",
|
|
" #\n",
|
|
" # Generate 'seed' transformations:\n",
|
|
" xfs = [meshutil.Transform().translate(dx0, 0, 0).rotate([0,1,0], numpy.pi * 2 * i / count)\n",
|
|
" for i in range(count)]\n",
|
|
" # (we'll increment the transforms in xfs as we go)\n",
|
|
" while True:\n",
|
|
" xfs_new = []\n",
|
|
" bs = []\n",
|
|
" for i, xf in enumerate(xfs):\n",
|
|
" # Generate a boundary from running transform:\n",
|
|
" b_i = xf.apply_to(b)\n",
|
|
" bs.append(b_i)\n",
|
|
" # Increment transform i:\n",
|
|
" xf2 = xf.rotate([0,1,0], ang)\n",
|
|
" xfs_new.append(xf2)\n",
|
|
" xfs = xfs_new\n",
|
|
" yield bs"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 66,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# This is to see how well it works to compose generators:\n",
|
|
"def gen_inc_y(gen, dy=0.1):\n",
|
|
" xf = meshutil.Transform()\n",
|
|
" for bs in gen:\n",
|
|
" bs2 = [xf.apply_to(b) for b in bs]\n",
|
|
" yield bs2\n",
|
|
" xf = xf.translate(0, dy, 0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 67,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# and to string together boundaries from a generator:\n",
|
|
"def gen2mesh(gen, count):\n",
|
|
" # Get first list of boundaries:\n",
|
|
" bs_last = next(gen)\n",
|
|
" # TODO: Begin and end with close_boundary_simple\n",
|
|
" mesh = meshutil.FaceVertexMesh.Empty()\n",
|
|
" for i,bs_cur in enumerate(gen):\n",
|
|
" for j,b in enumerate(bs_cur):\n",
|
|
" m = meshutil.join_boundary_simple(bs_last[j], b)\n",
|
|
" mesh = mesh.concat(m)\n",
|
|
" bs_last = bs_cur\n",
|
|
" if i > count:\n",
|
|
" break\n",
|
|
" return mesh"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 68,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"gen = gen_inc_y(gen_twisted_boundary())\n",
|
|
"mesh = gen2mesh(gen, 100)\n",
|
|
"# TODO: Fix winding order"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 28,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# what even is this?\n",
|
|
"\"\"\"\n",
|
|
"dx0=2\n",
|
|
"frames=100\n",
|
|
"b = numpy.array([\n",
|
|
" [0, 0, 0],\n",
|
|
" [1, 0, 0],\n",
|
|
" [1, 0, 1],\n",
|
|
" [0, 0, 1],\n",
|
|
"], dtype=numpy.float64) - [0.5, 0.5, 0]\n",
|
|
"ang = -numpy.pi*2 / frames\n",
|
|
"# negative because of winding order annoyance\n",
|
|
"mesh = meshutil.FaceVertexMesh.Empty()\n",
|
|
"xf = meshutil.Transform() \\\n",
|
|
" .translate(dx0, 0, 0)\n",
|
|
"b0 = xf.apply_to(b)\n",
|
|
"for layer in range(frames):\n",
|
|
" b_sub0 = xf.apply_to(b)\n",
|
|
" incr = meshutil.Transform().rotate([0,0,1], ang)\n",
|
|
" b_sub1 = xf.compose(incr).apply_to(b)\n",
|
|
" m = meshutil.join_boundary_simple(b_sub0, b_sub1)\n",
|
|
" mesh = mesh.concat(m)\n",
|
|
" xf = xf.compose(incr)\n",
|
|
"\"\"\""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#mesh = torus_xy()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 70,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"face_normals didn't match triangles, ignoring!\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<iframe srcdoc=\"<!DOCTYPE html>\n",
|
|
"<html lang="en">\n",
|
|
" <head>\n",
|
|
" <title>trimesh: threejs viewer</title>\n",
|
|
" <meta charset="utf-8">\n",
|
|
" <meta name="viewport" content="width=device-width, \n",
|
|
"\t\t user-scalable=no, \n",
|
|
"\t\t minimum-scale=1.0, \n",
|
|
"\t\t maximum-scale=1.0">\n",
|
|
" <style>\n",
|
|
" body {\n",
|
|
" margin: 0px;\n",
|
|
" overflow: hidden;\n",
|
|
" }\n",
|
|
" </style>\n",
|
|
" </head>\n",
|
|
" <body>\n",
|
|
" <div id="container"></div>\n",
|
|
" <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/106/three.min.js"></script>\n",
|
|
" <script>THREE.TrackballControls=function(object,domElement){var _this=this;var STATE={NONE:-1,ROTATE:0,ZOOM:1,PAN:2,TOUCH_ROTATE:3,TOUCH_ZOOM_PAN:4};this.object=object;this.domElement=(domElement!==undefined)?domElement:document;this.enabled=true;this.screen={left:0,top:0,width:0,height:0};this.rotateSpeed=1.0;this.zoomSpeed=1.2;this.panSpeed=0.3;this.noRotate=false;this.noZoom=false;this.noPan=false;this.staticMoving=false;this.dynamicDampingFactor=0.2;this.minDistance=0;this.maxDistance=Infinity;this.keys=[65 ,83 ,68 ];this.target=new THREE.Vector3();var EPS=0.000001;var lastPosition=new THREE.Vector3();var _state=STATE.NONE,_prevState=STATE.NONE,_eye=new THREE.Vector3(),_movePrev=new THREE.Vector2(),_moveCurr=new THREE.Vector2(),_lastAxis=new THREE.Vector3(),_lastAngle=0,_zoomStart=new THREE.Vector2(),_zoomEnd=new THREE.Vector2(),_touchZoomDistanceStart=0,_touchZoomDistanceEnd=0,_panStart=new THREE.Vector2(),_panEnd=new THREE.Vector2();this.target0=this.target.clone();this.position0=this.object.position.clone();this.up0=this.object.up.clone();var changeEvent={type:'change'};var startEvent={type:'start'};var endEvent={type:'end'};this.handleResize=function(){if(this.domElement===document){this.screen.left=0;this.screen.top=0;this.screen.width=window.innerWidth;this.screen.height=window.innerHeight;}else{var box=this.domElement.getBoundingClientRect();var d=this.domElement.ownerDocument.documentElement;this.screen.left=box.left+window.pageXOffset-d.clientLeft;this.screen.top=box.top+window.pageYOffset-d.clientTop;this.screen.width=box.width;this.screen.height=box.height;}};var getMouseOnScreen=(function(){var vector=new THREE.Vector2();return function getMouseOnScreen(pageX,pageY){vector.set((pageX-_this.screen.left)/_this.screen.width,(pageY-_this.screen.top)/_this.screen.height);return vector;};}());var getMouseOnCircle=(function(){var vector=new THREE.Vector2();return function getMouseOnCircle(pageX,pageY){vector.set(((pageX-_this.screen.width*0.5-_this.screen.left)/(_this.screen.width*0.5)),((_this.screen.height+2*(_this.screen.top-pageY))/_this.screen.width));return vector;};}());this.rotateCamera=(function(){var axis=new THREE.Vector3(),quaternion=new THREE.Quaternion(),eyeDirection=new THREE.Vector3(),objectUpDirection=new THREE.Vector3(),objectSidewaysDirection=new THREE.Vector3(),moveDirection=new THREE.Vector3(),angle;return function rotateCamera(){moveDirection.set(_moveCurr.x-_movePrev.x,_moveCurr.y-_movePrev.y,0);angle=moveDirection.length();if(angle){_eye.copy(_this.object.position).sub(_this.target);eyeDirection.copy(_eye).normalize();objectUpDirection.copy(_this.object.up).normalize();objectSidewaysDirection.crossVectors(objectUpDirection,eyeDirection).normalize();objectUpDirection.setLength(_moveCurr.y-_movePrev.y);objectSidewaysDirection.setLength(_moveCurr.x-_movePrev.x);moveDirection.copy(objectUpDirection.add(objectSidewaysDirection));axis.crossVectors(moveDirection,_eye).normalize();angle*=_this.rotateSpeed;quaternion.setFromAxisAngle(axis,angle);_eye.applyQuaternion(quaternion);_this.object.up.applyQuaternion(quaternion);_lastAxis.copy(axis);_lastAngle=angle;}else if(!_this.staticMoving&&_lastAngle){_lastAngle*=Math.sqrt(1.0-_this.dynamicDampingFactor);_eye.copy(_this.object.position).sub(_this.target);quaternion.setFromAxisAngle(_lastAxis,_lastAngle);_eye.applyQuaternion(quaternion);_this.object.up.applyQuaternion(quaternion);}\n",
|
|
"_movePrev.copy(_moveCurr);};}());this.zoomCamera=function(){var factor;if(_state===STATE.TOUCH_ZOOM_PAN){factor=_touchZoomDistanceStart/_touchZoomDistanceEnd;_touchZoomDistanceStart=_touchZoomDistanceEnd;_eye.multiplyScalar(factor);}else{factor=1.0+(_zoomEnd.y-_zoomStart.y)*_this.zoomSpeed;if(factor!==1.0&&factor>0.0){_eye.multiplyScalar(factor);}\n",
|
|
"if(_this.staticMoving){_zoomStart.copy(_zoomEnd);}else{_zoomStart.y+=(_zoomEnd.y-_zoomStart.y)*this.dynamicDampingFactor;}}};this.panCamera=(function(){var mouseChange=new THREE.Vector2(),objectUp=new THREE.Vector3(),pan=new THREE.Vector3();return function panCamera(){mouseChange.copy(_panEnd).sub(_panStart);if(mouseChange.lengthSq()){mouseChange.multiplyScalar(_eye.length()*_this.panSpeed);pan.copy(_eye).cross(_this.object.up).setLength(mouseChange.x);pan.add(objectUp.copy(_this.object.up).setLength(mouseChange.y));_this.object.position.add(pan);_this.target.add(pan);if(_this.staticMoving){_panStart.copy(_panEnd);}else{_panStart.add(mouseChange.subVectors(_panEnd,_panStart).multiplyScalar(_this.dynamicDampingFactor));}}};}());this.checkDistances=function(){if(!_this.noZoom||!_this.noPan){if(_eye.lengthSq()>_this.maxDistance*_this.maxDistance){_this.object.position.addVectors(_this.target,_eye.setLength(_this.maxDistance));_zoomStart.copy(_zoomEnd);}\n",
|
|
"if(_eye.lengthSq()<_this.minDistance*_this.minDistance){_this.object.position.addVectors(_this.target,_eye.setLength(_this.minDistance));_zoomStart.copy(_zoomEnd);}}};this.update=function(){_eye.subVectors(_this.object.position,_this.target);if(!_this.noRotate){_this.rotateCamera();}\n",
|
|
"if(!_this.noZoom){_this.zoomCamera();}\n",
|
|
"if(!_this.noPan){_this.panCamera();}\n",
|
|
"_this.object.position.addVectors(_this.target,_eye);_this.checkDistances();_this.object.lookAt(_this.target);if(lastPosition.distanceToSquared(_this.object.position)>EPS){_this.dispatchEvent(changeEvent);lastPosition.copy(_this.object.position);}};this.reset=function(){_state=STATE.NONE;_prevState=STATE.NONE;_this.target.copy(_this.target0);_this.object.position.copy(_this.position0);_this.object.up.copy(_this.up0);_eye.subVectors(_this.object.position,_this.target);_this.object.lookAt(_this.target);_this.dispatchEvent(changeEvent);lastPosition.copy(_this.object.position);};function keydown(event){if(_this.enabled===false)return;window.removeEventListener('keydown',keydown);_prevState=_state;if(_state!==STATE.NONE){return;}else if(event.keyCode===_this.keys[STATE.ROTATE]&&!_this.noRotate){_state=STATE.ROTATE;}else if(event.keyCode===_this.keys[STATE.ZOOM]&&!_this.noZoom){_state=STATE.ZOOM;}else if(event.keyCode===_this.keys[STATE.PAN]&&!_this.noPan){_state=STATE.PAN;}}\n",
|
|
"function keyup(event){if(_this.enabled===false)return;_state=_prevState;window.addEventListener('keydown',keydown,false);}\n",
|
|
"function mousedown(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_state===STATE.NONE){_state=event.button;}\n",
|
|
"if(_state===STATE.ROTATE&&!_this.noRotate){_moveCurr.copy(getMouseOnCircle(event.pageX,event.pageY));_movePrev.copy(_moveCurr);}else if(_state===STATE.ZOOM&&!_this.noZoom){_zoomStart.copy(getMouseOnScreen(event.pageX,event.pageY));_zoomEnd.copy(_zoomStart);}else if(_state===STATE.PAN&&!_this.noPan){_panStart.copy(getMouseOnScreen(event.pageX,event.pageY));_panEnd.copy(_panStart);}\n",
|
|
"document.addEventListener('mousemove',mousemove,false);document.addEventListener('mouseup',mouseup,false);_this.dispatchEvent(startEvent);}\n",
|
|
"function mousemove(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();if(_state===STATE.ROTATE&&!_this.noRotate){_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.pageX,event.pageY));}else if(_state===STATE.ZOOM&&!_this.noZoom){_zoomEnd.copy(getMouseOnScreen(event.pageX,event.pageY));}else if(_state===STATE.PAN&&!_this.noPan){_panEnd.copy(getMouseOnScreen(event.pageX,event.pageY));}}\n",
|
|
"function mouseup(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();_state=STATE.NONE;document.removeEventListener('mousemove',mousemove);document.removeEventListener('mouseup',mouseup);_this.dispatchEvent(endEvent);}\n",
|
|
"function mousewheel(event){if(_this.enabled===false)return;if(_this.noZoom===true)return;event.preventDefault();event.stopPropagation();switch(event.deltaMode){case 2:_zoomStart.y-=event.deltaY*0.025;break;case 1:_zoomStart.y-=event.deltaY*0.01;break;default:_zoomStart.y-=event.deltaY*0.00025;break;}\n",
|
|
"_this.dispatchEvent(startEvent);_this.dispatchEvent(endEvent);}\n",
|
|
"function touchstart(event){if(_this.enabled===false)return;event.preventDefault();switch(event.touches.length){case 1:_state=STATE.TOUCH_ROTATE;_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));_movePrev.copy(_moveCurr);break;default:_state=STATE.TOUCH_ZOOM_PAN;var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=_touchZoomDistanceStart=Math.sqrt(dx*dx+dy*dy);var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panStart.copy(getMouseOnScreen(x,y));_panEnd.copy(_panStart);break;}\n",
|
|
"_this.dispatchEvent(startEvent);}\n",
|
|
"function touchmove(event){if(_this.enabled===false)return;event.preventDefault();event.stopPropagation();switch(event.touches.length){case 1:_movePrev.copy(_moveCurr);_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));break;default:var dx=event.touches[0].pageX-event.touches[1].pageX;var dy=event.touches[0].pageY-event.touches[1].pageY;_touchZoomDistanceEnd=Math.sqrt(dx*dx+dy*dy);var x=(event.touches[0].pageX+event.touches[1].pageX)/2;var y=(event.touches[0].pageY+event.touches[1].pageY)/2;_panEnd.copy(getMouseOnScreen(x,y));break;}}\n",
|
|
"function touchend(event){if(_this.enabled===false)return;switch(event.touches.length){case 0:_state=STATE.NONE;break;case 1:_state=STATE.TOUCH_ROTATE;_moveCurr.copy(getMouseOnCircle(event.touches[0].pageX,event.touches[0].pageY));_movePrev.copy(_moveCurr);break;}\n",
|
|
"_this.dispatchEvent(endEvent);}\n",
|
|
"function contextmenu(event){if(_this.enabled===false)return;event.preventDefault();}\n",
|
|
"this.dispose=function(){this.domElement.removeEventListener('contextmenu',contextmenu,false);this.domElement.removeEventListener('mousedown',mousedown,false);this.domElement.removeEventListener('wheel',mousewheel,false);this.domElement.removeEventListener('touchstart',touchstart,false);this.domElement.removeEventListener('touchend',touchend,false);this.domElement.removeEventListener('touchmove',touchmove,false);document.removeEventListener('mousemove',mousemove,false);document.removeEventListener('mouseup',mouseup,false);window.removeEventListener('keydown',keydown,false);window.removeEventListener('keyup',keyup,false);};this.domElement.addEventListener('contextmenu',contextmenu,false);this.domElement.addEventListener('mousedown',mousedown,false);this.domElement.addEventListener('wheel',mousewheel,false);this.domElement.addEventListener('touchstart',touchstart,false);this.domElement.addEventListener('touchend',touchend,false);this.domElement.addEventListener('touchmove',touchmove,false);window.addEventListener('keydown',keydown,false);window.addEventListener('keyup',keyup,false);this.handleResize();this.update();};THREE.TrackballControls.prototype=Object.create(THREE.EventDispatcher.prototype);THREE.TrackballControls.prototype.constructor=THREE.TrackballControls;THREE.GLTFLoader=(function(){function GLTFLoader(manager){this.manager=(manager!==undefined)?manager:THREE.DefaultLoadingManager;this.dracoLoader=null;this.ddsLoader=null;}\n",
|
|
"GLTFLoader.prototype={constructor:GLTFLoader,crossOrigin:'anonymous',load:function(url,onLoad,onProgress,onError){var scope=this;var resourcePath;if(this.resourcePath!==undefined){resourcePath=this.resourcePath;}else if(this.path!==undefined){resourcePath=this.path;}else{resourcePath=THREE.LoaderUtils.extractUrlBase(url);}\n",
|
|
"scope.manager.itemStart(url);var _onError=function(e){if(onError){onError(e);}else{console.error(e);}\n",
|
|
"scope.manager.itemError(url);scope.manager.itemEnd(url);};var loader=new THREE.FileLoader(scope.manager);loader.setPath(this.path);loader.setResponseType('arraybuffer');if(scope.crossOrigin==='use-credentials'){loader.setWithCredentials(true);}\n",
|
|
"loader.load(url,function(data){try{scope.parse(data,resourcePath,function(gltf){onLoad(gltf);scope.manager.itemEnd(url);},_onError);}catch(e){_onError(e);}},onProgress,_onError);},setCrossOrigin:function(value){this.crossOrigin=value;return this;},setPath:function(value){this.path=value;return this;},setResourcePath:function(value){this.resourcePath=value;return this;},setDRACOLoader:function(dracoLoader){this.dracoLoader=dracoLoader;return this;},setDDSLoader:function(ddsLoader){this.ddsLoader=ddsLoader;return this;},parse:function(data,path,onLoad,onError){var content;var extensions={};if(typeof data==='string'){content=data;}else{var magic=THREE.LoaderUtils.decodeText(new Uint8Array(data,0,4));if(magic===BINARY_EXTENSION_HEADER_MAGIC){try{extensions[EXTENSIONS.KHR_BINARY_GLTF]=new GLTFBinaryExtension(data);}catch(error){if(onError)onError(error);return;}\n",
|
|
"content=extensions[EXTENSIONS.KHR_BINARY_GLTF].content;}else{content=THREE.LoaderUtils.decodeText(new Uint8Array(data));}}\n",
|
|
"var json=JSON.parse(content);if(json.asset===undefined||json.asset.version[0]<2){if(onError)onError(new Error('THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported. Use LegacyGLTFLoader instead.'));return;}\n",
|
|
"if(json.extensionsUsed){for(var i=0;i<json.extensionsUsed.length;++i){var extensionName=json.extensionsUsed[i];var extensionsRequired=json.extensionsRequired||[];switch(extensionName){case EXTENSIONS.KHR_LIGHTS_PUNCTUAL:extensions[extensionName]=new GLTFLightsExtension(json);break;case EXTENSIONS.KHR_MATERIALS_UNLIT:extensions[extensionName]=new GLTFMaterialsUnlitExtension();break;case EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:extensions[extensionName]=new GLTFMaterialsPbrSpecularGlossinessExtension();break;case EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:extensions[extensionName]=new GLTFDracoMeshCompressionExtension(json,this.dracoLoader);break;case EXTENSIONS.MSFT_TEXTURE_DDS:extensions[EXTENSIONS.MSFT_TEXTURE_DDS]=new GLTFTextureDDSExtension(this.ddsLoader);break;case EXTENSIONS.KHR_TEXTURE_TRANSFORM:extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]=new GLTFTextureTransformExtension();break;default:if(extensionsRequired.indexOf(extensionName)>=0){console.warn('THREE.GLTFLoader: Unknown extension "'+extensionName+'".');}}}}\n",
|
|
"var parser=new GLTFParser(json,extensions,{path:path||this.resourcePath||'',crossOrigin:this.crossOrigin,manager:this.manager});parser.parse(onLoad,onError);}};function GLTFRegistry(){var objects={};return{get:function(key){return objects[key];},add:function(key,object){objects[key]=object;},remove:function(key){delete objects[key];},removeAll:function(){objects={};}};}\n",
|
|
"var EXTENSIONS={KHR_BINARY_GLTF:'KHR_binary_glTF',KHR_DRACO_MESH_COMPRESSION:'KHR_draco_mesh_compression',KHR_LIGHTS_PUNCTUAL:'KHR_lights_punctual',KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:'KHR_materials_pbrSpecularGlossiness',KHR_MATERIALS_UNLIT:'KHR_materials_unlit',KHR_TEXTURE_TRANSFORM:'KHR_texture_transform',MSFT_TEXTURE_DDS:'MSFT_texture_dds'};function GLTFTextureDDSExtension(ddsLoader){if(!ddsLoader){throw new Error('THREE.GLTFLoader: Attempting to load .dds texture without importing THREE.DDSLoader');}\n",
|
|
"this.name=EXTENSIONS.MSFT_TEXTURE_DDS;this.ddsLoader=ddsLoader;}\n",
|
|
"function GLTFLightsExtension(json){this.name=EXTENSIONS.KHR_LIGHTS_PUNCTUAL;var extension=(json.extensions&&json.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL])||{};this.lightDefs=extension.lights||[];}\n",
|
|
"GLTFLightsExtension.prototype.loadLight=function(lightIndex){var lightDef=this.lightDefs[lightIndex];var lightNode;var color=new THREE.Color(0xffffff);if(lightDef.color!==undefined)color.fromArray(lightDef.color);var range=lightDef.range!==undefined?lightDef.range:0;switch(lightDef.type){case'directional':lightNode=new THREE.DirectionalLight(color);lightNode.target.position.set(0,0,-1);lightNode.add(lightNode.target);break;case'point':lightNode=new THREE.PointLight(color);lightNode.distance=range;break;case'spot':lightNode=new THREE.SpotLight(color);lightNode.distance=range;lightDef.spot=lightDef.spot||{};lightDef.spot.innerConeAngle=lightDef.spot.innerConeAngle!==undefined?lightDef.spot.innerConeAngle:0;lightDef.spot.outerConeAngle=lightDef.spot.outerConeAngle!==undefined?lightDef.spot.outerConeAngle:Math.PI/4.0;lightNode.angle=lightDef.spot.outerConeAngle;lightNode.penumbra=1.0-lightDef.spot.innerConeAngle/lightDef.spot.outerConeAngle;lightNode.target.position.set(0,0,-1);lightNode.add(lightNode.target);break;default:throw new Error('THREE.GLTFLoader: Unexpected light type, "'+lightDef.type+'".');}\n",
|
|
"lightNode.position.set(0,0,0);lightNode.decay=2;if(lightDef.intensity!==undefined)lightNode.intensity=lightDef.intensity;lightNode.name=lightDef.name||('light_'+lightIndex);return Promise.resolve(lightNode);};function GLTFMaterialsUnlitExtension(){this.name=EXTENSIONS.KHR_MATERIALS_UNLIT;}\n",
|
|
"GLTFMaterialsUnlitExtension.prototype.getMaterialType=function(){return THREE.MeshBasicMaterial;};GLTFMaterialsUnlitExtension.prototype.extendParams=function(materialParams,materialDef,parser){var pending=[];materialParams.color=new THREE.Color(1.0,1.0,1.0);materialParams.opacity=1.0;var metallicRoughness=materialDef.pbrMetallicRoughness;if(metallicRoughness){if(Array.isArray(metallicRoughness.baseColorFactor)){var array=metallicRoughness.baseColorFactor;materialParams.color.fromArray(array);materialParams.opacity=array[3];}\n",
|
|
"if(metallicRoughness.baseColorTexture!==undefined){pending.push(parser.assignTexture(materialParams,'map',metallicRoughness.baseColorTexture));}}\n",
|
|
"return Promise.all(pending);};var BINARY_EXTENSION_HEADER_MAGIC='glTF';var BINARY_EXTENSION_HEADER_LENGTH=12;var BINARY_EXTENSION_CHUNK_TYPES={JSON:0x4E4F534A,BIN:0x004E4942};function GLTFBinaryExtension(data){this.name=EXTENSIONS.KHR_BINARY_GLTF;this.content=null;this.body=null;var headerView=new DataView(data,0,BINARY_EXTENSION_HEADER_LENGTH);this.header={magic:THREE.LoaderUtils.decodeText(new Uint8Array(data.slice(0,4))),version:headerView.getUint32(4,true),length:headerView.getUint32(8,true)};if(this.header.magic!==BINARY_EXTENSION_HEADER_MAGIC){throw new Error('THREE.GLTFLoader: Unsupported glTF-Binary header.');}else if(this.header.version<2.0){throw new Error('THREE.GLTFLoader: Legacy binary file detected. Use LegacyGLTFLoader instead.');}\n",
|
|
"var chunkView=new DataView(data,BINARY_EXTENSION_HEADER_LENGTH);var chunkIndex=0;while(chunkIndex<chunkView.byteLength){var chunkLength=chunkView.getUint32(chunkIndex,true);chunkIndex+=4;var chunkType=chunkView.getUint32(chunkIndex,true);chunkIndex+=4;if(chunkType===BINARY_EXTENSION_CHUNK_TYPES.JSON){var contentArray=new Uint8Array(data,BINARY_EXTENSION_HEADER_LENGTH+chunkIndex,chunkLength);this.content=THREE.LoaderUtils.decodeText(contentArray);}else if(chunkType===BINARY_EXTENSION_CHUNK_TYPES.BIN){var byteOffset=BINARY_EXTENSION_HEADER_LENGTH+chunkIndex;this.body=data.slice(byteOffset,byteOffset+chunkLength);}\n",
|
|
"chunkIndex+=chunkLength;}\n",
|
|
"if(this.content===null){throw new Error('THREE.GLTFLoader: JSON content not found.');}}\n",
|
|
"function GLTFDracoMeshCompressionExtension(json,dracoLoader){if(!dracoLoader){throw new Error('THREE.GLTFLoader: No DRACOLoader instance provided.');}\n",
|
|
"this.name=EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;this.json=json;this.dracoLoader=dracoLoader;}\n",
|
|
"GLTFDracoMeshCompressionExtension.prototype.decodePrimitive=function(primitive,parser){var json=this.json;var dracoLoader=this.dracoLoader;var bufferViewIndex=primitive.extensions[this.name].bufferView;var gltfAttributeMap=primitive.extensions[this.name].attributes;var threeAttributeMap={};var attributeNormalizedMap={};var attributeTypeMap={};for(var attributeName in gltfAttributeMap){var threeAttributeName=ATTRIBUTES[attributeName]||attributeName.toLowerCase();threeAttributeMap[threeAttributeName]=gltfAttributeMap[attributeName];}\n",
|
|
"for(attributeName in primitive.attributes){var threeAttributeName=ATTRIBUTES[attributeName]||attributeName.toLowerCase();if(gltfAttributeMap[attributeName]!==undefined){var accessorDef=json.accessors[primitive.attributes[attributeName]];var componentType=WEBGL_COMPONENT_TYPES[accessorDef.componentType];attributeTypeMap[threeAttributeName]=componentType;attributeNormalizedMap[threeAttributeName]=accessorDef.normalized===true;}}\n",
|
|
"return parser.getDependency('bufferView',bufferViewIndex).then(function(bufferView){return new Promise(function(resolve){dracoLoader.decodeDracoFile(bufferView,function(geometry){for(var attributeName in geometry.attributes){var attribute=geometry.attributes[attributeName];var normalized=attributeNormalizedMap[attributeName];if(normalized!==undefined)attribute.normalized=normalized;}\n",
|
|
"resolve(geometry);},threeAttributeMap,attributeTypeMap);});});};function GLTFTextureTransformExtension(){this.name=EXTENSIONS.KHR_TEXTURE_TRANSFORM;}\n",
|
|
"GLTFTextureTransformExtension.prototype.extendTexture=function(texture,transform){texture=texture.clone();if(transform.offset!==undefined){texture.offset.fromArray(transform.offset);}\n",
|
|
"if(transform.rotation!==undefined){texture.rotation=transform.rotation;}\n",
|
|
"if(transform.scale!==undefined){texture.repeat.fromArray(transform.scale);}\n",
|
|
"if(transform.texCoord!==undefined){console.warn('THREE.GLTFLoader: Custom UV sets in "'+this.name+'" extension not yet supported.');}\n",
|
|
"texture.needsUpdate=true;return texture;};function GLTFMaterialsPbrSpecularGlossinessExtension(){return{name:EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,specularGlossinessParams:['color','map','lightMap','lightMapIntensity','aoMap','aoMapIntensity','emissive','emissiveIntensity','emissiveMap','bumpMap','bumpScale','normalMap','displacementMap','displacementScale','displacementBias','specularMap','specular','glossinessMap','glossiness','alphaMap','envMap','envMapIntensity','refractionRatio',],getMaterialType:function(){return THREE.ShaderMaterial;},extendParams:function(materialParams,materialDef,parser){var pbrSpecularGlossiness=materialDef.extensions[this.name];var shader=THREE.ShaderLib['standard'];var uniforms=THREE.UniformsUtils.clone(shader.uniforms);var specularMapParsFragmentChunk=['#ifdef USE_SPECULARMAP','\tuniform sampler2D specularMap;','#endif'].join('\\n');var glossinessMapParsFragmentChunk=['#ifdef USE_GLOSSINESSMAP','\tuniform sampler2D glossinessMap;','#endif'].join('\\n');var specularMapFragmentChunk=['vec3 specularFactor = specular;','#ifdef USE_SPECULARMAP','\tvec4 texelSpecular = texture2D( specularMap, vUv );','\ttexelSpecular = sRGBToLinear( texelSpecular );','\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture','\tspecularFactor *= texelSpecular.rgb;','#endif'].join('\\n');var glossinessMapFragmentChunk=['float glossinessFactor = glossiness;','#ifdef USE_GLOSSINESSMAP','\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );','\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture','\tglossinessFactor *= texelGlossiness.a;','#endif'].join('\\n');var lightPhysicalFragmentChunk=['PhysicalMaterial material;','material.diffuseColor = diffuseColor.rgb;','material.specularRoughness = clamp( 1.0 - glossinessFactor, 0.04, 1.0 );','material.specularColor = specularFactor.rgb;',].join('\\n');var fragmentShader=shader.fragmentShader.replace('uniform float roughness;','uniform vec3 specular;').replace('uniform float metalness;','uniform float glossiness;').replace('#include <roughnessmap_pars_fragment>',specularMapParsFragmentChunk).replace('#include <metalnessmap_pars_fragment>',glossinessMapParsFragmentChunk).replace('#include <roughnessmap_fragment>',specularMapFragmentChunk).replace('#include <metalnessmap_fragment>',glossinessMapFragmentChunk).replace('#include <lights_physical_fragment>',lightPhysicalFragmentChunk);delete uniforms.roughness;delete uniforms.metalness;delete uniforms.roughnessMap;delete uniforms.metalnessMap;uniforms.specular={value:new THREE.Color().setHex(0x111111)};uniforms.glossiness={value:0.5};uniforms.specularMap={value:null};uniforms.glossinessMap={value:null};materialParams.vertexShader=shader.vertexShader;materialParams.fragmentShader=fragmentShader;materialParams.uniforms=uniforms;materialParams.defines={'STANDARD':''};materialParams.color=new THREE.Color(1.0,1.0,1.0);materialParams.opacity=1.0;var pending=[];if(Array.isArray(pbrSpecularGlossiness.diffuseFactor)){var array=pbrSpecularGlossiness.diffuseFactor;materialParams.color.fromArray(array);materialParams.opacity=array[3];}\n",
|
|
"if(pbrSpecularGlossiness.diffuseTexture!==undefined){pending.push(parser.assignTexture(materialParams,'map',pbrSpecularGlossiness.diffuseTexture));}\n",
|
|
"materialParams.emissive=new THREE.Color(0.0,0.0,0.0);materialParams.glossiness=pbrSpecularGlossiness.glossinessFactor!==undefined?pbrSpecularGlossiness.glossinessFactor:1.0;materialParams.specular=new THREE.Color(1.0,1.0,1.0);if(Array.isArray(pbrSpecularGlossiness.specularFactor)){materialParams.specular.fromArray(pbrSpecularGlossiness.specularFactor);}\n",
|
|
"if(pbrSpecularGlossiness.specularGlossinessTexture!==undefined){var specGlossMapDef=pbrSpecularGlossiness.specularGlossinessTexture;pending.push(parser.assignTexture(materialParams,'glossinessMap',specGlossMapDef));pending.push(parser.assignTexture(materialParams,'specularMap',specGlossMapDef));}\n",
|
|
"return Promise.all(pending);},createMaterial:function(params){var material=new THREE.ShaderMaterial({defines:params.defines,vertexShader:params.vertexShader,fragmentShader:params.fragmentShader,uniforms:params.uniforms,fog:true,lights:true,opacity:params.opacity,transparent:params.transparent});material.isGLTFSpecularGlossinessMaterial=true;material.color=params.color;material.map=params.map===undefined?null:params.map;material.lightMap=null;material.lightMapIntensity=1.0;material.aoMap=params.aoMap===undefined?null:params.aoMap;material.aoMapIntensity=1.0;material.emissive=params.emissive;material.emissiveIntensity=1.0;material.emissiveMap=params.emissiveMap===undefined?null:params.emissiveMap;material.bumpMap=params.bumpMap===undefined?null:params.bumpMap;material.bumpScale=1;material.normalMap=params.normalMap===undefined?null:params.normalMap;if(params.normalScale)material.normalScale=params.normalScale;material.displacementMap=null;material.displacementScale=1;material.displacementBias=0;material.specularMap=params.specularMap===undefined?null:params.specularMap;material.specular=params.specular;material.glossinessMap=params.glossinessMap===undefined?null:params.glossinessMap;material.glossiness=params.glossiness;material.alphaMap=null;material.envMap=params.envMap===undefined?null:params.envMap;material.envMapIntensity=1.0;material.refractionRatio=0.98;material.extensions.derivatives=true;return material;},cloneMaterial:function(source){var target=source.clone();target.isGLTFSpecularGlossinessMaterial=true;var params=this.specularGlossinessParams;for(var i=0,il=params.length;i<il;i++){var value=source[params[i]];target[params[i]]=(value&&value.isColor)?value.clone():value;}\n",
|
|
"return target;},refreshUniforms:function(renderer,scene,camera,geometry,material){if(material.isGLTFSpecularGlossinessMaterial!==true){return;}\n",
|
|
"var uniforms=material.uniforms;var defines=material.defines;uniforms.opacity.value=material.opacity;uniforms.diffuse.value.copy(material.color);uniforms.emissive.value.copy(material.emissive).multiplyScalar(material.emissiveIntensity);uniforms.map.value=material.map;uniforms.specularMap.value=material.specularMap;uniforms.alphaMap.value=material.alphaMap;uniforms.lightMap.value=material.lightMap;uniforms.lightMapIntensity.value=material.lightMapIntensity;uniforms.aoMap.value=material.aoMap;uniforms.aoMapIntensity.value=material.aoMapIntensity;var uvScaleMap;if(material.map){uvScaleMap=material.map;}else if(material.specularMap){uvScaleMap=material.specularMap;}else if(material.displacementMap){uvScaleMap=material.displacementMap;}else if(material.normalMap){uvScaleMap=material.normalMap;}else if(material.bumpMap){uvScaleMap=material.bumpMap;}else if(material.glossinessMap){uvScaleMap=material.glossinessMap;}else if(material.alphaMap){uvScaleMap=material.alphaMap;}else if(material.emissiveMap){uvScaleMap=material.emissiveMap;}\n",
|
|
"if(uvScaleMap!==undefined){if(uvScaleMap.isWebGLRenderTarget){uvScaleMap=uvScaleMap.texture;}\n",
|
|
"if(uvScaleMap.matrixAutoUpdate===true){uvScaleMap.updateMatrix();}\n",
|
|
"uniforms.uvTransform.value.copy(uvScaleMap.matrix);}\n",
|
|
"if(material.envMap){uniforms.envMap.value=material.envMap;uniforms.envMapIntensity.value=material.envMapIntensity;uniforms.flipEnvMap.value=material.envMap.isCubeTexture?-1:1;uniforms.reflectivity.value=material.reflectivity;uniforms.refractionRatio.value=material.refractionRatio;uniforms.maxMipLevel.value=renderer.properties.get(material.envMap).__maxMipLevel;}\n",
|
|
"uniforms.specular.value.copy(material.specular);uniforms.glossiness.value=material.glossiness;uniforms.glossinessMap.value=material.glossinessMap;uniforms.emissiveMap.value=material.emissiveMap;uniforms.bumpMap.value=material.bumpMap;uniforms.normalMap.value=material.normalMap;uniforms.displacementMap.value=material.displacementMap;uniforms.displacementScale.value=material.displacementScale;uniforms.displacementBias.value=material.displacementBias;if(uniforms.glossinessMap.value!==null&&defines.USE_GLOSSINESSMAP===undefined){defines.USE_GLOSSINESSMAP='';defines.USE_ROUGHNESSMAP='';}\n",
|
|
"if(uniforms.glossinessMap.value===null&&defines.USE_GLOSSINESSMAP!==undefined){delete defines.USE_GLOSSINESSMAP;delete defines.USE_ROUGHNESSMAP;}}};}\n",
|
|
"function GLTFCubicSplineInterpolant(parameterPositions,sampleValues,sampleSize,resultBuffer){THREE.Interpolant.call(this,parameterPositions,sampleValues,sampleSize,resultBuffer);}\n",
|
|
"GLTFCubicSplineInterpolant.prototype=Object.create(THREE.Interpolant.prototype);GLTFCubicSplineInterpolant.prototype.constructor=GLTFCubicSplineInterpolant;GLTFCubicSplineInterpolant.prototype.copySampleValue_=function(index){var result=this.resultBuffer,values=this.sampleValues,valueSize=this.valueSize,offset=index*valueSize*3+valueSize;for(var i=0;i!==valueSize;i++){result[i]=values[offset+i];}\n",
|
|
"return result;};GLTFCubicSplineInterpolant.prototype.beforeStart_=GLTFCubicSplineInterpolant.prototype.copySampleValue_;GLTFCubicSplineInterpolant.prototype.afterEnd_=GLTFCubicSplineInterpolant.prototype.copySampleValue_;GLTFCubicSplineInterpolant.prototype.interpolate_=function(i1,t0,t,t1){var result=this.resultBuffer;var values=this.sampleValues;var stride=this.valueSize;var stride2=stride*2;var stride3=stride*3;var td=t1-t0;var p=(t-t0)/td;var pp=p*p;var ppp=pp*p;var offset1=i1*stride3;var offset0=offset1-stride3;var s2=-2*ppp+3*pp;var s3=ppp-pp;var s0=1-s2;var s1=s3-pp+p;for(var i=0;i!==stride;i++){var p0=values[offset0+i+stride];var m0=values[offset0+i+stride2]*td;var p1=values[offset1+i+stride];var m1=values[offset1+i]*td;result[i]=s0*p0+s1*m0+s2*p1+s3*m1;}\n",
|
|
"return result;};var WEBGL_CONSTANTS={FLOAT:5126,FLOAT_MAT3:35675,FLOAT_MAT4:35676,FLOAT_VEC2:35664,FLOAT_VEC3:35665,FLOAT_VEC4:35666,LINEAR:9729,REPEAT:10497,SAMPLER_2D:35678,POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6,UNSIGNED_BYTE:5121,UNSIGNED_SHORT:5123};var WEBGL_COMPONENT_TYPES={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array};var WEBGL_FILTERS={9728:THREE.NearestFilter,9729:THREE.LinearFilter,9984:THREE.NearestMipMapNearestFilter,9985:THREE.LinearMipMapNearestFilter,9986:THREE.NearestMipMapLinearFilter,9987:THREE.LinearMipMapLinearFilter};var WEBGL_WRAPPINGS={33071:THREE.ClampToEdgeWrapping,33648:THREE.MirroredRepeatWrapping,10497:THREE.RepeatWrapping};var WEBGL_TYPE_SIZES={'SCALAR':1,'VEC2':2,'VEC3':3,'VEC4':4,'MAT2':4,'MAT3':9,'MAT4':16};var ATTRIBUTES={POSITION:'position',NORMAL:'normal',TANGENT:'tangent',TEXCOORD_0:'uv',TEXCOORD_1:'uv2',COLOR_0:'color',WEIGHTS_0:'skinWeight',JOINTS_0:'skinIndex',};var PATH_PROPERTIES={scale:'scale',translation:'position',rotation:'quaternion',weights:'morphTargetInfluences'};var INTERPOLATION={CUBICSPLINE:undefined,LINEAR:THREE.InterpolateLinear,STEP:THREE.InterpolateDiscrete};var ALPHA_MODES={OPAQUE:'OPAQUE',MASK:'MASK',BLEND:'BLEND'};var MIME_TYPE_FORMATS={'image/png':THREE.RGBAFormat,'image/jpeg':THREE.RGBFormat};function resolveURL(url,path){if(typeof url!=='string'||url==='')return'';if(/^(https?:)?\\/\\//i.test(url))return url;if(/^data:.*,.*$/i.test(url))return url;if(/^blob:.*$/i.test(url))return url;return path+url;}\n",
|
|
"var defaultMaterial;function createDefaultMaterial(){defaultMaterial=defaultMaterial||new THREE.MeshStandardMaterial({color:0xFFFFFF,emissive:0x000000,metalness:1,roughness:1,transparent:false,depthTest:true,side:THREE.FrontSide});return defaultMaterial;}\n",
|
|
"function addUnknownExtensionsToUserData(knownExtensions,object,objectDef){for(var name in objectDef.extensions){if(knownExtensions[name]===undefined){object.userData.gltfExtensions=object.userData.gltfExtensions||{};object.userData.gltfExtensions[name]=objectDef.extensions[name];}}}\n",
|
|
"function assignExtrasToUserData(object,gltfDef){if(gltfDef.extras!==undefined){if(typeof gltfDef.extras==='object'){Object.assign(object.userData,gltfDef.extras);}else{console.warn('THREE.GLTFLoader: Ignoring primitive type .extras, '+gltfDef.extras);}}}\n",
|
|
"function addMorphTargets(geometry,targets,parser){var hasMorphPosition=false;var hasMorphNormal=false;for(var i=0,il=targets.length;i<il;i++){var target=targets[i];if(target.POSITION!==undefined)hasMorphPosition=true;if(target.NORMAL!==undefined)hasMorphNormal=true;if(hasMorphPosition&&hasMorphNormal)break;}\n",
|
|
"if(!hasMorphPosition&&!hasMorphNormal)return Promise.resolve(geometry);var pendingPositionAccessors=[];var pendingNormalAccessors=[];for(var i=0,il=targets.length;i<il;i++){var target=targets[i];if(hasMorphPosition){var pendingAccessor=target.POSITION!==undefined?parser.getDependency('accessor',target.POSITION):geometry.attributes.position;pendingPositionAccessors.push(pendingAccessor);}\n",
|
|
"if(hasMorphNormal){var pendingAccessor=target.NORMAL!==undefined?parser.getDependency('accessor',target.NORMAL):geometry.attributes.normal;pendingNormalAccessors.push(pendingAccessor);}}\n",
|
|
"return Promise.all([Promise.all(pendingPositionAccessors),Promise.all(pendingNormalAccessors)]).then(function(accessors){var morphPositions=accessors[0];var morphNormals=accessors[1];for(var i=0,il=morphPositions.length;i<il;i++){if(geometry.attributes.position===morphPositions[i])continue;morphPositions[i]=cloneBufferAttribute(morphPositions[i]);}\n",
|
|
"for(var i=0,il=morphNormals.length;i<il;i++){if(geometry.attributes.normal===morphNormals[i])continue;morphNormals[i]=cloneBufferAttribute(morphNormals[i]);}\n",
|
|
"for(var i=0,il=targets.length;i<il;i++){var target=targets[i];var attributeName='morphTarget'+i;if(hasMorphPosition){if(target.POSITION!==undefined){var positionAttribute=morphPositions[i];positionAttribute.name=attributeName;var position=geometry.attributes.position;for(var j=0,jl=positionAttribute.count;j<jl;j++){positionAttribute.setXYZ(j,positionAttribute.getX(j)+position.getX(j),positionAttribute.getY(j)+position.getY(j),positionAttribute.getZ(j)+position.getZ(j));}}}\n",
|
|
"if(hasMorphNormal){if(target.NORMAL!==undefined){var normalAttribute=morphNormals[i];normalAttribute.name=attributeName;var normal=geometry.attributes.normal;for(var j=0,jl=normalAttribute.count;j<jl;j++){normalAttribute.setXYZ(j,normalAttribute.getX(j)+normal.getX(j),normalAttribute.getY(j)+normal.getY(j),normalAttribute.getZ(j)+normal.getZ(j));}}}}\n",
|
|
"if(hasMorphPosition)geometry.morphAttributes.position=morphPositions;if(hasMorphNormal)geometry.morphAttributes.normal=morphNormals;return geometry;});}\n",
|
|
"function updateMorphTargets(mesh,meshDef){mesh.updateMorphTargets();if(meshDef.weights!==undefined){for(var i=0,il=meshDef.weights.length;i<il;i++){mesh.morphTargetInfluences[i]=meshDef.weights[i];}}\n",
|
|
"if(meshDef.extras&&Array.isArray(meshDef.extras.targetNames)){var targetNames=meshDef.extras.targetNames;if(mesh.morphTargetInfluences.length===targetNames.length){mesh.morphTargetDictionary={};for(var i=0,il=targetNames.length;i<il;i++){mesh.morphTargetDictionary[targetNames[i]]=i;}}else{console.warn('THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.');}}}\n",
|
|
"function createPrimitiveKey(primitiveDef){var dracoExtension=primitiveDef.extensions&&primitiveDef.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION];var geometryKey;if(dracoExtension){geometryKey='draco:'+dracoExtension.bufferView\n",
|
|
"+':'+dracoExtension.indices\n",
|
|
"+':'+createAttributesKey(dracoExtension.attributes);}else{geometryKey=primitiveDef.indices+':'+createAttributesKey(primitiveDef.attributes)+':'+primitiveDef.mode;}\n",
|
|
"return geometryKey;}\n",
|
|
"function createAttributesKey(attributes){var attributesKey='';var keys=Object.keys(attributes).sort();for(var i=0,il=keys.length;i<il;i++){attributesKey+=keys[i]+':'+attributes[keys[i]]+';';}\n",
|
|
"return attributesKey;}\n",
|
|
"function cloneBufferAttribute(attribute){if(attribute.isInterleavedBufferAttribute){var count=attribute.count;var itemSize=attribute.itemSize;var array=attribute.array.slice(0,count*itemSize);for(var i=0,j=0;i<count;++i){array[j++]=attribute.getX(i);if(itemSize>=2)array[j++]=attribute.getY(i);if(itemSize>=3)array[j++]=attribute.getZ(i);if(itemSize>=4)array[j++]=attribute.getW(i);}\n",
|
|
"return new THREE.BufferAttribute(array,itemSize,attribute.normalized);}\n",
|
|
"return attribute.clone();}\n",
|
|
"function GLTFParser(json,extensions,options){this.json=json||{};this.extensions=extensions||{};this.options=options||{};this.cache=new GLTFRegistry();this.primitiveCache={};this.textureLoader=new THREE.TextureLoader(this.options.manager);this.textureLoader.setCrossOrigin(this.options.crossOrigin);this.fileLoader=new THREE.FileLoader(this.options.manager);this.fileLoader.setResponseType('arraybuffer');if(this.options.crossOrigin==='use-credentials'){this.fileLoader.setWithCredentials(true);}}\n",
|
|
"GLTFParser.prototype.parse=function(onLoad,onError){var parser=this;var json=this.json;var extensions=this.extensions;this.cache.removeAll();this.markDefs();Promise.all([this.getDependencies('scene'),this.getDependencies('animation'),this.getDependencies('camera'),]).then(function(dependencies){var result={scene:dependencies[0][json.scene||0],scenes:dependencies[0],animations:dependencies[1],cameras:dependencies[2],asset:json.asset,parser:parser,userData:{}};addUnknownExtensionsToUserData(extensions,result,json);assignExtrasToUserData(result,json);onLoad(result);}).catch(onError);};GLTFParser.prototype.markDefs=function(){var nodeDefs=this.json.nodes||[];var skinDefs=this.json.skins||[];var meshDefs=this.json.meshes||[];var meshReferences={};var meshUses={};for(var skinIndex=0,skinLength=skinDefs.length;skinIndex<skinLength;skinIndex++){var joints=skinDefs[skinIndex].joints;for(var i=0,il=joints.length;i<il;i++){nodeDefs[joints[i]].isBone=true;}}\n",
|
|
"for(var nodeIndex=0,nodeLength=nodeDefs.length;nodeIndex<nodeLength;nodeIndex++){var nodeDef=nodeDefs[nodeIndex];if(nodeDef.mesh!==undefined){if(meshReferences[nodeDef.mesh]===undefined){meshReferences[nodeDef.mesh]=meshUses[nodeDef.mesh]=0;}\n",
|
|
"meshReferences[nodeDef.mesh]++;if(nodeDef.skin!==undefined){meshDefs[nodeDef.mesh].isSkinnedMesh=true;}}}\n",
|
|
"this.json.meshReferences=meshReferences;this.json.meshUses=meshUses;};GLTFParser.prototype.getDependency=function(type,index){var cacheKey=type+':'+index;var dependency=this.cache.get(cacheKey);if(!dependency){switch(type){case'scene':dependency=this.loadScene(index);break;case'node':dependency=this.loadNode(index);break;case'mesh':dependency=this.loadMesh(index);break;case'accessor':dependency=this.loadAccessor(index);break;case'bufferView':dependency=this.loadBufferView(index);break;case'buffer':dependency=this.loadBuffer(index);break;case'material':dependency=this.loadMaterial(index);break;case'texture':dependency=this.loadTexture(index);break;case'skin':dependency=this.loadSkin(index);break;case'animation':dependency=this.loadAnimation(index);break;case'camera':dependency=this.loadCamera(index);break;case'light':dependency=this.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].loadLight(index);break;default:throw new Error('Unknown type: '+type);}\n",
|
|
"this.cache.add(cacheKey,dependency);}\n",
|
|
"return dependency;};GLTFParser.prototype.getDependencies=function(type){var dependencies=this.cache.get(type);if(!dependencies){var parser=this;var defs=this.json[type+(type==='mesh'?'es':'s')]||[];dependencies=Promise.all(defs.map(function(def,index){return parser.getDependency(type,index);}));this.cache.add(type,dependencies);}\n",
|
|
"return dependencies;};GLTFParser.prototype.loadBuffer=function(bufferIndex){var bufferDef=this.json.buffers[bufferIndex];var loader=this.fileLoader;if(bufferDef.type&&bufferDef.type!=='arraybuffer'){throw new Error('THREE.GLTFLoader: '+bufferDef.type+' buffer type is not supported.');}\n",
|
|
"if(bufferDef.uri===undefined&&bufferIndex===0){return Promise.resolve(this.extensions[EXTENSIONS.KHR_BINARY_GLTF].body);}\n",
|
|
"var options=this.options;return new Promise(function(resolve,reject){loader.load(resolveURL(bufferDef.uri,options.path),resolve,undefined,function(){reject(new Error('THREE.GLTFLoader: Failed to load buffer "'+bufferDef.uri+'".'));});});};GLTFParser.prototype.loadBufferView=function(bufferViewIndex){var bufferViewDef=this.json.bufferViews[bufferViewIndex];return this.getDependency('buffer',bufferViewDef.buffer).then(function(buffer){var byteLength=bufferViewDef.byteLength||0;var byteOffset=bufferViewDef.byteOffset||0;return buffer.slice(byteOffset,byteOffset+byteLength);});};GLTFParser.prototype.loadAccessor=function(accessorIndex){var parser=this;var json=this.json;var accessorDef=this.json.accessors[accessorIndex];if(accessorDef.bufferView===undefined&&accessorDef.sparse===undefined){return Promise.resolve(null);}\n",
|
|
"var pendingBufferViews=[];if(accessorDef.bufferView!==undefined){pendingBufferViews.push(this.getDependency('bufferView',accessorDef.bufferView));}else{pendingBufferViews.push(null);}\n",
|
|
"if(accessorDef.sparse!==undefined){pendingBufferViews.push(this.getDependency('bufferView',accessorDef.sparse.indices.bufferView));pendingBufferViews.push(this.getDependency('bufferView',accessorDef.sparse.values.bufferView));}\n",
|
|
"return Promise.all(pendingBufferViews).then(function(bufferViews){var bufferView=bufferViews[0];var itemSize=WEBGL_TYPE_SIZES[accessorDef.type];var TypedArray=WEBGL_COMPONENT_TYPES[accessorDef.componentType];var elementBytes=TypedArray.BYTES_PER_ELEMENT;var itemBytes=elementBytes*itemSize;var byteOffset=accessorDef.byteOffset||0;var byteStride=accessorDef.bufferView!==undefined?json.bufferViews[accessorDef.bufferView].byteStride:undefined;var normalized=accessorDef.normalized===true;var array,bufferAttribute;if(byteStride&&byteStride!==itemBytes){var ibCacheKey='InterleavedBuffer:'+accessorDef.bufferView+':'+accessorDef.componentType;var ib=parser.cache.get(ibCacheKey);if(!ib){array=new TypedArray(bufferView);ib=new THREE.InterleavedBuffer(array,byteStride/elementBytes);parser.cache.add(ibCacheKey,ib);}\n",
|
|
"bufferAttribute=new THREE.InterleavedBufferAttribute(ib,itemSize,byteOffset/elementBytes,normalized);}else{if(bufferView===null){array=new TypedArray(accessorDef.count*itemSize);}else{array=new TypedArray(bufferView,byteOffset,accessorDef.count*itemSize);}\n",
|
|
"bufferAttribute=new THREE.BufferAttribute(array,itemSize,normalized);}\n",
|
|
"if(accessorDef.sparse!==undefined){var itemSizeIndices=WEBGL_TYPE_SIZES.SCALAR;var TypedArrayIndices=WEBGL_COMPONENT_TYPES[accessorDef.sparse.indices.componentType];var byteOffsetIndices=accessorDef.sparse.indices.byteOffset||0;var byteOffsetValues=accessorDef.sparse.values.byteOffset||0;var sparseIndices=new TypedArrayIndices(bufferViews[1],byteOffsetIndices,accessorDef.sparse.count*itemSizeIndices);var sparseValues=new TypedArray(bufferViews[2],byteOffsetValues,accessorDef.sparse.count*itemSize);if(bufferView!==null){bufferAttribute.setArray(bufferAttribute.array.slice());}\n",
|
|
"for(var i=0,il=sparseIndices.length;i<il;i++){var index=sparseIndices[i];bufferAttribute.setX(index,sparseValues[i*itemSize]);if(itemSize>=2)bufferAttribute.setY(index,sparseValues[i*itemSize+1]);if(itemSize>=3)bufferAttribute.setZ(index,sparseValues[i*itemSize+2]);if(itemSize>=4)bufferAttribute.setW(index,sparseValues[i*itemSize+3]);if(itemSize>=5)throw new Error('THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.');}}\n",
|
|
"return bufferAttribute;});};GLTFParser.prototype.loadTexture=function(textureIndex){var parser=this;var json=this.json;var options=this.options;var textureLoader=this.textureLoader;var URL=window.URL||window.webkitURL;var textureDef=json.textures[textureIndex];var textureExtensions=textureDef.extensions||{};var source;if(textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS]){source=json.images[textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS].source];}else{source=json.images[textureDef.source];}\n",
|
|
"var sourceURI=source.uri;var isObjectURL=false;if(source.bufferView!==undefined){sourceURI=parser.getDependency('bufferView',source.bufferView).then(function(bufferView){isObjectURL=true;var blob=new Blob([bufferView],{type:source.mimeType});sourceURI=URL.createObjectURL(blob);return sourceURI;});}\n",
|
|
"return Promise.resolve(sourceURI).then(function(sourceURI){var loader=THREE.Loader.Handlers.get(sourceURI);if(!loader){loader=textureExtensions[EXTENSIONS.MSFT_TEXTURE_DDS]?parser.extensions[EXTENSIONS.MSFT_TEXTURE_DDS].ddsLoader:textureLoader;}\n",
|
|
"return new Promise(function(resolve,reject){loader.load(resolveURL(sourceURI,options.path),resolve,undefined,reject);});}).then(function(texture){if(isObjectURL===true){URL.revokeObjectURL(sourceURI);}\n",
|
|
"texture.flipY=false;if(textureDef.name!==undefined)texture.name=textureDef.name;if(source.mimeType in MIME_TYPE_FORMATS){texture.format=MIME_TYPE_FORMATS[source.mimeType];}\n",
|
|
"var samplers=json.samplers||{};var sampler=samplers[textureDef.sampler]||{};texture.magFilter=WEBGL_FILTERS[sampler.magFilter]||THREE.LinearFilter;texture.minFilter=WEBGL_FILTERS[sampler.minFilter]||THREE.LinearMipMapLinearFilter;texture.wrapS=WEBGL_WRAPPINGS[sampler.wrapS]||THREE.RepeatWrapping;texture.wrapT=WEBGL_WRAPPINGS[sampler.wrapT]||THREE.RepeatWrapping;return texture;});};GLTFParser.prototype.assignTexture=function(materialParams,mapName,mapDef){var parser=this;return this.getDependency('texture',mapDef.index).then(function(texture){if(!texture.isCompressedTexture){switch(mapName){case'aoMap':case'emissiveMap':case'metalnessMap':case'normalMap':case'roughnessMap':texture.format=THREE.RGBFormat;break;}}\n",
|
|
"if(parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]){var transform=mapDef.extensions!==undefined?mapDef.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM]:undefined;if(transform){texture=parser.extensions[EXTENSIONS.KHR_TEXTURE_TRANSFORM].extendTexture(texture,transform);}}\n",
|
|
"materialParams[mapName]=texture;});};GLTFParser.prototype.assignFinalMaterial=function(mesh){var geometry=mesh.geometry;var material=mesh.material;var extensions=this.extensions;var useVertexTangents=geometry.attributes.tangent!==undefined;var useVertexColors=geometry.attributes.color!==undefined;var useFlatShading=geometry.attributes.normal===undefined;var useSkinning=mesh.isSkinnedMesh===true;var useMorphTargets=Object.keys(geometry.morphAttributes).length>0;var useMorphNormals=useMorphTargets&&geometry.morphAttributes.normal!==undefined;if(mesh.isPoints){var cacheKey='PointsMaterial:'+material.uuid;var pointsMaterial=this.cache.get(cacheKey);if(!pointsMaterial){pointsMaterial=new THREE.PointsMaterial();THREE.Material.prototype.copy.call(pointsMaterial,material);pointsMaterial.color.copy(material.color);pointsMaterial.map=material.map;pointsMaterial.lights=false;this.cache.add(cacheKey,pointsMaterial);}\n",
|
|
"material=pointsMaterial;}else if(mesh.isLine){var cacheKey='LineBasicMaterial:'+material.uuid;var lineMaterial=this.cache.get(cacheKey);if(!lineMaterial){lineMaterial=new THREE.LineBasicMaterial();THREE.Material.prototype.copy.call(lineMaterial,material);lineMaterial.color.copy(material.color);lineMaterial.lights=false;this.cache.add(cacheKey,lineMaterial);}\n",
|
|
"material=lineMaterial;}\n",
|
|
"if(useVertexTangents||useVertexColors||useFlatShading||useSkinning||useMorphTargets){var cacheKey='ClonedMaterial:'+material.uuid+':';if(material.isGLTFSpecularGlossinessMaterial)cacheKey+='specular-glossiness:';if(useSkinning)cacheKey+='skinning:';if(useVertexTangents)cacheKey+='vertex-tangents:';if(useVertexColors)cacheKey+='vertex-colors:';if(useFlatShading)cacheKey+='flat-shading:';if(useMorphTargets)cacheKey+='morph-targets:';if(useMorphNormals)cacheKey+='morph-normals:';var cachedMaterial=this.cache.get(cacheKey);if(!cachedMaterial){cachedMaterial=material.isGLTFSpecularGlossinessMaterial?extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].cloneMaterial(material):material.clone();if(useSkinning)cachedMaterial.skinning=true;if(useVertexTangents)cachedMaterial.vertexTangents=true;if(useVertexColors)cachedMaterial.vertexColors=THREE.VertexColors;if(useFlatShading)cachedMaterial.flatShading=true;if(useMorphTargets)cachedMaterial.morphTargets=true;if(useMorphNormals)cachedMaterial.morphNormals=true;this.cache.add(cacheKey,cachedMaterial);}\n",
|
|
"material=cachedMaterial;}\n",
|
|
"if(material.aoMap&&geometry.attributes.uv2===undefined&&geometry.attributes.uv!==undefined){console.log('THREE.GLTFLoader: Duplicating UVs to support aoMap.');geometry.addAttribute('uv2',new THREE.BufferAttribute(geometry.attributes.uv.array,2));}\n",
|
|
"if(material.isGLTFSpecularGlossinessMaterial){mesh.onBeforeRender=extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].refreshUniforms;}\n",
|
|
"mesh.material=material;};GLTFParser.prototype.loadMaterial=function(materialIndex){var parser=this;var json=this.json;var extensions=this.extensions;var materialDef=json.materials[materialIndex];var materialType;var materialParams={};var materialExtensions=materialDef.extensions||{};var pending=[];if(materialExtensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS]){var sgExtension=extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS];materialType=sgExtension.getMaterialType();pending.push(sgExtension.extendParams(materialParams,materialDef,parser));}else if(materialExtensions[EXTENSIONS.KHR_MATERIALS_UNLIT]){var kmuExtension=extensions[EXTENSIONS.KHR_MATERIALS_UNLIT];materialType=kmuExtension.getMaterialType();pending.push(kmuExtension.extendParams(materialParams,materialDef,parser));}else{materialType=THREE.MeshStandardMaterial;var metallicRoughness=materialDef.pbrMetallicRoughness||{};materialParams.color=new THREE.Color(1.0,1.0,1.0);materialParams.opacity=1.0;if(Array.isArray(metallicRoughness.baseColorFactor)){var array=metallicRoughness.baseColorFactor;materialParams.color.fromArray(array);materialParams.opacity=array[3];}\n",
|
|
"if(metallicRoughness.baseColorTexture!==undefined){pending.push(parser.assignTexture(materialParams,'map',metallicRoughness.baseColorTexture));}\n",
|
|
"materialParams.metalness=metallicRoughness.metallicFactor!==undefined?metallicRoughness.metallicFactor:1.0;materialParams.roughness=metallicRoughness.roughnessFactor!==undefined?metallicRoughness.roughnessFactor:1.0;if(metallicRoughness.metallicRoughnessTexture!==undefined){pending.push(parser.assignTexture(materialParams,'metalnessMap',metallicRoughness.metallicRoughnessTexture));pending.push(parser.assignTexture(materialParams,'roughnessMap',metallicRoughness.metallicRoughnessTexture));}}\n",
|
|
"if(materialDef.doubleSided===true){materialParams.side=THREE.DoubleSide;}\n",
|
|
"var alphaMode=materialDef.alphaMode||ALPHA_MODES.OPAQUE;if(alphaMode===ALPHA_MODES.BLEND){materialParams.transparent=true;}else{materialParams.transparent=false;if(alphaMode===ALPHA_MODES.MASK){materialParams.alphaTest=materialDef.alphaCutoff!==undefined?materialDef.alphaCutoff:0.5;}}\n",
|
|
"if(materialDef.normalTexture!==undefined&&materialType!==THREE.MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,'normalMap',materialDef.normalTexture));materialParams.normalScale=new THREE.Vector2(1,1);if(materialDef.normalTexture.scale!==undefined){materialParams.normalScale.set(materialDef.normalTexture.scale,materialDef.normalTexture.scale);}}\n",
|
|
"if(materialDef.occlusionTexture!==undefined&&materialType!==THREE.MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,'aoMap',materialDef.occlusionTexture));if(materialDef.occlusionTexture.strength!==undefined){materialParams.aoMapIntensity=materialDef.occlusionTexture.strength;}}\n",
|
|
"if(materialDef.emissiveFactor!==undefined&&materialType!==THREE.MeshBasicMaterial){materialParams.emissive=new THREE.Color().fromArray(materialDef.emissiveFactor);}\n",
|
|
"if(materialDef.emissiveTexture!==undefined&&materialType!==THREE.MeshBasicMaterial){pending.push(parser.assignTexture(materialParams,'emissiveMap',materialDef.emissiveTexture));}\n",
|
|
"return Promise.all(pending).then(function(){var material;if(materialType===THREE.ShaderMaterial){material=extensions[EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS].createMaterial(materialParams);}else{material=new materialType(materialParams);}\n",
|
|
"if(materialDef.name!==undefined)material.name=materialDef.name;if(material.map)material.map.encoding=THREE.sRGBEncoding;if(material.emissiveMap)material.emissiveMap.encoding=THREE.sRGBEncoding;if(material.specularMap)material.specularMap.encoding=THREE.sRGBEncoding;assignExtrasToUserData(material,materialDef);if(materialDef.extensions)addUnknownExtensionsToUserData(extensions,material,materialDef);return material;});};function addPrimitiveAttributes(geometry,primitiveDef,parser){var attributes=primitiveDef.attributes;var pending=[];function assignAttributeAccessor(accessorIndex,attributeName){return parser.getDependency('accessor',accessorIndex).then(function(accessor){geometry.addAttribute(attributeName,accessor);});}\n",
|
|
"for(var gltfAttributeName in attributes){var threeAttributeName=ATTRIBUTES[gltfAttributeName]||gltfAttributeName.toLowerCase();if(threeAttributeName in geometry.attributes)continue;pending.push(assignAttributeAccessor(attributes[gltfAttributeName],threeAttributeName));}\n",
|
|
"if(primitiveDef.indices!==undefined&&!geometry.index){var accessor=parser.getDependency('accessor',primitiveDef.indices).then(function(accessor){geometry.setIndex(accessor);});pending.push(accessor);}\n",
|
|
"assignExtrasToUserData(geometry,primitiveDef);return Promise.all(pending).then(function(){return primitiveDef.targets!==undefined?addMorphTargets(geometry,primitiveDef.targets,parser):geometry;});}\n",
|
|
"GLTFParser.prototype.loadGeometries=function(primitives){var parser=this;var extensions=this.extensions;var cache=this.primitiveCache;function createDracoPrimitive(primitive){return extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(primitive,parser).then(function(geometry){return addPrimitiveAttributes(geometry,primitive,parser);});}\n",
|
|
"var pending=[];for(var i=0,il=primitives.length;i<il;i++){var primitive=primitives[i];var cacheKey=createPrimitiveKey(primitive);var cached=cache[cacheKey];if(cached){pending.push(cached.promise);}else{var geometryPromise;if(primitive.extensions&&primitive.extensions[EXTENSIONS.KHR_DRACO_MESH_COMPRESSION]){geometryPromise=createDracoPrimitive(primitive);}else{geometryPromise=addPrimitiveAttributes(new THREE.BufferGeometry(),primitive,parser);}\n",
|
|
"cache[cacheKey]={primitive:primitive,promise:geometryPromise};pending.push(geometryPromise);}}\n",
|
|
"return Promise.all(pending);};GLTFParser.prototype.loadMesh=function(meshIndex){var parser=this;var json=this.json;var meshDef=json.meshes[meshIndex];var primitives=meshDef.primitives;var pending=[];for(var i=0,il=primitives.length;i<il;i++){var material=primitives[i].material===undefined?createDefaultMaterial():this.getDependency('material',primitives[i].material);pending.push(material);}\n",
|
|
"return Promise.all(pending).then(function(originalMaterials){return parser.loadGeometries(primitives).then(function(geometries){var meshes=[];for(var i=0,il=geometries.length;i<il;i++){var geometry=geometries[i];var primitive=primitives[i];var mesh;var material=originalMaterials[i];if(primitive.mode===WEBGL_CONSTANTS.TRIANGLES||primitive.mode===WEBGL_CONSTANTS.TRIANGLE_STRIP||primitive.mode===WEBGL_CONSTANTS.TRIANGLE_FAN||primitive.mode===undefined){mesh=meshDef.isSkinnedMesh===true?new THREE.SkinnedMesh(geometry,material):new THREE.Mesh(geometry,material);if(mesh.isSkinnedMesh===true&&!mesh.geometry.attributes.skinWeight.normalized){mesh.normalizeSkinWeights();}\n",
|
|
"if(primitive.mode===WEBGL_CONSTANTS.TRIANGLE_STRIP){mesh.drawMode=THREE.TriangleStripDrawMode;}else if(primitive.mode===WEBGL_CONSTANTS.TRIANGLE_FAN){mesh.drawMode=THREE.TriangleFanDrawMode;}}else if(primitive.mode===WEBGL_CONSTANTS.LINES){mesh=new THREE.LineSegments(geometry,material);}else if(primitive.mode===WEBGL_CONSTANTS.LINE_STRIP){mesh=new THREE.Line(geometry,material);}else if(primitive.mode===WEBGL_CONSTANTS.LINE_LOOP){mesh=new THREE.LineLoop(geometry,material);}else if(primitive.mode===WEBGL_CONSTANTS.POINTS){mesh=new THREE.Points(geometry,material);}else{throw new Error('THREE.GLTFLoader: Primitive mode unsupported: '+primitive.mode);}\n",
|
|
"if(Object.keys(mesh.geometry.morphAttributes).length>0){updateMorphTargets(mesh,meshDef);}\n",
|
|
"mesh.name=meshDef.name||('mesh_'+meshIndex);if(geometries.length>1)mesh.name+='_'+i;assignExtrasToUserData(mesh,meshDef);parser.assignFinalMaterial(mesh);meshes.push(mesh);}\n",
|
|
"if(meshes.length===1){return meshes[0];}\n",
|
|
"var group=new THREE.Group();for(var i=0,il=meshes.length;i<il;i++){group.add(meshes[i]);}\n",
|
|
"return group;});});};GLTFParser.prototype.loadCamera=function(cameraIndex){var camera;var cameraDef=this.json.cameras[cameraIndex];var params=cameraDef[cameraDef.type];if(!params){console.warn('THREE.GLTFLoader: Missing camera parameters.');return;}\n",
|
|
"if(cameraDef.type==='perspective'){camera=new THREE.PerspectiveCamera(THREE.Math.radToDeg(params.yfov),params.aspectRatio||1,params.znear||1,params.zfar||2e6);}else if(cameraDef.type==='orthographic'){camera=new THREE.OrthographicCamera(params.xmag/-2,params.xmag/2,params.ymag/2,params.ymag/-2,params.znear,params.zfar);}\n",
|
|
"if(cameraDef.name!==undefined)camera.name=cameraDef.name;assignExtrasToUserData(camera,cameraDef);return Promise.resolve(camera);};GLTFParser.prototype.loadSkin=function(skinIndex){var skinDef=this.json.skins[skinIndex];var skinEntry={joints:skinDef.joints};if(skinDef.inverseBindMatrices===undefined){return Promise.resolve(skinEntry);}\n",
|
|
"return this.getDependency('accessor',skinDef.inverseBindMatrices).then(function(accessor){skinEntry.inverseBindMatrices=accessor;return skinEntry;});};GLTFParser.prototype.loadAnimation=function(animationIndex){var json=this.json;var animationDef=json.animations[animationIndex];var pendingNodes=[];var pendingInputAccessors=[];var pendingOutputAccessors=[];var pendingSamplers=[];var pendingTargets=[];for(var i=0,il=animationDef.channels.length;i<il;i++){var channel=animationDef.channels[i];var sampler=animationDef.samplers[channel.sampler];var target=channel.target;var name=target.node!==undefined?target.node:target.id;var input=animationDef.parameters!==undefined?animationDef.parameters[sampler.input]:sampler.input;var output=animationDef.parameters!==undefined?animationDef.parameters[sampler.output]:sampler.output;pendingNodes.push(this.getDependency('node',name));pendingInputAccessors.push(this.getDependency('accessor',input));pendingOutputAccessors.push(this.getDependency('accessor',output));pendingSamplers.push(sampler);pendingTargets.push(target);}\n",
|
|
"return Promise.all([Promise.all(pendingNodes),Promise.all(pendingInputAccessors),Promise.all(pendingOutputAccessors),Promise.all(pendingSamplers),Promise.all(pendingTargets)]).then(function(dependencies){var nodes=dependencies[0];var inputAccessors=dependencies[1];var outputAccessors=dependencies[2];var samplers=dependencies[3];var targets=dependencies[4];var tracks=[];for(var i=0,il=nodes.length;i<il;i++){var node=nodes[i];var inputAccessor=inputAccessors[i];var outputAccessor=outputAccessors[i];var sampler=samplers[i];var target=targets[i];if(node===undefined)continue;node.updateMatrix();node.matrixAutoUpdate=true;var TypedKeyframeTrack;switch(PATH_PROPERTIES[target.path]){case PATH_PROPERTIES.weights:TypedKeyframeTrack=THREE.NumberKeyframeTrack;break;case PATH_PROPERTIES.rotation:TypedKeyframeTrack=THREE.QuaternionKeyframeTrack;break;case PATH_PROPERTIES.position:case PATH_PROPERTIES.scale:default:TypedKeyframeTrack=THREE.VectorKeyframeTrack;break;}\n",
|
|
"var targetName=node.name?node.name:node.uuid;var interpolation=sampler.interpolation!==undefined?INTERPOLATION[sampler.interpolation]:THREE.InterpolateLinear;var targetNames=[];if(PATH_PROPERTIES[target.path]===PATH_PROPERTIES.weights){node.traverse(function(object){if(object.isMesh===true&&object.morphTargetInfluences){targetNames.push(object.name?object.name:object.uuid);}});}else{targetNames.push(targetName);}\n",
|
|
"var outputArray=outputAccessor.array;if(outputAccessor.normalized){var scale;if(outputArray.constructor===Int8Array){scale=1/127;}else if(outputArray.constructor===Uint8Array){scale=1/255;}else if(outputArray.constructor==Int16Array){scale=1/32767;}else if(outputArray.constructor===Uint16Array){scale=1/65535;}else{throw new Error('THREE.GLTFLoader: Unsupported output accessor component type.');}\n",
|
|
"var scaled=new Float32Array(outputArray.length);for(var j=0,jl=outputArray.length;j<jl;j++){scaled[j]=outputArray[j]*scale;}\n",
|
|
"outputArray=scaled;}\n",
|
|
"for(var j=0,jl=targetNames.length;j<jl;j++){var track=new TypedKeyframeTrack(targetNames[j]+'.'+PATH_PROPERTIES[target.path],inputAccessor.array,outputArray,interpolation);if(sampler.interpolation==='CUBICSPLINE'){track.createInterpolant=function InterpolantFactoryMethodGLTFCubicSpline(result){return new GLTFCubicSplineInterpolant(this.times,this.values,this.getValueSize()/3,result);};track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=true;}\n",
|
|
"tracks.push(track);}}\n",
|
|
"var name=animationDef.name!==undefined?animationDef.name:'animation_'+animationIndex;return new THREE.AnimationClip(name,undefined,tracks);});};GLTFParser.prototype.loadNode=function(nodeIndex){var json=this.json;var extensions=this.extensions;var parser=this;var meshReferences=json.meshReferences;var meshUses=json.meshUses;var nodeDef=json.nodes[nodeIndex];return(function(){if(nodeDef.isBone===true){return Promise.resolve(new THREE.Bone());}else if(nodeDef.mesh!==undefined){return parser.getDependency('mesh',nodeDef.mesh).then(function(mesh){var node;if(meshReferences[nodeDef.mesh]>1){var instanceNum=meshUses[nodeDef.mesh]++;node=mesh.clone();node.name+='_instance_'+instanceNum;node.onBeforeRender=mesh.onBeforeRender;for(var i=0,il=node.children.length;i<il;i++){node.children[i].name+='_instance_'+instanceNum;node.children[i].onBeforeRender=mesh.children[i].onBeforeRender;}}else{node=mesh;}\n",
|
|
"if(nodeDef.weights!==undefined){node.traverse(function(o){if(!o.isMesh)return;for(var i=0,il=nodeDef.weights.length;i<il;i++){o.morphTargetInfluences[i]=nodeDef.weights[i];}});}\n",
|
|
"return node;});}else if(nodeDef.camera!==undefined){return parser.getDependency('camera',nodeDef.camera);}else if(nodeDef.extensions&&nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL]&&nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light!==undefined){return parser.getDependency('light',nodeDef.extensions[EXTENSIONS.KHR_LIGHTS_PUNCTUAL].light);}else{return Promise.resolve(new THREE.Object3D());}}()).then(function(node){if(nodeDef.name!==undefined){node.userData.name=nodeDef.name;node.name=THREE.PropertyBinding.sanitizeNodeName(nodeDef.name);}\n",
|
|
"assignExtrasToUserData(node,nodeDef);if(nodeDef.extensions)addUnknownExtensionsToUserData(extensions,node,nodeDef);if(nodeDef.matrix!==undefined){var matrix=new THREE.Matrix4();matrix.fromArray(nodeDef.matrix);node.applyMatrix(matrix);}else{if(nodeDef.translation!==undefined){node.position.fromArray(nodeDef.translation);}\n",
|
|
"if(nodeDef.rotation!==undefined){node.quaternion.fromArray(nodeDef.rotation);}\n",
|
|
"if(nodeDef.scale!==undefined){node.scale.fromArray(nodeDef.scale);}}\n",
|
|
"return node;});};GLTFParser.prototype.loadScene=function(){function buildNodeHierachy(nodeId,parentObject,json,parser){var nodeDef=json.nodes[nodeId];return parser.getDependency('node',nodeId).then(function(node){if(nodeDef.skin===undefined)return node;var skinEntry;return parser.getDependency('skin',nodeDef.skin).then(function(skin){skinEntry=skin;var pendingJoints=[];for(var i=0,il=skinEntry.joints.length;i<il;i++){pendingJoints.push(parser.getDependency('node',skinEntry.joints[i]));}\n",
|
|
"return Promise.all(pendingJoints);}).then(function(jointNodes){var meshes=node.isGroup===true?node.children:[node];for(var i=0,il=meshes.length;i<il;i++){var mesh=meshes[i];var bones=[];var boneInverses=[];for(var j=0,jl=jointNodes.length;j<jl;j++){var jointNode=jointNodes[j];if(jointNode){bones.push(jointNode);var mat=new THREE.Matrix4();if(skinEntry.inverseBindMatrices!==undefined){mat.fromArray(skinEntry.inverseBindMatrices.array,j*16);}\n",
|
|
"boneInverses.push(mat);}else{console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',skinEntry.joints[j]);}}\n",
|
|
"mesh.bind(new THREE.Skeleton(bones,boneInverses),mesh.matrixWorld);}\n",
|
|
"return node;});}).then(function(node){parentObject.add(node);var pending=[];if(nodeDef.children){var children=nodeDef.children;for(var i=0,il=children.length;i<il;i++){var child=children[i];pending.push(buildNodeHierachy(child,node,json,parser));}}\n",
|
|
"return Promise.all(pending);});}\n",
|
|
"return function loadScene(sceneIndex){var json=this.json;var extensions=this.extensions;var sceneDef=this.json.scenes[sceneIndex];var parser=this;var scene=new THREE.Scene();if(sceneDef.name!==undefined)scene.name=sceneDef.name;assignExtrasToUserData(scene,sceneDef);if(sceneDef.extensions)addUnknownExtensionsToUserData(extensions,scene,sceneDef);var nodeIds=sceneDef.nodes||[];var pending=[];for(var i=0,il=nodeIds.length;i<il;i++){pending.push(buildNodeHierachy(nodeIds[i],scene,json,parser));}\n",
|
|
"return Promise.all(pending).then(function(){return scene;});};}();return GLTFLoader;})();var camera,controls,scene,renderer,tracklight;function autoFit(obj,camera,controls){const boundingBox=new THREE.Box3().setFromObject(obj);const boundingSphere=new THREE.Sphere();boundingBox.getBoundingSphere((target=boundingSphere));const scale=1.0;const angularSize=camera.fov*Math.PI/180*scale;const distanceToCamera=boundingSphere.radius/Math.tan(angularSize);const len=Math.sqrt(Math.pow(distanceToCamera,2)+\n",
|
|
"Math.pow(distanceToCamera,2)+\n",
|
|
"Math.pow(distanceToCamera,2));camera.position.set(len,len,len);controls.update();camera.lookAt(boundingSphere.center);controls.target.set(boundingSphere.center.x,boundingSphere.center.y,boundingSphere.center.z);camera.updateProjectionMatrix();}\n",
|
|
"function centerControls(obj,camera,controls){const boundingBox=new THREE.Box3().setFromObject(obj);const boundingSphere=new THREE.Sphere();boundingBox.getBoundingSphere((target=boundingSphere));controls.update();controls.target.set(boundingSphere.center.x,boundingSphere.center.y,boundingSphere.center.z);}\n",
|
|
"function init(){scene=new THREE.Scene();scene.background=new THREE.Color(0xffffff);tracklight=new THREE.DirectionalLight(0xffffff,1.75);scene.add(tracklight);base64_data="Z2xURgIAAAAs6wAA4AMAAEpTT057InNjZW5lIjogMCwgInNjZW5lcyI6IFt7Im5vZGVzIjogWzBdfV0sICJhc3NldCI6IHsidmVyc2lvbiI6ICIyLjAiLCAiZ2VuZXJhdG9yIjogImh0dHBzOi8vZ2l0aHViLmNvbS9taWtlZGgvdHJpbWVzaCJ9LCAiYWNjZXNzb3JzIjogW3siYnVmZmVyVmlldyI6IDAsICJjb21wb25lbnRUeXBlIjogNTEyNSwgImNvdW50IjogOTgyOCwgIm1heCI6IFsxNjU1XSwgIm1pbiI6IFswXSwgInR5cGUiOiAiU0NBTEFSIn0sIHsiYnVmZmVyVmlldyI6IDEsICJjb21wb25lbnRUeXBlIjogNTEyNiwgImNvdW50IjogMTY1NiwgInR5cGUiOiAiVkVDMyIsICJieXRlT2Zmc2V0IjogMCwgIm1heCI6IFs1LjA1MDAwMDE5MDczNDg2MywgMTAuMTk5OTk5ODA5MjY1MTM3LCAyLjU0OTUwMTE4MDY0ODgwMzddLCAibWluIjogWy0yLjU0OTUwMTE4MDY0ODgwMzcsIC0wLjA1MDAwMDAwMDc0NTA1ODA2LCAtMi41NDk1MDExODA2NDg4MDM3XX1dLCAibWVzaGVzIjogW3sibmFtZSI6ICJ0d2lzdC5zdGwiLCAicHJpbWl0aXZlcyI6IFt7ImF0dHJpYnV0ZXMiOiB7IlBPU0lUSU9OIjogMX0sICJpbmRpY2VzIjogMCwgIm1vZGUiOiA0fV19XSwgImNhbWVyYXMiOiBbeyJuYW1lIjogImNhbWVyYV9TSVZDTTciLCAidHlwZSI6ICJwZXJzcGVjdGl2ZSIsICJwZXJzcGVjdGl2ZSI6IHsiYXNwZWN0UmF0aW8iOiAxLjMzMzMzMzMzMzMzMzMzMzMsICJ5Zm92IjogMC43ODUzOTgxNjMzOTc0NDgzLCAiem5lYXIiOiAwLjAxfX1dLCAibm9kZXMiOiBbeyJuYW1lIjogIndvcmxkIiwgImNoaWxkcmVuIjogWzFdfSwgeyJuYW1lIjogInR3aXN0LnN0bF9TWVZBQjdVVVVSVlAiLCAibWVzaCI6IDB9XSwgImJ1ZmZlcnMiOiBbeyJieXRlTGVuZ3RoIjogNTkxODR9XSwgImJ1ZmZlclZpZXdzIjog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";;renderer=new THREE.WebGLRenderer({antialias:true});renderer.setPixelRatio(window.devicePixelRatio);renderer.setSize(window.innerWidth,window.innerHeight);document.body.appendChild(renderer.domElement);loader=new THREE.GLTFLoader();loader.load("data:text/plain;base64,"+base64_data,function(gltf){scene.add(gltf.scene);camera=gltf.cameras[0];controls=new THREE.TrackballControls(camera);controls.rotateSpeed=1.0;controls.zoomSpeed=1.2;controls.panSpeed=0.8;controls.noZoom=false;controls.noPan=false;controls.staticMoving=true;controls.dynamicDampingFactor=0.3;controls.keys=[65,83,68];controls.addEventListener("change",render);centerControls(scene,camera,controls);render();window.addEventListener("resize",onWindowResize,false);animate();});}\n",
|
|
"function onWindowResize(){camera.aspect=window.innerWidth/window.innerHeight;camera.updateProjectionMatrix();renderer.setSize(window.innerWidth,window.innerHeight);controls.handleResize();render();}\n",
|
|
"function animate(){requestAnimationFrame(animate);controls.update();}\n",
|
|
"function render(){tracklight.position.copy(camera.position);renderer.render(scene,camera);}\n",
|
|
"init();</script></body>\n",
|
|
"</html>\" width=\"100%\" height=\"500px\" style=\"border:none;\"></iframe>"
|
|
],
|
|
"text/plain": [
|
|
"<IPython.core.display.HTML object>"
|
|
]
|
|
},
|
|
"execution_count": 70,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# Work around some annoying-ass trimesh/threejs bug:\n",
|
|
"wtf = meshutil.Transform().scale(0.1).translate(5,0,0)\n",
|
|
"center = meshutil.Transform().translate(-0.5, -0.5, -0.5)\n",
|
|
"base = meshutil.cube(open_xz=False).transform(center)\n",
|
|
"base = base.transform(wtf)\n",
|
|
"# to enable:\n",
|
|
"mesh = mesh.concat(base)\n",
|
|
"\n",
|
|
"mesh_fname = \"twist.stl\"\n",
|
|
"mesh.to_stl_mesh().save(mesh_fname)\n",
|
|
"\n",
|
|
"# TODO: Just use the mesh data directly (no sense in saving & re-loading)\n",
|
|
"m = trimesh.load_mesh(mesh_fname)\n",
|
|
"#m.show()\n",
|
|
"scene = trimesh.Scene([m])\n",
|
|
"scene.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.6.8"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|