|
|
@@ -190,7 +190,7 @@ class USDZLoader extends Loader {
|
|
|
/**
|
|
|
* Parses the given USDZ data and returns the resulting group.
|
|
|
*
|
|
|
- * @param {ArrayBuffer} buffer - The raw USDZ data as an array buffer.
|
|
|
+ * @param {ArrayBuffer|string} buffer - The raw USDZ data as an array buffer.
|
|
|
* @return {Group} The parsed asset as a group.
|
|
|
*/
|
|
|
parse( buffer ) {
|
|
|
@@ -281,23 +281,6 @@ class USDZLoader extends Loader {
|
|
|
|
|
|
}
|
|
|
|
|
|
- const zip = fflate.unzipSync( new Uint8Array( buffer ) );
|
|
|
-
|
|
|
- // console.log( zip );
|
|
|
-
|
|
|
- const assets = parseAssets( zip );
|
|
|
-
|
|
|
- // console.log( assets )
|
|
|
-
|
|
|
- const file = findUSD( zip );
|
|
|
-
|
|
|
- // Parse file
|
|
|
-
|
|
|
- const text = fflate.strFromU8( file );
|
|
|
- const root = parser.parse( text );
|
|
|
-
|
|
|
- // Build scene
|
|
|
-
|
|
|
function findMeshGeometry( data ) {
|
|
|
|
|
|
if ( ! data ) return undefined;
|
|
|
@@ -904,11 +887,40 @@ class USDZLoader extends Loader {
|
|
|
|
|
|
}
|
|
|
|
|
|
- const group = new Group();
|
|
|
+ function buildGroup( data ) {
|
|
|
+
|
|
|
+ const group = new Group();
|
|
|
+
|
|
|
+ buildHierarchy( data, group );
|
|
|
+
|
|
|
+ return group;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // USDA
|
|
|
+
|
|
|
+ if ( typeof buffer === 'string' ) {
|
|
|
+
|
|
|
+ const root = parser.parse( buffer );
|
|
|
+
|
|
|
+ return buildGroup( root );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // USDZ
|
|
|
+
|
|
|
+ const zip = fflate.unzipSync( new Uint8Array( buffer ) );
|
|
|
+
|
|
|
+ const assets = parseAssets( zip );
|
|
|
+
|
|
|
+ // console.log( assets )
|
|
|
|
|
|
- buildHierarchy( root, group );
|
|
|
+ const file = findUSD( zip );
|
|
|
+
|
|
|
+ const text = fflate.strFromU8( file );
|
|
|
+ const root = parser.parse( text );
|
|
|
|
|
|
- return group;
|
|
|
+ return buildGroup( root );
|
|
|
|
|
|
}
|
|
|
|