#autodesk-forge #autodesk-viewer #autodesk
#autodesk-forge #autodesk-просмотрщик #autodesk
Вопрос:
Моя идея состоит в том, чтобы определить, есть ли какие-либо препятствия между двумя объектами
теперь эти препятствия могут быть и другими объектами.
например, есть 2 двери, которые мне нужно найти, если между ними есть какие-либо объекты, такие как стол, стулья.
также направление проверки препятствий должно быть направлено к цели.
добавляя больше к моей идее, могу ли я сделать это выше, используя dbid объектов, поэтому, если я предоставлю dbid для 2 объектов, есть ли какой-либо способ получить другой объект, который находится там.
Ответ №1:
Я написал пример, который делает нечто подобное, но ваш случай немного сложнее. В этом примере я использую ТРОЙКУ.Raycaster от pointA до pointB и найдите / посчитайте все объекты между этими 2 точками.
Этот подход является быстрым и достаточно хорошим для двухточечного аспекта. Сложность вашего вопроса заключается в определении блокирующих объектов различной формы, которые могут частично блокировать вид; если частично блокировать вид, вы все равно можете видеть некоторые вершины конечных объектов, но не все. Это скорее подход HLR или трассировки лучей, и для вычисления требуется много времени. ТРИ.Raycaster может помочь, поскольку вы все равно можете передать сетку в качестве параметра, но это будет очень медленный процесс, даже если вы используете дерево BVH из средства просмотра, чтобы исключить некоторые сетки из процесса.
Альтернативой было бы написать пользовательский шейдер для использования графического процессора для вычисления за вас, и это будет намного быстрее. К сожалению, у меня нет такого готового примера. Если подход «точка-точка» достаточно хорош, приведенный ниже код должен помочь.
Расширение кода моего примера находится здесь
Ответ №2:
Я написал пример приложения с именем ForgeFader, которое использует преобразование лучей для определения количества стен между двумя точками в модели RVT, как с помощью Revit desktop API, так и three.js
в Forge viewer.