浏览代码

[debug] - add random node color option to colorize each node within the scene, adjust screen error to go from red to green

Dave Buchhofer 4 年之前
父节点
当前提交
6330796298
共有 3 个文件被更改,包括 28 次插入6 次删除
  1. 2 1
      src/base/TilesRendererBase.d.ts
  2. 1 1
      src/three/DebugTilesRenderer.d.ts
  3. 25 4
      src/three/DebugTilesRenderer.js

+ 2 - 1
src/base/TilesRendererBase.d.ts

@@ -1,9 +1,10 @@
 import { LRUCache } from '../utilities/LRUCache';
 import { PriorityQueue } from '../utilities/PriorityQueue';
+import { Tileset } from './Tileset';
 
 export class TilesRendererBase {
 
-	readonly rootTileset : Object | null;
+	readonly rootTileset : Tileset | null;
 	readonly root : Object | null;
 
 	errorTarget : Number;

+ 1 - 1
src/three/DebugTilesRenderer.d.ts

@@ -9,7 +9,7 @@ export const DEPTH : ColorMode;
 export const RELATIVE_DEPTH : ColorMode;
 export const IS_LEAF : ColorMode;
 export const RANDOM_COLOR : ColorMode;
-
+export const RANDOM_NODE_COLOR: ColorMode;
 export class DebugTilesRenderer extends TilesRenderer {
 
 	displayBoxBounds : Boolean;

+ 25 - 4
src/three/DebugTilesRenderer.js

@@ -16,6 +16,7 @@ export const DEPTH = 4;
 export const RELATIVE_DEPTH = 5;
 export const IS_LEAF = 6;
 export const RANDOM_COLOR = 7;
+export const RANDOM_NODE_COLOR = 8;
 
 export class DebugTilesRenderer extends TilesRenderer {
 
@@ -201,6 +202,14 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 			scene.traverse( c => {
 
+				if ( colorMode === RANDOM_NODE_COLOR ) {
+
+					h = Math.random();
+					s = 0.5 + Math.random() * 0.5;
+					l = 0.375 + Math.random() * 0.25;
+
+				}
+
 				const currMaterial = c.material;
 				if ( currMaterial ) {
 
@@ -229,7 +238,7 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 					}
 
-					if ( colorMode !== RANDOM_COLOR ) {
+					if ( colorMode !== RANDOM_COLOR && colorMode !== RANDOM_NODE_COLOR ) {
 
 						delete c.material[ HAS_RANDOM_COLOR ];
 
@@ -241,7 +250,8 @@ export class DebugTilesRenderer extends TilesRenderer {
 						case DEPTH: {
 
 							const val = tile.__depth / maxDepth;
-							c.material.color.setRGB( val, val, val );
+							/** map higher depth values to red, lower to green, lerping by hue */
+							c.material.color.setHSL( MathUtils.mapLinear( val, 0, 1, 0.9, 0.1 ), 1, 0.5 );
 							break;
 
 						}
@@ -261,8 +271,8 @@ export class DebugTilesRenderer extends TilesRenderer {
 
 							} else {
 
-								const v = MathUtils.mapLinear( val, 1, 0, 0.1, 1 );
-								c.material.color.setRGB( v, v, v );
+								/** map higher error values to red, lower to green, lerping by hue */
+								c.material.color.setHSL( MathUtils.mapLinear( val, 0, 1, 0.43, 0 ), 1, 0.5 );
 
 							}
 							break;
@@ -298,6 +308,17 @@ export class DebugTilesRenderer extends TilesRenderer {
 							break;
 
 						}
+						case RANDOM_NODE_COLOR: {
+
+							if ( ! c.material[ HAS_RANDOM_COLOR ] ) {
+
+								c.material.color.setHSL( h, s, l );
+								c.material[ HAS_RANDOM_COLOR ] = true;
+
+							}
+							break;
+
+						}
 						case RANDOM_COLOR: {
 
 							if ( ! c.material[ HAS_RANDOM_COLOR ] ) {