Explorar o código

Fix error handling

Garrett Johnson %!s(int64=5) %!d(string=hai) anos
pai
achega
d08d2cbdec
Modificáronse 2 ficheiros con 14 adicións e 1 borrados
  1. 13 1
      src/ThreeTilesRenderer.js
  2. 1 0
      src/TilesRenderer.js

+ 13 - 1
src/ThreeTilesRenderer.js

@@ -469,8 +469,20 @@ class ThreeTilesRenderer extends TilesRenderer {
 				} else {
 
 					const distance = boundingBox.distanceToPoint( tempVector );
+
+					// assume the scales on all axes are uniform.
+					tempVector.setFromMatrixScale( tempMat );
+					const scale = tempVector.x;
+
+					if ( Math.abs( Math.max( scale.x - scale.y, scale.x - scale.z ) ) > 1e-6 ) {
+
+						console.warn( 'ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when claculating screen space error.' );
+
+					}
+
+					const scaledDistance = distance * scale;
 					const sseDenominator = 2 * Math.tan( 0.5 * cam.fov * DEG2RAD );
-					error = ( tile.geometricError * resVector.height ) / ( distance * sseDenominator );
+					error = ( tile.geometricError * resVector.height ) / ( scaledDistance * sseDenominator );
 
 				}
 

+ 1 - 0
src/TilesRenderer.js

@@ -456,6 +456,7 @@ class TilesRenderer {
 		}
 
 		tile.parent = parentTile;
+		tile.children = tile.children || [];
 		tile.__contentEmpty = ! tile.content || ! tile.content.uri;
 
 		tile.__error = 0.0;