|
@@ -2184,7 +2184,7 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- if ( material.aoMap !== undefined
|
|
|
|
|
|
+ if ( material.aoMap
|
|
&& geometry.attributes.uv2 === undefined
|
|
&& geometry.attributes.uv2 === undefined
|
|
&& geometry.attributes.uv !== undefined ) {
|
|
&& geometry.attributes.uv !== undefined ) {
|
|
|
|
|
|
@@ -2361,39 +2361,44 @@ THREE.GLTF2Loader = ( function () {
|
|
|
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras
|
|
|
|
+ */
|
|
GLTFParser.prototype.loadCameras = function () {
|
|
GLTFParser.prototype.loadCameras = function () {
|
|
|
|
|
|
var json = this.json;
|
|
var json = this.json;
|
|
|
|
|
|
return _each( json.cameras, function ( camera ) {
|
|
return _each( json.cameras, function ( camera ) {
|
|
|
|
|
|
- if ( camera.type == "perspective" && camera.perspective ) {
|
|
|
|
|
|
+ var _camera;
|
|
|
|
|
|
- var yfov = camera.perspective.yfov;
|
|
|
|
- var aspectRatio = camera.perspective.aspectRatio !== undefined ? camera.perspective.aspectRatio : 1;
|
|
|
|
|
|
+ var params = camera[ camera.type ];
|
|
|
|
|
|
- // According to COLLADA spec...
|
|
|
|
- // aspectRatio = xfov / yfov
|
|
|
|
- var xfov = yfov * aspectRatio;
|
|
|
|
|
|
+ if ( !params ) {
|
|
|
|
|
|
- var _camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspectRatio, camera.perspective.znear || 1, camera.perspective.zfar || 2e6 );
|
|
|
|
- if ( camera.name !== undefined ) _camera.name = camera.name;
|
|
|
|
|
|
+ console.warn( 'GLTF2Loader: Missing camera parameters.' );
|
|
|
|
+ return;
|
|
|
|
|
|
- if ( camera.extras ) _camera.userData = camera.extras;
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- return _camera;
|
|
|
|
|
|
+ if ( camera.type === 'perspective' ) {
|
|
|
|
|
|
- } else if ( camera.type == "orthographic" && camera.orthographic ) {
|
|
|
|
|
|
+ var aspectRatio = params.aspectRatio || 1;
|
|
|
|
+ var xfov = params.yfov * aspectRatio;
|
|
|
|
|
|
- var _camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, camera.orthographic.znear, camera.orthographic.zfar );
|
|
|
|
- if ( camera.name !== undefined ) _camera.name = camera.name;
|
|
|
|
|
|
+ _camera = new THREE.PerspectiveCamera( THREE.Math.radToDeg( xfov ), aspectRatio, params.znear || 1, params.zfar || 2e6 );
|
|
|
|
|
|
- if ( camera.extras ) _camera.userData = camera.extras;
|
|
|
|
|
|
+ } else if ( camera.type === 'orthographic' ) {
|
|
|
|
|
|
- return _camera;
|
|
|
|
|
|
+ _camera = new THREE.OrthographicCamera( params.xmag / -2, params.xmag / 2, params.ymag / 2, params.ymag / -2, params.znear, params.zfar );
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if ( camera.name !== undefined ) _camera.name = camera.name;
|
|
|
|
+ if ( camera.extras ) _camera.userData = camera.extras;
|
|
|
|
+
|
|
|
|
+ return _camera;
|
|
|
|
+
|
|
} );
|
|
} );
|
|
|
|
|
|
};
|
|
};
|