瀏覽代碼

guarantee CMPT order, normalize i3dm fwd

Garrett Johnson 4 年之前
父節點
當前提交
eae8bcba87
共有 2 個文件被更改,包括 14 次插入23 次删除
  1. 12 22
      src/three/CMPTLoader.js
  2. 2 1
      src/three/I3DMLoader.js

+ 12 - 22
src/three/CMPTLoader.js

@@ -17,8 +17,6 @@ export class CMPTLoader extends CMPTLoaderBase {
 
 
 		const result = super.parse( buffer );
 		const result = super.parse( buffer );
 		const manager = this.manager;
 		const manager = this.manager;
-		const group = new Group();
-		const results = [];
 		const promises = [];
 		const promises = [];
 
 
 		for ( const i in result.tiles ) {
 		for ( const i in result.tiles ) {
@@ -29,15 +27,7 @@ export class CMPTLoader extends CMPTLoaderBase {
 				case 'b3dm': {
 				case 'b3dm': {
 
 
 					const slicedBuffer = buffer.slice();
 					const slicedBuffer = buffer.slice();
-					const promise = new B3DMLoader( manager )
-						.parse( slicedBuffer.buffer )
-						.then( res => {
-
-							results.push( res );
-							group.add( res.scene );
-
-						} );
-
+					const promise = new B3DMLoader( manager ).parse( slicedBuffer.buffer );
 					promises.push( promise );
 					promises.push( promise );
 					break;
 					break;
 
 
@@ -47,8 +37,8 @@ export class CMPTLoader extends CMPTLoaderBase {
 
 
 					const slicedBuffer = buffer.slice();
 					const slicedBuffer = buffer.slice();
 					const pointsResult = new PNTSLoader( manager ).parse( slicedBuffer.buffer );
 					const pointsResult = new PNTSLoader( manager ).parse( slicedBuffer.buffer );
-					results.push( pointsResult );
-					group.add( pointsResult.scene );
+					const promise = Promise.resolve( pointsResult );
+					promises.push( promise );
 					break;
 					break;
 
 
 				}
 				}
@@ -60,14 +50,7 @@ export class CMPTLoader extends CMPTLoaderBase {
 					loader.workingPath = this.workingPath;
 					loader.workingPath = this.workingPath;
 					loader.fetchOptions = this.fetchOptions;
 					loader.fetchOptions = this.fetchOptions;
 
 
-					const promise = loader
-						.parse( slicedBuffer.buffer )
-						.then( res => {
-
-							results.push( res );
-							group.add( res.scene );
-
-						} );
+					const promise = loader.parse( slicedBuffer.buffer );
 					promises.push( promise );
 					promises.push( promise );
 					break;
 					break;
 
 
@@ -77,7 +60,14 @@ export class CMPTLoader extends CMPTLoaderBase {
 
 
 		}
 		}
 
 
-		return Promise.all( promises ).then( () => {
+		return Promise.all( promises ).then( results => {
+
+			const group = new Group();
+			results.forEach( result => {
+
+				group.add( result.scene );
+
+			} );
 
 
 			return {
 			return {
 
 

+ 2 - 1
src/three/I3DMLoader.js

@@ -124,7 +124,8 @@ export class I3DMLoader extends I3DMLoaderBase {
 									NORMAL_RIGHT[ i * 3 + 2 ],
 									NORMAL_RIGHT[ i * 3 + 2 ],
 								);
 								);
 
 
-								tempFwd.crossVectors( tempRight, tempUp );
+								tempFwd.crossVectors( tempRight, tempUp )
+									.normalize();
 
 
 								tempMat.makeBasis(
 								tempMat.makeBasis(
 									tempRight,
 									tempRight,