|
@@ -59213,8 +59213,8 @@
|
|
|
}
|
|
|
},
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
getBestCount : function(name, minCount=1,maxCount=6, durBound1 = 1.2, durBound2 = 10, ifLog){
|
|
|
|
|
|
|
|
@@ -129017,6 +129017,17 @@ ENDSEC
|
|
|
PERFORMANCE OF THIS SOFTWARE.
|
|
|
***************************************************************************** */
|
|
|
|
|
|
+
|
|
|
+ window.visiVertexCount = 0;
|
|
|
+ window.visiGeoCount = 0;
|
|
|
+ const maxVertexVisi = 5e6;
|
|
|
+ const maxTexVisi = 500;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -146494,13 +146505,23 @@ ENDSEC
|
|
|
console.error('TILE SELECTED BUT NOT LOADED!!', tile.id);
|
|
|
}
|
|
|
else {
|
|
|
- // Make sure it's visible
|
|
|
- renderMap[tile.id].visible = true;
|
|
|
+ // Make sure it's visible
|
|
|
+ if(!renderMap[tile.id].visible){
|
|
|
+ if(visiVertexCount<maxVertexVisi){
|
|
|
+ renderMap[tile.id].visible = true;
|
|
|
+ visiVertexCount += renderMap[tile.id].vertexCount; //xzw add
|
|
|
+ }else {
|
|
|
+ console.log('超出', visiVertexCount);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
else {
|
|
|
if (renderMap[tile.id]) {
|
|
|
- renderMap[tile.id].visible = false;
|
|
|
+ if(renderMap[tile.id].visible){
|
|
|
+ renderMap[tile.id].visible = false;
|
|
|
+ visiVertexCount -= renderMap[tile.id].vertexCount; //xzw add
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -146508,6 +146529,7 @@ ENDSEC
|
|
|
while (unloadQueue.length > 0) {
|
|
|
const tile = unloadQueue.pop();
|
|
|
if (renderMap[tile.id] && tile.contentState == TILE_CONTENT_STATE.UNLOADED) {
|
|
|
+ //console.log('removevisi', renderMap[tile.id].visible) 如果是true,visiVertexCount要减
|
|
|
root.remove(renderMap[tile.id]);
|
|
|
disposeNode(renderMap[tile.id]);
|
|
|
delete renderMap[tile.id];
|
|
@@ -146688,7 +146710,7 @@ ENDSEC
|
|
|
(gltf) => {
|
|
|
const tileContent = gltf.scenes[0];
|
|
|
//tileContent.applyMatrix4(contentTransform);
|
|
|
-
|
|
|
+ tileContent.vertexCount = 0; //xzw add
|
|
|
tileContent.traverse((object) => {
|
|
|
if (object.type == "Mesh") {
|
|
|
const mesh = object;
|
|
@@ -146726,6 +146748,10 @@ ENDSEC
|
|
|
if (options.computeNormals) {
|
|
|
mesh.geometry.computeVertexNormals();
|
|
|
}
|
|
|
+ //xzw add:
|
|
|
+ tileContent.vertexCount += mesh.geometry.attributes.position.count;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
//------------------add on 2023.1.16----zeg
|
|
|
|
|
@@ -146740,6 +146766,8 @@ ENDSEC
|
|
|
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+
|
|
|
resolve(tileContent);
|
|
|
},
|
|
|
(e) => {
|
|
@@ -153698,10 +153726,10 @@ ENDSEC
|
|
|
options: {
|
|
|
//dracoDecoderPath: '../utils/loaders/DRACOLoader/draco',
|
|
|
//basisTranscoderPath: '../utils/loaders/KTX2Loader/basis',
|
|
|
- maximumScreenSpaceError: 700,
|
|
|
- maxDepth: 20,
|
|
|
- showAllTile: true,
|
|
|
- maximumMemoryUsage: 16, //缓存大小
|
|
|
+ maximumScreenSpaceError: 100,
|
|
|
+ maxDepth: 20,
|
|
|
+ maximumMemoryUsage: 700, //缓存大小。 若太小,密集的tile反复加载很卡
|
|
|
+
|
|
|
},
|
|
|
});
|
|
|
console.log(result);
|
|
@@ -153709,7 +153737,7 @@ ENDSEC
|
|
|
loadDone(result.model/* , null, fileInfo.url */);
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
let loaded = false;
|
|
|
let tileset = result.runtime.getTileset();
|
|
|
tileset.addEventListener('endTileLoading', function (data) {//Tileset3D
|