三维模型共同问题

9/18/2024

# 3dtiles-遍历数据,如何知道何时遍历结束,在遍历结束的时候处理 allTileObj

image

  1. 等构件加载完就结束,且三维模型是分层分块加载的,缩放和拖动时都会导致重新加载;

  2. 模型并不是一次性加载结束的;如果模型构件过多的话,不建议使用该方法遍历操作;

最好是在处理模型时操作;这个可以和提供模型的人讨论;

比如说处理模型记录的对应属性信息 json 或 cesiumlab 处理的 lab 文件中解析存到数据库中。

# 示例中的鼠标移入到实体对象上,鼠标改变手势这个配置或者工具类有提供吗?

参考 https://gitee.com/marsgis/mars3d/issues/I5SJE3?from=project-issue

image

是代码内部自动处理的,比如一旦绑定了 click 事件,就会变为手势。

内部调用的是 http://mars3d.cn/api/Map.html#setCursor

# 出现三角网和包围盒与数据建模有关系吗?

点云只有包围盒,没有三角网,与数据处理生产有关,有的数据有、有的数据没有

image

image

# 点云模型如何单独设置点

仅 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

# 按轴旋转出现的位置和三维模型加载的位置不在一起

image

旋转的中心点位置是模型出厂的时候坐标原点,建议与提供模型的人进行沟通,需要重新处理下数据;

# 三维模型直接显示模型的坐标轴,不是编辑

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)
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

image

# map.scene.light 环境光影响了三维模型

目前可以尝试

  1. 处理模型时勾选 不接收 cesium 光照 选项

  2. 在模型图层自定义 customShader 实现

# 怎么设置 modle 小模型贴在三维模型上

比如摄像头贴在房子墙壁

目前没法自动贴墙面。需要通过滑动条调整 gltf 模型的 heading 参数;

image

# 三维模型中小部件的运动

参考水利闸门的示例 (opens new window);大模型中的小部件不多的话,用两个 3dtiles 控制实现

# 三模模型的打印的“模型中心位置”可以去除嘛

可以的,api 文档中搜索下 Log,调用对应方法;

image

# 参数编辑示例中,模型精度无效

说明模型处理时,没有做太多的分层 LOD,与模型数据有关。

# 加载时,会导致 UI 动画卡顿

map.viewer.useDefaultRenderLoop = false; // 关闭自动渲染

map.viewer.useDefaultRenderLoop = true; // 开启自动渲染
1
2
3

# 内置特效打开后,没有立体感

image

是 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;
  }
});
1
2
3
4
5
6
7

# 三维模型 style 中设置的参数,自己模型如何添加

image

建模时分层建模,并赋予对应构件层级等相关属性

# c4d 导出带凹凸贴图或法线贴图的 fbx,加载贴图异常

不好处理,不同引擎效果不一样,cesium 的还是有些差异,建议你还是找 cesiumlab 官方下,这个是处理中的问题,还需要他们回复下,或兼容你的数据下

# I3SLayer 模型加载不成功

已知问题:

Cesium.I3SLayer:当前仅支持 EPSG:4326 和 EPSG:4490 坐标系,目前还不支持其他坐标系,得等后期新版本 cesium 支持了才行。

最后更新: 10/12/2024, 4:30:16 PM