|
@@ -31,7 +31,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
***************************************************************************** */
|
|
|
|
|
|
|
|
|
-let visiVertexCount = 0
|
|
|
+
|
|
|
let visiGeoCount = 0
|
|
|
const maxVertexVisi = 5e6
|
|
|
const maxTexVisi = 500
|
|
@@ -57,7 +57,7 @@ function getGpuMemoryUsage(win = window){//总的
|
|
|
}
|
|
|
|
|
|
viewer.tiles3dMemoryUsage = c
|
|
|
- viewer.tiles3dVisiVCount = visiVertexCount
|
|
|
+
|
|
|
return c
|
|
|
}
|
|
|
|
|
@@ -7549,8 +7549,13 @@ class TilesetCache {
|
|
|
while (node !== sentinel && ( getGpuMemoryUsage() > maximumMemoryUsageInBytes || trimTiles)) {
|
|
|
const tile = node.item;
|
|
|
node = node.next;
|
|
|
- this.unloadTile(tileset, tile, unloadCallback);
|
|
|
- }
|
|
|
+ this.unloadTile(tileset, tile, unloadCallback);
|
|
|
+
|
|
|
+ if(viewer.visiVertexCount > 1500000){ //add: 针对部分特别精细的很卡如 https://4dkk.4dage.com/scene_view_data/SG-t-WReTBN204dQ/images/3dtiles/tileset.json
|
|
|
+ tileset.options.maximumScreenSpaceError *= 1.1
|
|
|
+ tileset.options.maximumScreenSpaceError = Math.min(1000, tileset.options.maximumScreenSpaceError)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -9971,6 +9976,9 @@ let tilesetSid = 0//add
|
|
|
class Tileset3D extends EventDispatcher{//xzw add EventDispatcher
|
|
|
constructor(json, options) {
|
|
|
super()
|
|
|
+
|
|
|
+ viewer.visiVertexCount = viewer.visiVertexCount || 0
|
|
|
+
|
|
|
_defineProperty(this, "options", void 0);
|
|
|
|
|
|
_defineProperty(this, "loadOptions", void 0);
|
|
@@ -17595,6 +17603,8 @@ class Loader3DTiles {
|
|
|
tileContent.visible = false;
|
|
|
renderMap[tile.id] = tileContent;
|
|
|
tileContent.name = tile.id //add
|
|
|
+ tileContent.tile = tile //add
|
|
|
+
|
|
|
root.add(renderMap[tile.id]);
|
|
|
if (options.debug) {
|
|
|
const box = loadersBoundingBoxToMesh(tile);
|
|
@@ -17772,9 +17782,9 @@ class Loader3DTiles {
|
|
|
|
|
|
// Make sure it's visible
|
|
|
if(!renderMap[tile.id].visible){
|
|
|
- if(visiVertexCount<maxVertexVisi){
|
|
|
+ if(viewer.visiVertexCount<maxVertexVisi){
|
|
|
renderMap[tile.id].visible = true;
|
|
|
- visiVertexCount += renderMap[tile.id].vertexCount //xzw add
|
|
|
+ viewer.visiVertexCount += renderMap[tile.id].vertexCount //xzw add
|
|
|
options.debug && (boxMap[tile.id].material.opacity = 1 , boxMap[tile.id].children[0].sprite.material.opacity = 1 )
|
|
|
}else{
|
|
|
//console.log('超出', visiVertexCount)
|
|
@@ -17792,7 +17802,7 @@ class Loader3DTiles {
|
|
|
renderMap[tile.id].visible = false;
|
|
|
options.debug && (boxMap[tile.id].material.opacity = 0.1, boxMap[tile.id].children[0].sprite.material.opacity = 0.1)
|
|
|
|
|
|
- visiVertexCount -= renderMap[tile.id].vertexCount //xzw add
|
|
|
+ viewer.visiVertexCount -= renderMap[tile.id].vertexCount //xzw add
|
|
|
}
|
|
|
}
|
|
|
}
|