Проверка на геометрические коллизии: отличается ли Tangl control от Autodesk Navisworks?

04 июня 2024
image

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

Одновременно с этим в России существуют и развиваются собственные продукты для решения целого ряда задач отрасли. Их создание и развитие далеко не всегда было обусловлено задачами исключительно импортозамещения – зачастую, разработчики  просто хотят создать отечественный продукт, закрывающий отдельные или комплексные потребности строительного рынка.  

Тем не менее среди компаний распространено мнение, что на данный момент среди программного обеспечения (далее ПО) для работы с BIM-моделью нет аналога Autodesk Navisworks по части эффективности проверок на коллизии.

Предлагаю развенчать этот миф – далее в статье разберем, как устроен процесс проверок на коллизии в двух ПО Autodesk Navisworks и Tangl control и убедимся на простых примерах в эффективности данной функции в каждом из ПО. 

Как Tangl определяет коллизии и что в итоге получается?



Ядро расчета коллизий Tangl обеспечивает эффективное выявление наличия пересечений (коллизий) между объектами в 3D-модели.

Основная задача поиска коллизий заключается в определении существования пар объектов, которые пересекаются или находятся на расстоянии друг от друга менее определенного порогового значения (отступа).

Если такие пары обнаружены, это указывает на потенциальные проблемы, которые могут потребовать корректировки или исправления в проекте или модели.


Как видит геометрию нативное ПО?


Обычно, если вы создаете модель в каком-либо профильном ПО, то она описывается различными параметрическими алгоритмами и фигурами, которые они описывают (кубы, сферы, выдавливания и т. д.), а также их сочетаниями.


Такая геометрия легко редактируется, по ней легко вычислять объемы, площади, пересечения и т. д. Однако такая геометрия обычно существует только в ПО, которое еще создает и редактирует.


Как видит геометрию Tangl?


Трехмерная модель, которая приходит в Tangl (где  мы и ищем коллизии), уже представлена в виде сеток треугольников. Каждый объект модели состоит из множества таких треугольников. В этом случае такая геометрия в модели называется триангулированной геометрией.


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


Поэтому любая геометрия, попадающая в Tangl (равно как и в другое ПО для работы с моделями, например, в Navisworks), становится триангулированной.


Все так хорошо? А где подвох?


На самом деле их несколько. Во-первых, разное ПО может по-разному триангулировать сложную геометрию, в которой много криволинейных поверхностей. Это означает, что итоговая геометрия де-факто уже не совсем такая, какая была в исходном ПО.



А во-вторых, анализ пересечений для триангулированной геометрии — математически нетривиальная задача, которая не решается «в лоб». Нельзя просто так взять и определить факт и степень пересечения одного триангулированного объема с другим.


Как же быть?


Tangl фокусируется на многоступенчатом анализе производных от такой геометрии, а также на анализе отдельных треугольников и их групп.

Далее результаты отдельных итераций совмещаются, и определяется итоговый факт пересечения, а также его «расстояние», которого мы коснемся чуть позже.

Также на состав этих этапов и результаты проверки влияет и режим проверки: "По пересечению" или "По объему".



Так, из-за того, что в режиме «По пересечению» центральными составными элементом являются треугольники, коллизия не будет найдена, если отсутствует явное пересечение или сближение этих треугольников.


Напротив, в режиме "По объему" Tangl строит более сложные системы производных от триангулированной геометрии и использует дополнительные этапы в анализе геометрии.

Это дает возможность определять коллизии между объектами, один из которых может находиться внутри другого (вложенные).

Данный метод обычно более медленный, чем метод "По пересечению", а результаты определения расстояния пересечения могут отличаться.


А что означает "расстояние пересечения"?


В отчете по коллизиям есть параметр "расстояние".

Может показаться, что он означает расстояние, на которое объем одного элемента «зашел» в объем другого. Но это не так!



Как мы уже писали выше, работа с триангулированной геометрией как с физическими объемами математически нетривиальна.

А значит, и вычисление расстояния, на которое один объем «вошел» в другой, тоже не является тривиальным, так как никаких объемов, по сути, не существует. Есть только совокупности треугольников.

Возьмем очень простой, но показательный пример. Два пересекающихся шара. С одной стороны это очень простые объекты, а с другой они имеют криволинейные поверхности с множеством мелких треугольников.

В нашем примере две сферы "входят" друг в друга на расстояние 3 метра:




После переноса в Tangl мы получили триангулированную геометрию. Замер примерно по экватору показывает пересечение ~2.995 метра:


Однако, если мы проведем анализ на коллизии "По пересечению", то в отчете увидим совсем другое число: 0.209 метра.


А если "По объему", то увидим расстояние в 2.897 метра, что уже сильно ближе к реальному значению, но немного меньше:


Так что же это за величина?


Все зависит от типа проверки.

В режиме "По пересечению" Tangl обнаруживает пересечение треугольников. Он вычисляет величину пересечения двух конкретных треугольников. Затем он проверяет полученные значения величин (так как обычно в пределах двух объектов пересечения есть в разных треугольниках) и находит максимальное из них.

Иначе говоря, рассчитываются расстояния пересечения не самих сфер, а пересечение треугольников, из которых эти сферы состоят.


В режиме "По объему" Tangl оперирует уже не отдельными треугольниками, а производными от групп треугольников, которые могут составлять объем или его часть.

Иначе говоря, рассчитываются расстояния пересечения не самих сфер, а предполагаемых простых объемов, которые Tangl пытается реконструировать из групп треугольников.


При этом из каждого объекта может получиться много предполагаемых простых объемов, а не один, особенно если геометрия объекта сложная – с выступами, загибами и отверстиями, как на картинке ниже:


Поэтому даже расстояние пересечения "По объему" может сильно отличаться от фактических измерений.

В любом из режимов при проверке с отрицательным отступом (проверка на сближение) Tangl сначала проверяет явные пересечения объектов. Если они пересекаются, возвращается расстояние между ними, но уже со знаком минус.

Если объекты не пересекаются, Tangl находит расстояние между ближайшими треугольниками или простыми объемами в зависимости от типа проверки.


А вот в Navisworks не так!


На самом деле очень даже так! Причем во всем.

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

Наш пример с двумя сферами в Navisworks показал расстояние в 0.211 метров, которое очень похоже на расстояние в Tangl: 0.209 метров:


При использовании режима "По пересечения (консервативно)", который аналогичен режиму "По объему" в Tangl мы получаем также очень схожий результат: 2.996 метров (в Tangl расстояние было 2.897 метров):


Эти небольшие различия связаны с предварительной обработкой модели в Navisworks, в частности, с триангуляцией кривых и поверхностей.


А если взять пример посложнее?


Вот, например, каркас здания. Так он выглядит в Revit:



А вот так в Navisworks:



И в Tangl:



В ходе стандартной проверки на наличие ошибок в системах Navisworks и Tangl были получены следующие результаты:




В обоих продуктах можно увидеть одинаковое количество коллизий — 43. Фактически, все эти коллизии идентичны. Если посмотреть на расстояния между коллизиями, то они будут совпадать в обоих продуктах. (0.074м):




При втором типе проверки ("Консервативном" в Navisworks и "По объему" в Tangl) результаты не совсем одинаковые:




Наиболее заметным является то, что в Navisworks коллизии присутствуют почти на всей модели.

В Tangl также обнаружено больше коллизий, чем при проверке в стандартном режиме, однако их количество меньше, чем в Navisworks (61 штука против более 5000 в Navisworks).

Большое количество коллизий возникает из-за того, что эти алгоритмы могут отмечать много ложных столкновений, когда элементы соприкасаются, но не перекрываются. Важно отметить, что алгоритм Tangl регистрирует гораздо меньше ложных столкновений.

Если сравнить расстояния, которые указаны в конфликтах, найденных обоими продуктами, можно заметить, что они отражают некую среднюю условную длину пересечения. (в примерах ниже — 1 метр в NavisWorks и 2.5 метра в Tangl). В данном конкретном случае Оба расстояния соответствуют толщине конструкций:





Таким образом, мы убедились в том, что хотя различия в Tangl и Autodesk Navisworks есть, но обусловлены они тем, как идет предварительная обработка модели, т.е. дело в триангуляции кривых и поверхностей, о которой я говорил ранее.

Этот пример демонстрирует, насколько близки принципы работы и результаты расчетов Tangl и Autodesk Navisworks. А значит, о безальтернативности последнего речи сегодня не идет. 

Мы надеемся, что теперь вам стало понятно, как работают проверки на коллизии в Tangl и Navisworks, и почему они приводят к таким результатам, которые вы наблюдаете в отчетах.

04 июня 2024
15 мин.
91
Ответим в чат-боте за 5 минут!