Browse Source

Add warnings if feature semantics are not supported

Garrett Johnson 4 years ago
parent
commit
6a5747c20b
2 changed files with 34 additions and 27 deletions
  1. 17 10
      src/three/I3DMLoader.js
  2. 17 17
      src/three/PNTSLoader.js

+ 17 - 10
src/three/I3DMLoader.js

@@ -39,22 +39,29 @@ export class I3DMLoader extends I3DMLoaderBase {
 					loader.parse( gltfBuffer, null, model => {
 
 						const INSTANCES_LENGTH = featureTable.getData( 'INSTANCES_LENGTH' );
-
-						// RTC_CENTER
-						// QUANTIZED_VOLUME_OFFSET
-						// QUANTIZED_VOLUME_SCALE
-						// EAST_NORTH_UP
-
 						const POSITION = featureTable.getData( 'POSITION', INSTANCES_LENGTH, 'FLOAT', 'VEC3' );
 						const NORMAL_UP = featureTable.getData( 'NORMAL_UP', INSTANCES_LENGTH, 'FLOAT', 'VEC3' );
 						const NORMAL_RIGHT = featureTable.getData( 'NORMAL_RIGHT', INSTANCES_LENGTH, 'FLOAT', 'VEC3' );
 						const SCALE_NON_UNIFORM = featureTable.getData( 'SCALE_NON_UNIFORM', INSTANCES_LENGTH, 'FLOAT', 'VEC3' );
 						const SCALE = featureTable.getData( 'SCALE', INSTANCES_LENGTH, 'FLOAT', 'SCALAR' );
 
-						// POSITION_QUANTIZED
-						// NORMAL_UP_OCT32P
-						// NORMAL_RIGHT_OCT32P
-						// BATCH_ID
+						[
+							'RTC_CENTER',
+							'QUANTIZED_VOLUME_OFFSET',
+							'QUANTIZED_VOLUME_SCALE',
+							'EAST_NORTH_UP',
+							'POSITION_QUANTIZED',
+							'NORMAL_UP_OCT32P',
+							'NORMAL_RIGHT_OCT32P',
+						].forEach( feature => {
+
+							if ( feature in featureTable.header ) {
+
+								console.warn( `I3DMLoader: Unsupported FeatureTable feature "${ feature }" detected.` );
+
+							}
+
+						} );
 
 						const instanceMap = new Map();
 						const instances = [];

+ 17 - 17
src/three/PNTSLoader.js

@@ -15,30 +15,30 @@ export class PNTSLoader extends PNTSLoaderBase {
 		const result = super.parse( buffer );
 		const { featureTable } = result;
 
-		// global semantics
 		const POINTS_LENGTH = featureTable.getData( 'POINTS_LENGTH' );
-
-		// RTC_CENTER
-		// QUANTIZED_VOLUME_OFFSET
-		// QUANTIZED_VOLUME_SCALE
-		// CONSTANT_RGBA
-		// BATCH_LENGTH
-
 		const POSITION = featureTable.getData( 'POSITION', POINTS_LENGTH, 'FLOAT', 'VEC3' );
 		const RGB = featureTable.getData( 'RGB', POINTS_LENGTH, 'UNSIGNED_BYTE', 'VEC3' );
 
-		// POSITION_QUANTIZED
-		// RGBA
-		// RGB565
-		// NORMAL
-		// NORMAL_OCT16P
-		// BATCH_ID
+		[
+			'RTC_CENTER',
+			'QUANTIZED_VOLUME_OFFSET',
+			'QUANTIZED_VOLUME_SCALE',
+			'CONSTANT_RGBA',
+			'BATCH_LENGTH',
+			'POSITION_QUANTIZED',
+			'RGBA',
+			'RGB565',
+			'NORMAL',
+			'NORMAL_OCT16P',
+		].forEach( feature => {
 
-		if ( POSITION === null ) {
+			if ( feature in featureTable.header ) {
 
-			throw new Error( 'PNTSLoader : POSITION_QUANTIZED feature type is not supported.' );
+				console.warn( `PNTSLoader: Unsupported FeatureTable feature "${ feature }" detected.` );
 
-		}
+			}
+
+		} );
 
 		const geometry = new BufferGeometry();
 		geometry.setAttribute( 'position', new BufferAttribute( POSITION, 3, false ) );