Jelajahi Sumber

Fix RTC-CENTER for pnts model

Oleksandr Kamniev 4 tahun lalu
induk
melakukan
2f4d5abf29
2 mengubah file dengan 16 tambahan dan 2 penghapusan
  1. 10 0
      src/three/PNTSLoader.js
  2. 6 2
      src/three/TilesRenderer.js

+ 10 - 0
src/three/PNTSLoader.js

@@ -58,6 +58,16 @@ export class PNTSLoader extends PNTSLoaderBase {
 		result.scene = object;
 		result.scene.featureTable = featureTable;
 
+		const rtcCenter = featureTable.getData( 'RTC_CENTER' );
+
+		if ( rtcCenter ) {
+
+			result.scene.position.x += rtcCenter[ 0 ];
+			result.scene.position.y += rtcCenter[ 1 ];
+			result.scene.position.z += rtcCenter[ 2 ];
+
+		}
+
 		return result;
 
 	}

+ 6 - 2
src/three/TilesRenderer.js

@@ -615,8 +615,12 @@ 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.
-			scene.matrix.multiply( tempMat ).premultiply( cachedTransform );
-			scene.matrix.decompose( scene.position, scene.quaternion, scene.scale );
+			if ( extension !== 'pnts' ) {
+
+				scene.matrix.multiply( tempMat ).premultiply( cachedTransform );
+				scene.matrix.decompose( scene.position, scene.quaternion, scene.scale );
+
+			}
 			scene.traverse( c => {
 
 				c[ INITIAL_FRUSTUM_CULLED ] = c.frustumCulled;