|
@@ -164187,6 +164187,7 @@ ENDSEC
|
|
|
|
|
|
|
|
|
if(fileInfo_.fileType == '3dTiles'){
|
|
|
+ let isGroup = !object.runtime;
|
|
|
let children = object.runtime ? [object] : object.children;
|
|
|
|
|
|
|
|
@@ -164213,14 +164214,17 @@ ENDSEC
|
|
|
|
|
|
const scaleX = vecX.length();
|
|
|
const scaleY = vecY.length();
|
|
|
- const scaleZ = vecZ.length();
|
|
|
- /* boundingBox.expandByPoint(center);
|
|
|
- boundingBox.expandByVector(new THREE.Vector3(scaleX,scaleY,scaleZ)) */
|
|
|
-
|
|
|
+ const scaleZ = vecZ.length();
|
|
|
|
|
|
boundingBox_.min.set( - scaleX, - scaleY, - scaleZ );
|
|
|
boundingBox_.max.set( scaleX, scaleY, scaleZ );
|
|
|
|
|
|
+ if(isGroup){//如果是多个拼成的,每个都保留原先在parent中的offset。 如果是外层,作为独立个体,不用理会位置信息,直接放中央。
|
|
|
+ object.position.copy(center);
|
|
|
+ object.position.z *= -1;
|
|
|
+ boundingBox_.translate(object.position); //由于是内层,其位移会改变整体的boundingbox
|
|
|
+ }
|
|
|
+
|
|
|
}else if(json.root.boundingVolume.sphere){
|
|
|
let sphereData = json.root.boundingVolume.sphere;
|
|
|
let center = new Vector3(...sphereData);
|
|
@@ -164419,7 +164423,7 @@ ENDSEC
|
|
|
maximumScreenSpaceError: fileInfo.maximumScreenSpaceError || 80, //越小越清晰。 如果本身tiles很密很小这个值就不能很大。
|
|
|
//maxDepth: 100,
|
|
|
maximumMemoryUsage: 200, //缓存大小。单位M(但实际结果是 2.5*maximumMemoryUsage + 750 。超过2G会崩, 所以应该小于540) 若太小,密集的tile反复加载很卡. (任务管理器刷新网页后若内存不掉就要结束进程否则虚高)
|
|
|
- //debug:true, //show box
|
|
|
+ debug:false, //show box
|
|
|
parent: this.scene.scene,
|
|
|
is4dkk: fileInfo.is4dkk,//是否是4dkk中的模型. 通常maximumScreenSpaceError需要10
|
|
|
updateTime: fileInfo.updateTime, //加后缀防止缓存
|