提交 f8926423 编写于 作者: A alteredq

Got rid of exceptions in scene loader example.

Because ColladaLoader is weird: load is expecting progress callback as second argument and morph is created as SkinnedMesh object.
上级 d503b957
......@@ -9141,7 +9141,19 @@ THREE.SceneLoader.prototype.parse = function ( json, callbackFinished, url ) {
} else {
loader.load( get_url( o.url, data.urlBaseType ), create_callback_hierachy( dd, parent, material, o ), loaderParameters );
// ColladaLoader
if ( loader.options ) {
loader.load( get_url( o.url, data.urlBaseType ), create_callback_hierachy( dd, parent, material, o ) );
// OBJLoader
} else {
loader.load( get_url( o.url, data.urlBaseType ), create_callback_hierachy( dd, parent, material, o ), loaderParameters );
}
}
......
......@@ -189,22 +189,22 @@ d.computeFaceNormals();return d}};THREE.SceneLoader=function(){this.onLoadStart=
THREE.SceneLoader.prototype.load=function(a,b){var c=this,d=new XMLHttpRequest;d.onreadystatechange=function(){if(4===d.readyState)if(200===d.status||0===d.status){var e=JSON.parse(d.responseText);c.parse(e,b,a)}else console.error("THREE.SceneLoader: Couldn't load ["+a+"] ["+d.status+"]")};d.open("GET",a,!0);d.send(null)};THREE.SceneLoader.prototype.addGeometryHandler=function(a,b){this.geometryHandlerMap[a]={loaderClass:b}};
THREE.SceneLoader.prototype.addHierarchyHandler=function(a,b){this.hierarchyHandlerMap[a]={loaderClass:b}};
THREE.SceneLoader.prototype.parse=function(a,b,c){function d(a,b){return"relativeToHTML"==b?a:n+"/"+a}function e(){f(M.scene,da.objects)}function f(a,b){for(var c in b)if(void 0===M.objects[c]){var e=b[c],g=null;if(e.type&&e.type in m.hierarchyHandlerMap&&void 0===e.loading){var i={},j;for(j in r)"type"!==j&&"url"!==j&&(i[j]=r[j]);J=M.materials[e.materials[0]];e.loading=!0;var l=m.hierarchyHandlerMap[e.type].loaderObject;l.addEventListener?(l.addEventListener("load",h(c,a,J,e)),l.load(d(e.url,da.urlBaseType))):
l.load(d(e.url,da.urlBaseType),h(c,a,J,e),i)}else if(void 0!==e.geometry){if(H=M.geometries[e.geometry])g=!1,J=M.materials[e.materials[0]],(g=J instanceof THREE.ShaderMaterial)&&H.computeTangents(),u=e.position,t=e.rotation,E=e.quaternion,A=e.scale,s=e.matrix,E=0,0===e.materials.length&&(J=new THREE.MeshFaceMaterial),1<e.materials.length&&(J=new THREE.MeshFaceMaterial),e.skin?g=new THREE.SkinnedMesh(H,J):e.morph?(g=new THREE.MorphAnimMesh(H,J),void 0!==e.duration&&(g.duration=e.duration),void 0!==
e.time&&(g.time=e.time),void 0!==e.mirroredLoop&&(g.mirroredLoop=e.mirroredLoop),J.morphNormals&&H.computeMorphNormals()):g=new THREE.Mesh(H,J),g.name=c,s?(g.matrixAutoUpdate=!1,g.matrix.set(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9],s[10],s[11],s[12],s[13],s[14],s[15])):(g.position.set(u[0],u[1],u[2]),E?(g.quaternion.set(E[0],E[1],E[2],E[3]),g.useQuaternion=!0):g.rotation.set(t[0],t[1],t[2]),g.scale.set(A[0],A[1],A[2])),g.visible=e.visible,g.castShadow=e.castShadow,g.receiveShadow=e.receiveShadow,
a.add(g),M.objects[c]=g}else"DirectionalLight"===e.type||"PointLight"===e.type||"AmbientLight"===e.type?(R=void 0!==e.color?e.color:16777215,P=void 0!==e.intensity?e.intensity:1,"DirectionalLight"===e.type?(u=e.direction,G=new THREE.DirectionalLight(R,P),G.position.set(u[0],u[1],u[2]),G.position.normalize()):"PointLight"===e.type?(u=e.position,z=e.distance,G=new THREE.PointLight(R,P,z),G.position.set(u[0],u[1],u[2])):"AmbientLight"===e.type&&(G=new THREE.AmbientLight(R)),a.add(G),G.name=c,M.lights[c]=
G,M.objects[c]=G):"PerspectiveCamera"===e.type||"OrthographicCamera"===e.type?("PerspectiveCamera"===e.type?I=new THREE.PerspectiveCamera(e.fov,e.aspect,e.near,e.far):"OrthographicCamera"===e.type&&(I=new THREE.OrthographicCamera(v.left,v.right,v.top,v.bottom,v.near,v.far)),u=e.position,x=e.target,F=e.up,I.position.set(u[0],u[1],u[2]),I.target=new THREE.Vector3(x[0],x[1],x[2]),F&&I.up.set(F[0],F[1],F[2]),a.add(I),I.name=c,M.cameras[c]=I,M.objects[c]=I):(u=e.position,t=e.rotation,E=e.quaternion,A=
e.scale,E=0,g=new THREE.Object3D,g.name=c,g.position.set(u[0],u[1],u[2]),E?(g.quaternion.set(E[0],E[1],E[2],E[3]),g.useQuaternion=!0):g.rotation.set(t[0],t[1],t[2]),g.scale.set(A[0],A[1],A[2]),g.visible=void 0!==e.visible?e.visible:!1,a.add(g),M.objects[c]=g,M.empties[c]=g);if(g){if(void 0!==e.properties)for(var n in e.properties)g.properties[n]=e.properties[n];void 0!==e.children&&f(g,e.children)}}}function g(a){return function(b){M.geometries[a]=b;e();Q-=1;m.onLoadComplete();j()}}function h(a,b,
c,d){return function(f){var g;f.content?g=f.content:f.dae&&(g=f.scene);f=g;g=d.position;var h=d.rotation,i=d.quaternion,l=d.scale;f.position.set(g[0],g[1],g[2]);i?(f.quaternion.set(i[0],i[1],i[2],i[3]),f.useQuaternion=!0):f.rotation.set(h[0],h[1],h[2]);f.scale.set(l[0],l[1],l[2]);c&&f.traverse(function(a){a.material=c});b.add(f);M.objects[a]=f;e();Q-=1;m.onLoadComplete();j()}}function i(a){return function(b){M.geometries[a]=b}}function j(){m.callbackProgress({totalModels:oa,totalTextures:N,loadedModels:oa-
Q,loadedTextures:N-Y},M);m.onLoadProgress();0===Q&&0===Y&&b(M)}var m=this,n=THREE.Loader.prototype.extractUrlBase(c),l,p,o,q,r,s,z,u,t,E,A,v,x,B,F,H,J,I,L,C,G,R,P,Q,Y,oa,N,M,da=a,S;for(S in this.geometryHandlerMap)a=this.geometryHandlerMap[S].loaderClass,this.geometryHandlerMap[S].loaderObject=new a;for(S in this.hierarchyHandlerMap)a=this.hierarchyHandlerMap[S].loaderClass,this.hierarchyHandlerMap[S].loaderObject=new a;Y=Q=0;M={scene:new THREE.Scene,geometries:{},materials:{},textures:{},objects:{},
cameras:{},lights:{},fogs:{},empties:{}};if(da.transform&&(S=da.transform.position,a=da.transform.rotation,c=da.transform.scale,S&&M.scene.position.set(S[0],S[1],S[2]),a&&M.scene.rotation.set(a[0],a[1],a[2]),c&&M.scene.scale.set(c[0],c[1],c[2]),S||a||c))M.scene.updateMatrix(),M.scene.updateMatrixWorld();S=function(a){return function(){Y-=a;j();m.onLoadComplete()}};for(o in da.fogs)a=da.fogs[o],"linear"===a.type?L=new THREE.Fog(0,a.near,a.far):"exp2"===a.type&&(L=new THREE.FogExp2(0,a.density)),v=
a.color,L.color.setRGB(v[0],v[1],v[2]),M.fogs[o]=L;for(l in da.geometries)r=da.geometries[l],r.type in this.geometryHandlerMap&&(Q+=1,m.onLoadStart());for(var K in da.objects)o=da.objects[K],o.type&&o.type in this.hierarchyHandlerMap&&(Q+=1,m.onLoadStart());oa=Q;for(l in da.geometries)if(r=da.geometries[l],"cube"===r.type)H=new THREE.CubeGeometry(r.width,r.height,r.depth,r.widthSegments,r.heightSegments,r.depthSegments,null,r.flipped,r.sides),M.geometries[l]=H;else if("plane"===r.type)H=new THREE.PlaneGeometry(r.width,
r.height,r.widthSegments,r.heightSegments),M.geometries[l]=H;else if("sphere"===r.type)H=new THREE.SphereGeometry(r.radius,r.widthSegments,r.heightSegments),M.geometries[l]=H;else if("cylinder"===r.type)H=new THREE.CylinderGeometry(r.topRad,r.botRad,r.height,r.radSegs,r.heightSegs),M.geometries[l]=H;else if("torus"===r.type)H=new THREE.TorusGeometry(r.radius,r.tube,r.segmentsR,r.segmentsT),M.geometries[l]=H;else if("icosahedron"===r.type)H=new THREE.IcosahedronGeometry(r.radius,r.subdivisions),M.geometries[l]=
H;else if(r.type in this.geometryHandlerMap){K={};for(C in r)"type"!==C&&"url"!==C&&(K[C]=r[C]);this.geometryHandlerMap[r.type].loaderObject.load(d(r.url,da.urlBaseType),g(l),K)}else"embedded"===r.type&&(K=da.embeds[r.id],K.metadata=da.metadata,K&&this.geometryHandlerMap.ascii.loaderObject.createModel(K,i(l),""));for(q in da.textures)if(l=da.textures[q],l.url instanceof Array){Y+=l.url.length;for(C=0;C<l.url.length;C++)m.onLoadStart()}else Y+=1,m.onLoadStart();N=Y;for(q in da.textures){l=da.textures[q];
void 0!==l.mapping&&void 0!==THREE[l.mapping]&&(l.mapping=new THREE[l.mapping]);if(l.url instanceof Array){K=l.url.length;o=[];for(C=0;C<K;C++)o[C]=d(l.url[C],da.urlBaseType);C=(C=o[0].endsWith(".dds"))?THREE.ImageUtils.loadCompressedTextureCube(o,l.mapping,S(K)):THREE.ImageUtils.loadTextureCube(o,l.mapping,S(K))}else{C=l.url.toLowerCase().endsWith(".dds");K=d(l.url,da.urlBaseType);o=S(1);C=C?THREE.ImageUtils.loadCompressedTexture(K,l.mapping,o):THREE.ImageUtils.loadTexture(K,l.mapping,o);void 0!==
THREE[l.minFilter]&&(C.minFilter=THREE[l.minFilter]);void 0!==THREE[l.magFilter]&&(C.magFilter=THREE[l.magFilter]);l.anisotropy&&(C.anisotropy=l.anisotropy);if(l.repeat&&(C.repeat.set(l.repeat[0],l.repeat[1]),1!==l.repeat[0]&&(C.wrapS=THREE.RepeatWrapping),1!==l.repeat[1]))C.wrapT=THREE.RepeatWrapping;l.offset&&C.offset.set(l.offset[0],l.offset[1]);if(l.wrap&&(K={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==K[l.wrap[0]]&&(C.wrapS=K[l.wrap[0]]),void 0!==K[l.wrap[1]]))C.wrapT=
K[l.wrap[1]]}M.textures[q]=C}for(p in da.materials){s=da.materials[p];for(B in s.parameters)"envMap"===B||"map"===B||"lightMap"===B||"bumpMap"===B?s.parameters[B]=M.textures[s.parameters[B]]:"shading"===B?s.parameters[B]="flat"===s.parameters[B]?THREE.FlatShading:THREE.SmoothShading:"side"===B?s.parameters[B]="double"==s.parameters[B]?THREE.DoubleSide:"back"==s.parameters[B]?THREE.BackSide:THREE.FrontSide:"blending"===B?s.parameters[B]=s.parameters[B]in THREE?THREE[s.parameters[B]]:THREE.NormalBlending:
"combine"===B?s.parameters[B]="MixOperation"==s.parameters[B]?THREE.MixOperation:THREE.MultiplyOperation:"vertexColors"===B?"face"==s.parameters[B]?s.parameters[B]=THREE.FaceColors:s.parameters[B]&&(s.parameters[B]=THREE.VertexColors):"wrapRGB"===B&&(q=s.parameters[B],s.parameters[B]=new THREE.Vector3(q[0],q[1],q[2]));void 0!==s.parameters.opacity&&1>s.parameters.opacity&&(s.parameters.transparent=!0);s.parameters.normalMap?(q=THREE.ShaderUtils.lib.normal,S=THREE.UniformsUtils.clone(q.uniforms),l=
s.parameters.color,C=s.parameters.specular,K=s.parameters.ambient,o=s.parameters.shininess,S.tNormal.value=M.textures[s.parameters.normalMap],s.parameters.normalScale&&S.uNormalScale.value.set(s.parameters.normalScale[0],s.parameters.normalScale[1]),s.parameters.map&&(S.tDiffuse.value=s.parameters.map,S.enableDiffuse.value=!0),s.parameters.envMap&&(S.tCube.value=s.parameters.envMap,S.enableReflection.value=!0,S.uReflectivity.value=s.parameters.reflectivity),s.parameters.lightMap&&(S.tAO.value=s.parameters.lightMap,
l.options?l.load(d(e.url,da.urlBaseType),h(c,a,J,e)):l.load(d(e.url,da.urlBaseType),h(c,a,J,e),i)}else if(void 0!==e.geometry){if(H=M.geometries[e.geometry])g=!1,J=M.materials[e.materials[0]],(g=J instanceof THREE.ShaderMaterial)&&H.computeTangents(),u=e.position,t=e.rotation,E=e.quaternion,A=e.scale,s=e.matrix,E=0,0===e.materials.length&&(J=new THREE.MeshFaceMaterial),1<e.materials.length&&(J=new THREE.MeshFaceMaterial),e.skin?g=new THREE.SkinnedMesh(H,J):e.morph?(g=new THREE.MorphAnimMesh(H,J),
void 0!==e.duration&&(g.duration=e.duration),void 0!==e.time&&(g.time=e.time),void 0!==e.mirroredLoop&&(g.mirroredLoop=e.mirroredLoop),J.morphNormals&&H.computeMorphNormals()):g=new THREE.Mesh(H,J),g.name=c,s?(g.matrixAutoUpdate=!1,g.matrix.set(s[0],s[1],s[2],s[3],s[4],s[5],s[6],s[7],s[8],s[9],s[10],s[11],s[12],s[13],s[14],s[15])):(g.position.set(u[0],u[1],u[2]),E?(g.quaternion.set(E[0],E[1],E[2],E[3]),g.useQuaternion=!0):g.rotation.set(t[0],t[1],t[2]),g.scale.set(A[0],A[1],A[2])),g.visible=e.visible,
g.castShadow=e.castShadow,g.receiveShadow=e.receiveShadow,a.add(g),M.objects[c]=g}else"DirectionalLight"===e.type||"PointLight"===e.type||"AmbientLight"===e.type?(R=void 0!==e.color?e.color:16777215,P=void 0!==e.intensity?e.intensity:1,"DirectionalLight"===e.type?(u=e.direction,G=new THREE.DirectionalLight(R,P),G.position.set(u[0],u[1],u[2]),G.position.normalize()):"PointLight"===e.type?(u=e.position,z=e.distance,G=new THREE.PointLight(R,P,z),G.position.set(u[0],u[1],u[2])):"AmbientLight"===e.type&&
(G=new THREE.AmbientLight(R)),a.add(G),G.name=c,M.lights[c]=G,M.objects[c]=G):"PerspectiveCamera"===e.type||"OrthographicCamera"===e.type?("PerspectiveCamera"===e.type?I=new THREE.PerspectiveCamera(e.fov,e.aspect,e.near,e.far):"OrthographicCamera"===e.type&&(I=new THREE.OrthographicCamera(v.left,v.right,v.top,v.bottom,v.near,v.far)),u=e.position,x=e.target,F=e.up,I.position.set(u[0],u[1],u[2]),I.target=new THREE.Vector3(x[0],x[1],x[2]),F&&I.up.set(F[0],F[1],F[2]),a.add(I),I.name=c,M.cameras[c]=I,
M.objects[c]=I):(u=e.position,t=e.rotation,E=e.quaternion,A=e.scale,E=0,g=new THREE.Object3D,g.name=c,g.position.set(u[0],u[1],u[2]),E?(g.quaternion.set(E[0],E[1],E[2],E[3]),g.useQuaternion=!0):g.rotation.set(t[0],t[1],t[2]),g.scale.set(A[0],A[1],A[2]),g.visible=void 0!==e.visible?e.visible:!1,a.add(g),M.objects[c]=g,M.empties[c]=g);if(g){if(void 0!==e.properties)for(var n in e.properties)g.properties[n]=e.properties[n];void 0!==e.children&&f(g,e.children)}}}function g(a){return function(b){M.geometries[a]=
b;e();Q-=1;m.onLoadComplete();j()}}function h(a,b,c,d){return function(f){var g;f.content?g=f.content:f.dae&&(g=f.scene);f=g;g=d.position;var h=d.rotation,i=d.quaternion,l=d.scale;f.position.set(g[0],g[1],g[2]);i?(f.quaternion.set(i[0],i[1],i[2],i[3]),f.useQuaternion=!0):f.rotation.set(h[0],h[1],h[2]);f.scale.set(l[0],l[1],l[2]);c&&f.traverse(function(a){a.material=c});b.add(f);M.objects[a]=f;e();Q-=1;m.onLoadComplete();j()}}function i(a){return function(b){M.geometries[a]=b}}function j(){m.callbackProgress({totalModels:oa,
totalTextures:N,loadedModels:oa-Q,loadedTextures:N-Y},M);m.onLoadProgress();0===Q&&0===Y&&b(M)}var m=this,n=THREE.Loader.prototype.extractUrlBase(c),l,p,o,q,r,s,z,u,t,E,A,v,x,B,F,H,J,I,L,C,G,R,P,Q,Y,oa,N,M,da=a,S;for(S in this.geometryHandlerMap)a=this.geometryHandlerMap[S].loaderClass,this.geometryHandlerMap[S].loaderObject=new a;for(S in this.hierarchyHandlerMap)a=this.hierarchyHandlerMap[S].loaderClass,this.hierarchyHandlerMap[S].loaderObject=new a;Y=Q=0;M={scene:new THREE.Scene,geometries:{},
materials:{},textures:{},objects:{},cameras:{},lights:{},fogs:{},empties:{}};if(da.transform&&(S=da.transform.position,a=da.transform.rotation,c=da.transform.scale,S&&M.scene.position.set(S[0],S[1],S[2]),a&&M.scene.rotation.set(a[0],a[1],a[2]),c&&M.scene.scale.set(c[0],c[1],c[2]),S||a||c))M.scene.updateMatrix(),M.scene.updateMatrixWorld();S=function(a){return function(){Y-=a;j();m.onLoadComplete()}};for(o in da.fogs)a=da.fogs[o],"linear"===a.type?L=new THREE.Fog(0,a.near,a.far):"exp2"===a.type&&(L=
new THREE.FogExp2(0,a.density)),v=a.color,L.color.setRGB(v[0],v[1],v[2]),M.fogs[o]=L;for(l in da.geometries)r=da.geometries[l],r.type in this.geometryHandlerMap&&(Q+=1,m.onLoadStart());for(var K in da.objects)o=da.objects[K],o.type&&o.type in this.hierarchyHandlerMap&&(Q+=1,m.onLoadStart());oa=Q;for(l in da.geometries)if(r=da.geometries[l],"cube"===r.type)H=new THREE.CubeGeometry(r.width,r.height,r.depth,r.widthSegments,r.heightSegments,r.depthSegments,null,r.flipped,r.sides),M.geometries[l]=H;else if("plane"===
r.type)H=new THREE.PlaneGeometry(r.width,r.height,r.widthSegments,r.heightSegments),M.geometries[l]=H;else if("sphere"===r.type)H=new THREE.SphereGeometry(r.radius,r.widthSegments,r.heightSegments),M.geometries[l]=H;else if("cylinder"===r.type)H=new THREE.CylinderGeometry(r.topRad,r.botRad,r.height,r.radSegs,r.heightSegs),M.geometries[l]=H;else if("torus"===r.type)H=new THREE.TorusGeometry(r.radius,r.tube,r.segmentsR,r.segmentsT),M.geometries[l]=H;else if("icosahedron"===r.type)H=new THREE.IcosahedronGeometry(r.radius,
r.subdivisions),M.geometries[l]=H;else if(r.type in this.geometryHandlerMap){K={};for(C in r)"type"!==C&&"url"!==C&&(K[C]=r[C]);this.geometryHandlerMap[r.type].loaderObject.load(d(r.url,da.urlBaseType),g(l),K)}else"embedded"===r.type&&(K=da.embeds[r.id],K.metadata=da.metadata,K&&this.geometryHandlerMap.ascii.loaderObject.createModel(K,i(l),""));for(q in da.textures)if(l=da.textures[q],l.url instanceof Array){Y+=l.url.length;for(C=0;C<l.url.length;C++)m.onLoadStart()}else Y+=1,m.onLoadStart();N=Y;
for(q in da.textures){l=da.textures[q];void 0!==l.mapping&&void 0!==THREE[l.mapping]&&(l.mapping=new THREE[l.mapping]);if(l.url instanceof Array){K=l.url.length;o=[];for(C=0;C<K;C++)o[C]=d(l.url[C],da.urlBaseType);C=(C=o[0].endsWith(".dds"))?THREE.ImageUtils.loadCompressedTextureCube(o,l.mapping,S(K)):THREE.ImageUtils.loadTextureCube(o,l.mapping,S(K))}else{C=l.url.toLowerCase().endsWith(".dds");K=d(l.url,da.urlBaseType);o=S(1);C=C?THREE.ImageUtils.loadCompressedTexture(K,l.mapping,o):THREE.ImageUtils.loadTexture(K,
l.mapping,o);void 0!==THREE[l.minFilter]&&(C.minFilter=THREE[l.minFilter]);void 0!==THREE[l.magFilter]&&(C.magFilter=THREE[l.magFilter]);l.anisotropy&&(C.anisotropy=l.anisotropy);if(l.repeat&&(C.repeat.set(l.repeat[0],l.repeat[1]),1!==l.repeat[0]&&(C.wrapS=THREE.RepeatWrapping),1!==l.repeat[1]))C.wrapT=THREE.RepeatWrapping;l.offset&&C.offset.set(l.offset[0],l.offset[1]);if(l.wrap&&(K={repeat:THREE.RepeatWrapping,mirror:THREE.MirroredRepeatWrapping},void 0!==K[l.wrap[0]]&&(C.wrapS=K[l.wrap[0]]),void 0!==
K[l.wrap[1]]))C.wrapT=K[l.wrap[1]]}M.textures[q]=C}for(p in da.materials){s=da.materials[p];for(B in s.parameters)"envMap"===B||"map"===B||"lightMap"===B||"bumpMap"===B?s.parameters[B]=M.textures[s.parameters[B]]:"shading"===B?s.parameters[B]="flat"===s.parameters[B]?THREE.FlatShading:THREE.SmoothShading:"side"===B?s.parameters[B]="double"==s.parameters[B]?THREE.DoubleSide:"back"==s.parameters[B]?THREE.BackSide:THREE.FrontSide:"blending"===B?s.parameters[B]=s.parameters[B]in THREE?THREE[s.parameters[B]]:
THREE.NormalBlending:"combine"===B?s.parameters[B]="MixOperation"==s.parameters[B]?THREE.MixOperation:THREE.MultiplyOperation:"vertexColors"===B?"face"==s.parameters[B]?s.parameters[B]=THREE.FaceColors:s.parameters[B]&&(s.parameters[B]=THREE.VertexColors):"wrapRGB"===B&&(q=s.parameters[B],s.parameters[B]=new THREE.Vector3(q[0],q[1],q[2]));void 0!==s.parameters.opacity&&1>s.parameters.opacity&&(s.parameters.transparent=!0);s.parameters.normalMap?(q=THREE.ShaderUtils.lib.normal,S=THREE.UniformsUtils.clone(q.uniforms),
l=s.parameters.color,C=s.parameters.specular,K=s.parameters.ambient,o=s.parameters.shininess,S.tNormal.value=M.textures[s.parameters.normalMap],s.parameters.normalScale&&S.uNormalScale.value.set(s.parameters.normalScale[0],s.parameters.normalScale[1]),s.parameters.map&&(S.tDiffuse.value=s.parameters.map,S.enableDiffuse.value=!0),s.parameters.envMap&&(S.tCube.value=s.parameters.envMap,S.enableReflection.value=!0,S.uReflectivity.value=s.parameters.reflectivity),s.parameters.lightMap&&(S.tAO.value=s.parameters.lightMap,
S.enableAO.value=!0),s.parameters.specularMap&&(S.tSpecular.value=M.textures[s.parameters.specularMap],S.enableSpecular.value=!0),s.parameters.displacementMap&&(S.tDisplacement.value=M.textures[s.parameters.displacementMap],S.enableDisplacement.value=!0,S.uDisplacementBias.value=s.parameters.displacementBias,S.uDisplacementScale.value=s.parameters.displacementScale),S.uDiffuseColor.value.setHex(l),S.uSpecularColor.value.setHex(C),S.uAmbientColor.value.setHex(K),S.uShininess.value=o,s.parameters.opacity&&
(S.uOpacity.value=s.parameters.opacity),J=new THREE.ShaderMaterial({fragmentShader:q.fragmentShader,vertexShader:q.vertexShader,uniforms:S,lights:!0,fog:!0})):J=new THREE[s.type](s.parameters);M.materials[p]=J}e();M.cameras&&da.defaults.camera&&(M.currentCamera=M.cameras[da.defaults.camera]);M.fogs&&da.defaults.fog&&(M.scene.fog=M.fogs[da.defaults.fog]);v=da.defaults.bgcolor;M.bgColor=new THREE.Color;M.bgColor.setRGB(v[0],v[1],v[2]);M.bgColorAlpha=da.defaults.bgalpha;m.callbackSync(M);j()};
THREE.TextureLoader=function(){THREE.EventTarget.call(this);this.crossOrigin=null};THREE.TextureLoader.prototype={constructor:THREE.TextureLoader,load:function(a){var b=this,c=new Image;c.addEventListener("load",function(){var a=new THREE.Texture(c);a.needsUpdate=!0;b.dispatchEvent({type:"load",content:a})},!1);c.addEventListener("error",function(){b.dispatchEvent({type:"error",message:"Couldn't load URL ["+a+"]"})},!1);b.crossOrigin&&(c.crossOrigin=b.crossOrigin);c.src=a}};
......
......@@ -331,13 +331,17 @@
if ( object instanceof THREE.SkinnedMesh ) {
THREE.AnimationHandler.add( object.geometry.animation );
if ( object.geometry.animation ) {
var animation = new THREE.Animation( object, object.geometry.animation.name );
animation.JITCompile = false;
animation.interpolationType = THREE.AnimationHandler.LINEAR;
THREE.AnimationHandler.add( object.geometry.animation );
animation.play();
var animation = new THREE.Animation( object, object.geometry.animation.name );
animation.JITCompile = false;
animation.interpolationType = THREE.AnimationHandler.LINEAR;
animation.play();
}
}
......
......@@ -204,7 +204,19 @@ THREE.SceneLoader.prototype.parse = function ( json, callbackFinished, url ) {
} else {
loader.load( get_url( o.url, data.urlBaseType ), create_callback_hierachy( dd, parent, material, o ), loaderParameters );
// ColladaLoader
if ( loader.options ) {
loader.load( get_url( o.url, data.urlBaseType ), create_callback_hierachy( dd, parent, material, o ) );
// OBJLoader
} else {
loader.load( get_url( o.url, data.urlBaseType ), create_callback_hierachy( dd, parent, material, o ), loaderParameters );
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册