Реализация алгоритма короткого пути в autodesk forge viewer

#autodesk-forge #autodesk-viewer #autodesk #autodesk-model-derivative

#autodesk-forge #autodesk-viewer #autodesk #autodesk-модель-производная

Вопрос:

Я пытаюсь нарисовать геометрию в моем средстве просмотра на основе кратчайшего пути между 2 объектами. до сих пор я знаю, как мы можем рисовать пользовательскую геометрию с помощью vector3. также я выяснил, какой алгоритм я могу использовать, чтобы найти кратчайший путь от точки A до точки B. вот несколько: Поиск Дейкстры A * Я видел этот пример, где был реализован этот алгоритм, и я пытаюсь аналогичное решение в forge viewer вот ссылка

также, если кто-нибудь может мне помочь, как я могу ограничить просмотр от первого лица сквозными стенами, как в приведенном выше примере. прямо сейчас в forge Viewer я могу проникнуть сквозь стену, которую я хочу избежать, или есть какой-нибудь способ, которым я могу идентифицировать стены

Ответ №1:

К сожалению, программа просмотра не обеспечивает достаточной поддержки поиска путей, поэтому большую часть этого вам придется выполнять вручную.

Вот некоторые из доступных функций, которые могут пригодиться в вашем случае:

  • вы можете «стрелять лучами» внутри сцены и вычислять их пересечения с ближайшей геометрией, например, используя 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...
});
  

Комментарии:

1. Спасибо, Петр, это добавило мне больше знаний и помогло заставить это работать с вашим вышеупомянутым решением