首页 > 解决方案 > 在 Autodesk forge 查看器中实现短路路径算法

问题描述

我正在尝试根据 2 个对象之间的最短路径在查看器上绘制几何图形。到目前为止,我知道如何使用 vector3 绘制自定义几何图形。我还弄清楚了我可以使用哪种算法来找到点 A 到点 B 之间的最短路径。这里有几个:Dijkstra 的 A* 搜索我已经看到了这个算法被实现的例子,我在 forge viewer 中尝试类似的解决方案这是链接

另外,如果有人可以帮助我,我该如何将第一人称视角限制在上面示例中的墙壁上。现在在伪造查看器中,我可以穿透我想避免的墙壁,或者有什么方法可以识别墙壁

标签: autodesk-forgeautodesk-viewerautodeskautodesk-model-derivative

解决方案


不幸的是,查看器没有为寻路提供很多支持,所以大部分都必须手动完成。

以下是一些在您的情况下可能会派上用场的可用功能:

  • 您可以在场景内“发射光线”并计算它们与最近几何体的交点,例如,使用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...
});

推荐阅读