Просмотрщик кузницы: увеличьте актив внутри комнаты (перед активом)
Я использую JS Forge Viewer.
Я пытаюсь выбрать актив в здании, а затем увеличить его с помощью камеры в комнате, где находится актив. Я пытаюсь использовать
let boundingBox = this.viewer.utilities.getBoundingBox(false);
this.viewer.navigation.fitBounds(false, boundingBox, true);
Но это увеличит, но не в правильном направлении (если быть точным снаружи)
Можно ли автоматически определить переднюю часть актива, повернуть камеру и увеличить масштаб?
1 ответ
Извиняюсь за долгое ожидание. Команда разработчиков подтвердила, что Revit room не будет переведен в процедуру перевода службы Model Derivative. Поэтому функции, связанные с помещением, или API-интерфейсы не поддерживаются в настоящее время в Forge Viewer.
Кроме того, мы обнаружили, что ваш запрос API для увеличения актива внутри комнаты подходит только для приложения BIM, разработанного с использованием технологии Forge, и на основании этого запроса может быть много разных вариантов использования. Поэтому сложно разработать общую функцию или API для вашего запроса в Forge Viewer. Поэтому он может не поддерживаться в будущих выпусках Forge Viewer.
Однако мы призываем таких разработчиков, как вы, реализовать эту функцию самостоятельно, и вот вам обходной путь:
- Откройте ваш проект Revit с элементами комнаты только через Navisworks и загрузите в Forge для перевода, используйте этот результат также в качестве дополнительной модели вашего приложения Viewer. [Вот немного информации. о комнате от моего коллеги ( ссылка)].
- Конвертировать фрагменты выбранного ресурса в вашем приложении в чистый
THREE.Geometry
, [Вот пример для доступа к информации о сетке. Forge Viewer ( ссылка)]. - вычисление
BoundingSphere
изTHREE.Geometry
отstep. 2
и обрабатывать центр сферы как центральную точку выбранного актива. - Делать
Three.js raytracing
с геометрией комнаты отBoundingSphere
центр, чтобы найти лучи без каких-либо препятствий между камерой и выбранным активом. [Вот пример, который показывает, как использовать трассировку лучей Three.js с помощью Forge Viewer ( ссылка)]. - Лечить лучами, полученными от
step. 4
как линии взгляда. - Выберите желаемую линию взгляда из
step. 5
пересчитать положение, цель и поворот камеры.
PS Так как это всего лишь обходной путь, а не формальное решение. Вы должны использовать его на свой страх и риск.