На вебинаре «C3D Toolkit для разработки BIM-приложений» впервые о своей работе с C3D-компонентами рассказала команда Pilot-BIM (АСКОН). Система автоматически собирает сводную информационную модель здания/сооружения и организует коллективную работу в среде общих данных. В Pilot-BIM используются два компонента C3D Toolkit — геометрическое ядро C3D Modeler и модуль преобразования полигональных моделей в граничное представление C3D B-Shaper.
В этой заметке публикуем главное из выступления Дмитрия Поскрёбышева, руководителя разработки продуктов линейки Pilot.
Назначение Pilot-BIM
Pilot-BIM — это клиент-серверная система для координации и экспертизы информационных моделей, которые поступают к нам в формате IFC. Далее мы должны обработать эти модели на сервере таким образом, чтобы они мгновенно загружались на рабочих местах, с комфортной навигацией при выполнении экспертизы.
Особенность применения C3D-компонентов заключается в том, что мы используем их в серверной части, которая готовит данные для клиента — триангуляционную сетку для ее загрузки на клиентских местах.
Роль C3D в Pilot-BIM
Мы получаем на вход BIM-объекты через формат IFC. Объект в IFC может быть представлен по-разному. В идеальном случае это твердое тело (солид). Тогда мы с помощью геометрического ядра преобразуем солид в триангуляционную сетку, но делаем это управляемо, под контролем ядра, с количеством триангуляций, необходимым и достаточным, чтобы получить качественную визуализацию.
Другая ситуация, когда из IFC к нам приходит полигональная сетка. В этом случае результат скорее всего будет непредсказуемым, т.к. модель могла быть загружена из интернета или изначально имела сложную геометрию (например, дверная ручка). Для того, чтобы управлять тем, в каком виде эта сетка окажется у клиента, мы используем MeshProcessor, ключевым элементом которого является B-Shaper. Он получает полигональную сетку из IFC, преобразует ее в солид, из которого мы снова управляемо делаем сетку.
Есть еще один сценарий применения геометрического ядра — поиск коллизий. Этот функционал пока находится в разработке и будет готов в 2021 году.
Поддержка многопоточности
Мы используем многопоточную обработку моделей, B-Shaper также работает многопоточно. Это позволяет сокращать время получения общей модели, когда большое количество участников моделирования отправляют свои модели на изменения. В зависимости от мощности сервера, количества ядер, клиент/пользователь может управлять количеством потоков. Соответственно C3D будет работать в том количестве потоков, которое он указал.
Результат обработки модели в B-Shaper
На рисунке показаны две версии одной и той же модели, полученной от пользователя. Слева — до обработки в B-Shaper, справа — после. Кроме основного объекта, на заднем плане есть оборудование.
Как видим, модель очень зашумлена. Если отдать ее клиенту без обработки, то выполнять экспертизу будет сложно. Для экспертизы нужна максимальная выразительность геометрии, чтобы пользователи фокусировали внимание на проектных решениях и давали замечания на модель. Геометрический шум, кроме того, что он утяжеляет саму модель, еще и снижает визуальную выразительность геометрии.
Управление обработкой модели
B-Shaper позволяет задавать настройки и управлять обработкой полученных триангуляций. Мы вытащили эти настройки в пользовательский интерфейс, чтобы задавать абсолютную и относительную точность преобразования. В одной и той же модели могут присутствовать и крупные, и малые объекты — B-Shaper должен применяться и к тем, и к другим. Поэтому добавлена возможность задавать относительную толерантность.
Ниже представлены предпочтительные настройки «по умолчанию», которые мы выработали опытным путем совместно со специалистами C3D Labs. Рекомендуем пользователям именно такой набор настроек применительно к строительным моделям.
Недавно появилась полезная настройка «Сохранить обрабатываемые MeshProsessor тесселяции на диск». Мы получаем от пользователей большое количество реальных моделей, содержащих разные объекты. Они могут иметь разное качество триангуляционной сетки — разрывы, дефекты и пр. Возникла потребность взаимодействовать со специалистами C3D Labs для того, чтобы отдавать им отдельные объекты на исследования и тем самым улучшать работу B-Shaper. Если мы сталкиваемся с проблемной моделью, то включаем эту опцию, сохраняем каждый BIM-объект в отдельный файл в формате .c3d и передаем математикам C3D Labs на анализ. Например, получили от пользователя свод тоннеля метрополитена, после обработки B-Shaper обнаружился дефект геометрии, отправляем математикам, они придумывают решение, в результате выходит новая ревизия C3D, где эта проблема решена и подобные объекты распознаются отлично.
Еще один пример работы C3D B-Shaper — модель здания до и после обработки. Насколько улучшилось восприятие модели за счет уменьшения шума.