|
@@ -175,8 +175,18 @@ var Loader = function ( editor ) {
|
|
reader.addEventListener( 'load', function ( event ) {
|
|
reader.addEventListener( 'load', function ( event ) {
|
|
|
|
|
|
var contents = event.target.result;
|
|
var contents = event.target.result;
|
|
|
|
+ var loader;
|
|
|
|
+
|
|
|
|
+ if ( isGltf1( contents ) ) {
|
|
|
|
+
|
|
|
|
+ loader = new THREE.LegacyGLTFLoader();
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ loader = new THREE.GLTFLoader();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
- var loader = new THREE.GLTFLoader();
|
|
|
|
loader.parse( contents, '', function ( result ) {
|
|
loader.parse( contents, '', function ( result ) {
|
|
|
|
|
|
result.scene.name = filename;
|
|
result.scene.name = filename;
|
|
@@ -572,4 +582,39 @@ var Loader = function ( editor ) {
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ function isGltf1( contents ) {
|
|
|
|
+
|
|
|
|
+ var resultContent;
|
|
|
|
+
|
|
|
|
+ if ( typeof contents === 'string' ) {
|
|
|
|
+
|
|
|
|
+ // contents is a JSON string
|
|
|
|
+ resultContent = contents;
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ var magic = THREE.LoaderUtils.decodeText( new Uint8Array( contents, 0, 4 ) );
|
|
|
|
+
|
|
|
|
+ if ( magic === 'glTF' ) {
|
|
|
|
+
|
|
|
|
+ // contents is a .glb file; extract the version
|
|
|
|
+ var version = new DataView( contents ).getUint32( 4, true );
|
|
|
|
+
|
|
|
|
+ return version < 2;
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ // contents is a .gltf file
|
|
|
|
+ resultContent = THREE.LoaderUtils.decodeText( new Uint8Array( contents ) );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var json = JSON.parse( resultContent );
|
|
|
|
+
|
|
|
|
+ return ( json.asset != undefined && json.asset.version[ 0 ] < 2 );
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
};
|
|
};
|