# 3dtiles-遍历数据,如何知道何时遍历结束,在遍历结束的时候处理 allTileObj
等构件加载完就结束,且三维模型是分层分块加载的,缩放和拖动时都会导致重新加载;
模型并不是一次性加载结束的;如果模型构件过多的话,不建议使用该方法遍历操作;
最好是在处理模型时操作;这个可以和提供模型的人讨论;
比如说处理模型记录的对应属性信息 json 或 cesiumlab 处理的 lab 文件中解析存到数据库中。
# 示例中的鼠标移入到实体对象上,鼠标改变手势这个配置或者工具类有提供吗?
参考 https://gitee.com/marsgis/mars3d/issues/I5SJE3?from=project-issue
是代码内部自动处理的,比如一旦绑定了 click 事件,就会变为手势。
内部调用的是 http://mars3d.cn/api/Map.html#setCursor
# 出现三角网和包围盒与数据建模有关系吗?
点云只有包围盒,没有三角网,与数据处理生产有关,有的数据有、有的数据没有
# 点云模型如何单独设置点
仅 style 中个可以改变点云粒子效果,具体参考 [cesium 官方示例理解 style 格式](https://sandcastle.cesium.com/?src=3D Tiles Point Cloud Styling.html&label=3D Tiles)
# 三维模型怎么做到贴地形
跟数据建模的坐标原点、地形精度、模型精度有关。无法完全的吻合的时候,参考这个视频自己调一下效果, 尽量吻合 https://www.bilibili.com/video/BV1YN411i7Hc/?spm_id_from=333.337.search-card.all.click
# 按轴旋转出现的位置和三维模型加载的位置不在一起
旋转的中心点位置是模型出厂的时候坐标原点,建议与提供模型的人进行沟通,需要重新处理下数据;
# 三维模型直接显示模型的坐标轴,不是编辑
layerWorkBIM.readyPromise.then((tilesetLayer) => {
const debugAxisPrimitive = map.graphicLayer.primitiveCollection.add(
new Cesium.DebugModelMatrixPrimitive({
modelMatrix: tilesetLayer.modelMatrix,
length: 100,
width: 4.0,
})
);
debugAxisPrimitive._tooltipConfig = {
content: `<span style="color: red;">红色</span> 是 X轴<br/>
<span style="color: green;">绿色</span> 是 Y轴<br/>
<span style="color: blue;">蓝色</span> 是 Z轴`,
options: {},
};
// map.graphicLayer.primitiveCollection.remove(debugAxisPrimitive)
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# map.scene.light 环境光影响了三维模型
目前可以尝试
处理模型时勾选 不接收 cesium 光照 选项
在模型图层自定义 customShader 实现
# 怎么设置 modle 小模型贴在三维模型上
比如摄像头贴在房子墙壁
目前没法自动贴墙面。需要通过滑动条调整 gltf 模型的 heading 参数;
# 三维模型中小部件的运动
参考水利闸门的示例 (opens new window);大模型中的小部件不多的话,用两个 3dtiles 控制实现
# 三模模型的打印的“模型中心位置”可以去除嘛
可以的,api 文档中搜索下 Log,调用对应方法;
# 参数编辑示例中,模型精度无效
说明模型处理时,没有做太多的分层 LOD,与模型数据有关。
# 加载时,会导致 UI 动画卡顿
map.viewer.useDefaultRenderLoop = false; // 关闭自动渲染
map.viewer.useDefaultRenderLoop = true; // 开启自动渲染
2
3
# 内置特效打开后,没有立体感
是 cesim 本身规则,
之前的版本中 cesium 1.9x 对应的 webgl1 和渲染规则是存在的
目前最新 cesium 1.10x 对应的 webgl2 是没有的(3dtiles 规则全部重写了)
# 模型在 2d 视图下,和 3d 视图下的高度不一致怎么办
map.on(mars3d.EventType.terrainChange, function (event) {
if (map.hasTerrain) {
tiles3dLayer.alt = 11.5;
} else {
tiles3dLayer.alt = -118.5;
}
});
2
3
4
5
6
7
# 三维模型 style 中设置的参数,自己模型如何添加
建模时分层建模,并赋予对应构件层级等相关属性
# c4d 导出带凹凸贴图或法线贴图的 fbx,加载贴图异常
不好处理,不同引擎效果不一样,cesium 的还是有些差异,建议你还是找 cesiumlab 官方下,这个是处理中的问题,还需要他们回复下,或兼容你的数据下
# I3SLayer 模型加载不成功
已知问题:
Cesium.I3SLayer:当前仅支持 EPSG:4326 和 EPSG:4490 坐标系,目前还不支持其他坐标系,得等后期新版本 cesium 支持了才行。