在Autodesk Forge Viewer中实现短路算法

问题描述

我正在尝试基于2个对象之间的最短路径在查看器上绘制几何图形。 到目前为止,我知道如何使用vector3绘制自定义几何。 我也弄清楚了我可以使用哪种算法找到A点到B点之间的最短路径。 这里有几个: 迪克斯特拉的 A *搜索 我已经看到了实现该算法的示例,我正在尝试在伪造查看器中使用类似的解决方案,这里是Link

如果有人可以帮助我,如何像上述示例中那样将第一人称视角限制为穿过墙壁。现在在伪造查看器中,我可以穿透要避免的墙,或者有什么方法可以识别墙

解决方法

不幸的是,查看器没有为寻路提供很多支持,因此大多数情况下您都必须手动进行。

以下是 可用的一些功能,在您的情况下可能会很方便:

  • 您可以“拍摄”场景中的光线,并计算它们与最近的几何形状的交点,例如,使用viewer.impl.rayIntersect(ray,ignoreTransparent)
    • 例如,如果您在场景中有某种化身,则可用于检测与墙壁的碰撞
  • 如果需要,您可以使用“片段列表”检索场景中单个对象的几何形状:
let frags = viewer.model.getFragmentList();
let tree = viewer.model.getInstanceTree();
tree.enumNodeFragments(dbid,function (fragid) {
    let mesh = frags.getVizmesh(fragid);
    // Do something with the mesh...
});