Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion example/three/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ const params = {

errorTarget: 6,
maxDepth: 15,
loadSiblings: true,
loadAncestors: true,
displayActiveTiles: false,
resolutionScale: 1.0,

Expand Down Expand Up @@ -270,7 +272,9 @@ function init() {
const tileOptions = gui.addFolder( 'Tiles Options' );
tileOptions.add( params, 'displayActiveTiles' );
tileOptions.add( params, 'errorTarget' ).min( 0 ).max( 50 );
tileOptions.add( params, 'maxDepth' ).min( 1 ).max( 100 );
tileOptions.add( params, 'maxDepth' ).min( 1 ).max( 100 ).step( 1 );
tileOptions.add( params, 'loadAncestors' );
tileOptions.add( params, 'loadSiblings' );
tileOptions.add( params, 'up', [ '+Y', '+Z', '-Z' ] );
tileOptions.open();

Expand Down Expand Up @@ -460,6 +464,8 @@ function animate() {
tiles.errorTarget = params.errorTarget;
tiles.displayActiveTiles = params.displayActiveTiles;
tiles.maxDepth = params.maxDepth;
tiles.loadAncestors = params.loadAncestors;
tiles.loadSiblings = params.loadSiblings;

// update plugin
const plugin = tiles.getPluginByName( 'DEBUG_TILES_PLUGIN' );
Expand Down
16 changes: 14 additions & 2 deletions src/core/renderer/tiles/TilesRendererBase.js
Original file line number Diff line number Diff line change
Expand Up @@ -405,8 +405,13 @@ export class TilesRendererBase {

set optimizedLoadStrategy( v ) {

console.warn( 'TilesRenderer: "optimizedLoadStrategy" has been deprecated. Please toggle "loadAncestors" to adjust the tile load behavior.' );
this._optimizedLoadStrategy = v;
if ( v !== this._optimizedLoadStrategy ) {

console.warn( 'TilesRenderer: "optimizedLoadStrategy" has been deprecated. Please toggle "loadAncestors" to adjust the tile load behavior.' );
this._optimizedLoadStrategy = v;

}


}

Expand Down Expand Up @@ -1319,6 +1324,13 @@ export class TilesRendererBase {

}

setEmptyTileVisible( tile, visible ) {

// callback specifically for indicating whether an "empty", non geometry tile is visible. Ued specifically
// for the DebugTilesPlugin to show intermediate parent tiles.

}

setTileVisible( tile, visible ) {

visible ? this.visibleTiles.add( tile ) : this.visibleTiles.delete( tile );
Expand Down
17 changes: 11 additions & 6 deletions src/core/renderer/tiles/optimizedTraverseFunctions.js
Original file line number Diff line number Diff line change
Expand Up @@ -463,10 +463,6 @@ function toggleTiles( tile, renderer ) {

}

} else {

tile.traversal.active = false;

}

// when loading parent tiles as fallbacks, keep all used tiles downloaded
Expand All @@ -487,7 +483,7 @@ function toggleTiles( tile, renderer ) {
}

// if the tile is loaded and in frustum we can mark it as visible
tile.traversal.visible = tile.internal.hasRenderableContent && tile.traversal.active && tile.traversal.inFrustum && tile.internal.loadingState === LOADED;
tile.traversal.visible = tile.traversal.active && tile.traversal.inFrustum && ( ! tile.internal.hasRenderableContent || tile.internal.loadingState === LOADED );
renderer.stats.used ++;

if ( tile.traversal.inFrustum ) {
Expand All @@ -498,7 +494,7 @@ function toggleTiles( tile, renderer ) {

}

if ( isUsed || isProcessed( tile ) && tile.traversal?.usedLastFrame ) {
if ( isUsed || isProcessed( tile ) && tile.traversal.usedLastFrame ) {

let setActive = false;
let setVisible = false;
Expand Down Expand Up @@ -552,6 +548,15 @@ function toggleTiles( tile, renderer ) {

}

} else if ( ! tile.internal.hasRenderableContent ) {

// Empty tiles are not tracked in activeTiles so setTileActive is not called here.
if ( tile.traversal.wasSetVisible !== setVisible ) {

renderer.invokeOnePlugin( plugin => plugin.setEmptyTileVisible && plugin.setEmptyTileVisible( tile, setVisible ) );

}

}

tile.traversal.wasSetActive = setActive;
Expand Down
18 changes: 18 additions & 0 deletions src/core/renderer/tiles/traverseFunctions.js
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,16 @@ function markVisibleTiles( tile, renderer ) {
tile.traversal.active = true;
stats.active ++;

} else if ( ! tile.internal.hasRenderableContent ) {

if ( tile.traversal.inFrustum ) {

tile.traversal.visible = true;

}

tile.traversal.active = true;

} else if ( tile.internal.hasContent ) {

renderer.queueTileForDownload( tile );
Expand Down Expand Up @@ -463,6 +473,14 @@ function toggleTiles( tile, renderer ) {

}

} else if ( ! tile.internal.hasRenderableContent ) {

if ( tile.traversal.wasSetVisible !== setVisible ) {

renderer.invokeOnePlugin( plugin => plugin.setEmptyTileVisible && plugin.setEmptyTileVisible( tile, setVisible ) );

}

}

tile.traversal.wasSetActive = setActive;
Expand Down
8 changes: 7 additions & 1 deletion src/three/plugins/DebugTilesPlugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ export class DebugTilesPlugin {

};

this._onTileVisibilityChangeCB = ( { scene, tile, visible } ) => {
this._onTileVisibilityChangeCB = ( { tile, visible } ) => {

this._onTileVisibilityChange( tile, visible );

Expand Down Expand Up @@ -722,6 +722,12 @@ export class DebugTilesPlugin {

}

setEmptyTileVisible( tile, visible ) {

this._onTileVisibilityChange( tile, visible );

}

_onTileVisibilityChange( tile, visible ) {

if ( this.displayParentBounds ) {
Expand Down
1 change: 0 additions & 1 deletion src/three/plugins/TileFlatteningPlugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,6 @@ export class TileFlatteningPlugin {

} );


this.tiles.dispatchEvent( { type: 'needs-render' } );

}
Expand Down
Loading