Bladeren bron

change the fixed matrix to the suggested matrix

fwang 3 jaren geleden
bovenliggende
commit
b8c3cdf18c
4 gewijzigde bestanden met toevoegingen van 33 en 44 verwijderingen
  1. 2 1
      src/three/B3DMLoader.js
  2. 5 4
      src/three/CMPTLoader.js
  3. 3 9
      src/three/I3DMLoader.js
  4. 23 30
      src/three/TilesRenderer.js

+ 2 - 1
src/three/B3DMLoader.js

@@ -9,6 +9,7 @@ export class B3DMLoader extends B3DMLoaderBase {
 		super();
 		this.manager = manager;
 		this.adjustmentTransform = new Matrix4();
+
 	}
 
 	parse( buffer ) {
@@ -47,7 +48,7 @@ export class B3DMLoader extends B3DMLoaderBase {
 
 			}
 
-			let adjustmentTransform = this.adjustmentTransform;
+			const adjustmentTransform = this.adjustmentTransform;
 
 			loader.parse( gltfBuffer, workingPath, model => {
 

+ 5 - 4
src/three/CMPTLoader.js

@@ -1,4 +1,4 @@
-import { Group, DefaultLoadingManager,Matrix4  } from 'three';
+import { Group, DefaultLoadingManager, Matrix4 } from 'three';
 import { CMPTLoaderBase } from '../base/CMPTLoaderBase.js';
 import { B3DMLoader } from './B3DMLoader.js';
 import { PNTSLoader } from './PNTSLoader.js';
@@ -11,6 +11,7 @@ export class CMPTLoader extends CMPTLoaderBase {
 		super();
 		this.manager = manager;
 		this.adjustmentTransform = new Matrix4();
+
 	}
 
 	parse( buffer ) {
@@ -33,7 +34,7 @@ export class CMPTLoader extends CMPTLoaderBase {
 					loader.fetchOptions = this.fetchOptions;
 
 					loader.adjustmentTransform.copy( adjustmentTransform );
-					
+
 					const promise = loader.parse( slicedBuffer.buffer );
 					promises.push( promise );
 					break;
@@ -58,9 +59,9 @@ export class CMPTLoader extends CMPTLoaderBase {
 					const loader = new I3DMLoader( manager );
 					loader.workingPath = this.workingPath;
 					loader.fetchOptions = this.fetchOptions;
-					
+
 					loader.adjustmentTransform.copy( adjustmentTransform );
-					
+
 					const promise = loader.parse( slicedBuffer.buffer );
 					promises.push( promise );
 					break;

+ 3 - 9
src/three/I3DMLoader.js

@@ -16,6 +16,7 @@ export class I3DMLoader extends I3DMLoaderBase {
 		super();
 		this.manager = manager;
 		this.adjustmentTransform = new Matrix4();
+
 	}
 
 	resolveExternalURL( url ) {
@@ -64,7 +65,7 @@ export class I3DMLoader extends I3DMLoaderBase {
 
 					}
 
-					let adjustmentTransform = this.adjustmentTransform;
+					const adjustmentTransform = this.adjustmentTransform;
 
 					loader.parse( gltfBuffer, workingPath, model => {
 
@@ -204,14 +205,7 @@ export class I3DMLoader extends I3DMLoaderBase {
 							}
 
 
-							// const m = new Matrix4();
-							// m.set(1.0, 0.0,  0.0, 0.0,
-							// 	0.0, 0.0, -1.0, 0.0,
-							// 	0.0, 1.0,  0.0, 0.0,
-							// 	0.0, 0.0,  0.0, 1.0);
-							// tempMat.compose( tempPos, tempQuat, tempSca ).multiply(m);
-							// tempMat.compose( tempPos, tempQuat, tempSca );
-							tempMat.compose( tempPos, tempQuat, tempSca ).multiply(adjustmentTransform);
+							tempMat.compose( tempPos, tempQuat, tempSca ).multiply( adjustmentTransform );
 
 							for ( let j = 0, l = instances.length; j < l; j ++ ) {
 

+ 23 - 30
src/three/TilesRenderer.js

@@ -580,11 +580,25 @@ export class TilesRenderer extends TilesRendererBase {
 		const loadIndex = tile._loadIndex;
 		let promise = null;
 
-		const m = new Matrix4();
-		m.set(1.0, 0.0,  0.0, 0.0,
-			0.0, 0.0, -1.0, 0.0,
-			0.0, 1.0,  0.0, 0.0,
-			0.0, 0.0,  0.0, 1.0);
+		const upAxis = this.rootTileSet.asset && this.rootTileSet.asset.gltfUpAxis || 'y';
+		const cached = tile.cached;
+		const cachedTransform = cached.transform;
+
+		switch ( upAxis.toLowerCase() ) {
+
+			case 'x':
+				tempMat.makeRotationAxis( Y_AXIS, - Math.PI / 2 );
+				break;
+
+			case 'y':
+				tempMat.makeRotationAxis( X_AXIS, Math.PI / 2 );
+				break;
+
+			case 'z':
+				tempMat.identity();
+				break;
+
+		}
 
 		switch ( extension ) {
 
@@ -594,7 +608,7 @@ export class TilesRenderer extends TilesRendererBase {
 				loader.workingPath = workingPath;
 				loader.fetchOptions = fetchOptions;
 
-				loader.adjustmentTransform.copy(m);
+				loader.adjustmentTransform.copy( tempMat );
 
 				promise = loader
 					.parse( buffer )
@@ -621,7 +635,7 @@ export class TilesRenderer extends TilesRendererBase {
 				loader.workingPath = workingPath;
 				loader.fetchOptions = fetchOptions;
 
-				loader.adjustmentTransform.copy(m);
+				loader.adjustmentTransform.copy( tempMat );
 
 				promise = loader
 					.parse( buffer )
@@ -636,7 +650,7 @@ export class TilesRenderer extends TilesRendererBase {
 				loader.workingPath = workingPath;
 				loader.fetchOptions = fetchOptions;
 
-				loader.adjustmentTransform.copy(m);
+				loader.adjustmentTransform.copy( tempMat );
 
 				promise = loader
 					.parse( buffer )
@@ -670,27 +684,6 @@ export class TilesRenderer extends TilesRendererBase {
 				return;
 
 			}
-
-			const upAxis = this.rootTileSet.asset && this.rootTileSet.asset.gltfUpAxis || 'y';
-			const cached = tile.cached;
-			const cachedTransform = cached.transform;
-
-			switch ( upAxis.toLowerCase() ) {
-
-				case 'x':
-					tempMat.makeRotationAxis( Y_AXIS, - Math.PI / 2 );
-					break;
-
-				case 'y':
-					tempMat.makeRotationAxis( X_AXIS, Math.PI / 2 );
-					break;
-
-				case 'z':
-					tempMat.identity();
-					break;
-
-			}
-
 			// ensure the matrix is up to date in case the scene has a transform applied
 			scene.updateMatrix();
 
@@ -699,7 +692,7 @@ export class TilesRenderer extends TilesRendererBase {
 			// any transformations applied to it can be assumed to be applied after load
 			// (such as applying RTC_CENTER) meaning they should happen _after_ the z-up
 			// rotation fix which is why "multiply" happens here.
-			if (extension === 'glb'|| extension === 'gltf' ) {
+			if ( extension === 'glb' || extension === 'gltf' ) {
 
 				scene.matrix.multiply( tempMat );