Веб-приложения для просмотра IFC: обзор библиотек
Аннотация
Данная статья представляет собой детальный анализ современных библиотек, предназначенных для разработки веб-приложения с использованием информационных моделей формата IFC. В статье акцентируется внимание на важности Open Source решений, которые не только способствуют доступности технологий для широкого круга пользователей, но и обеспечивают возможность гибкой модификации и интеграции в существующие рабочие процессы. Рассматриваемые библиотеки демонстрируют разнообразные подходы к визуализации и взаимодействию с IFC-моделями, подчеркивая их значимость для развития экосистемы BIM и повышения эффективности проектирования и управления строительными проектами. Статья будет полезна как разработчикам, так и специалистам в области BIM, стремящимся выбрать наиболее подходящее решение для своих нужд.
Введение
Формат IFC (Industry Foundation Classes) — один из самых популярных для хранения и обмена данными в строительстве. Чтобы работать с IFC-моделями удобно и эффективно, нужны подходящие инструменты.
В этой статье мы рассмотрим популярные open source библиотеки, которые позволяют создавать веб-приложения для просмотра моделей IFC:
- Ifc.js;
- Xbim;
- Xeokit.
Вы узнаете о возможностях каждой библиотеки, их плюсах и минусах. Это поможет выбрать подходящее решение для вашего проекта: будь то демонстрация здания клиенту, визуализация проекта на сайте или создание платформы для совместной работы.
Критерии сравнения библиотек
Для сравнения библиотек мы сформировали критерии. Они разбиты на группы и подгруппы в зависимости от их назначения.
Номер |
Критерий |
Функциональность |
|
- Поддержка IFC |
|
1 |
Поддержка версий стандарта IFC (IFC2x3, IFC4) |
- Визуализация |
|
2 |
3D-рендеринг (простая визуализация, материалы, текстуры, освещение) |
3 |
Возможность навигации по модели (панорамирование, вращение, масштабирование, перемещение) |
4 |
Поддержка различных режимов отображения (каркас, сплошной, заштрихованный) |
- Взаимодействие |
|
5 |
Выбор и выделение объектов |
6 |
Получение информации об объектах (идентификатор, свойства) |
7 |
Возможность изменения свойств объектов |
8 |
Поддержка пользовательского интерфейса для управления моделью (панели инструментов, меню) |
Производительность |
|
- Скорость загрузки и рендеринга |
|
9 |
Время загрузки модели в зависимости от ее размера и сложности |
10 |
Скорость рендеринга и плавность анимации |
- Оптимизация |
|
11 |
Сжатие данных модели для уменьшения размера файла; |
12 |
Использование ускоряющих графических процессоров (GPU) для оптимизации визуализации |
Доступность |
|
- Простота интеграции |
|
13 |
Доступность документации, примеров и учебных материалов |
14 |
Простота подключения библиотеки к проекту |
15 |
Возможность использования с различными веб-фреймворками |
- Цена |
|
16 |
Стоимость лицензии (бесплатная, платная) |
- Открытый код |
|
17 |
Возможность использования библиотеки с открытым кодом |
- Поддержка платформ |
|
18 |
Поддержка различных браузеров (Chrome, Firefox, Safari, Edge) |
19 |
Поддержка различных операционных систем (Windows, macOS, Linux) |
Ifc.js
Ifc.js — это библиотека JavaScript, предназначенная для работы с IFC-моделями в веб-приложениях. Она позволяет загружать, отображать и взаимодействовать с 3D-моделями IFC непосредственно в браузере. Библиотека построена на основе Three.js, популярной библиотеки для работы с 3D-графикой в вебе, и использует WebGL для рендеринга.
Основные компоненты:
- web-ifc - основной компонент, который отвечает за парсинг и обработку IFC-файлов. Он позволяет загружать IFC-модели, извлекать данные о компонентах, их свойствах и взаимосвязях. Основная задача — обеспечить доступ к информации в IFC-файлах и подготовить её для дальнейшего использования.
- web-ifc-three – компонент, который связывает библиотеку three.js с web-ifc. Он отвечает за визуализацию 3D-моделей в браузере, используя возможности three.js. Позволяет отображать геометрию, материалы и другие визуальные аспекты IFC-объектов, обеспечивая интерактивность и рендеринг.
- web-ifc-viewer - высокоуровневый компонент, который объединяет функциональность предыдущих двух библиотек. Он предоставляет готовый интерфейс для отображения и взаимодействия с IFC-моделями в веб-приложениях. Включает в себя инструменты для навигации по модели, выбора объектов и отображения их свойств, что делает его удобным для конечных пользователей.
Данные компоненты можно использовать в комбинированном формате. В статье будут рассмотрены три варианта организации: web-ifc-viewer, Three.js + web-ifc и Three.js + Open Bim Components. Скорость обработки модели с помощью библиотеки web-ifc составляет 50 секунд на модель размером 20 мегабайт. Модель размером 559 мегабайт не загрузилась из-за ограничений библиотеки. При использовании библиотеки от этих же разработчиков Open Bim Components конвертация элементов моделей происходит в специальные геометрические фигуры, которые более оптимизированы и являются оболочкой над InstancedMesh из ThreeJS. Это позволяет загружать модель размером 20 мегабайт за 5 секунд и модель размером 559 мегабайт за 10 секунд. Однако важно следить за утечкой памяти, которая может сильно повлиять на производительность. Не обращать внимание на использование памяти - распространенная ошибка в самом начале изучения. Создатели библиотеки указывают на критичность реализации интерфейса IDisposable и рекомендуют придерживаться правил создания компонентов.
Множество полезного функционала, по типу загрузки и последующего многократного использования, мини-карты модели, измерительные утилиты, возможность скрывать элементы моделей и поддержка UI с различными элементами (кнопки, таблицы, строки под ввод данных и т.д.) делают библиотеку эффективной и конкурентоспособной.
Можно отметить низкий порог вхождения, если пользователь знаком с базой JavaScript/TypeScript. Обучающий курс на официальном сайте и активное сообщество помогут быстро начать работу с ThreeJS и инструментами.
Все библиотеки кроме web-ifc являются Open Source решениями и имеют MIT лицензию, соответственно свободны в использовании. Библиотека web-ifc имеет лицензию Mozilla Public License Version 2.0. Данный тип лицензии не является вирусной лицензией. Это означает, что она не требует, чтобы производные работы, созданные на основе кода, лицензированного под MPL-2.0, также были лицензированы под MPL-2.0. Таким образом, MPL-2.0 предоставляет гибкость и позволяет интегрировать её с другими проектами без необходимости открывать весь исходный код вашего проекта.
Xbim
Xbim — это набор инструментов и библиотек для работы с BIM-данными, созданный на платформе .NET. Он предоставляет разработчикам возможность интегрировать функционал работы с IFC-моделями в свои приложения. Xbim поддерживает как настольные, так и веб-приложения, что делает его универсальным решением для работы с BIM.
Основные компоненты:
- Xbim Essentials - библиотека для работы с IFC-файлами. Она позволяет загружать, анализировать и модифицировать данные IFC.
- Xbim Geometry: Компонент для рендеринга 3D-геометрии из IFC-моделей. Он обеспечивает визуализацию сложных объектов и позволяет работать с их геометрией.
- Xbim WebUI: Набор инструментов для создания веб-приложений, которые могут отображать и взаимодействовать с IFC-моделями.
Библиотека Xbim - мощная среда, в которой задействована как серверная часть с логикой работы с объектами, так и область отображения. Основная особенность в том, что сам веб-просмотрщик не работает с моделями формата IFC, ему необходим его собственный формат WEXBIM. Модель в данном формате можно получить создав простой .NET проект для конвертации IFC в WEXBIM с помощью библиотек Xbim Essential и Xbim Geometry. Благодаря конвертации модели в данный формат, проект размером в 20 мегабайт загружается за 2 секунды при этом сама конвертация заняла 6 секунд. На конвертацию модели размером 559 мегабайт ушло 120 секунд и на загрузку 5 секунд. Если есть необходимость в более широком функционале и эластичности отображения, то есть возможность использовать THREE.js и модели в формате GLTF. Конвертация модели размером 20 мегабайт прошла за 6 секунд, для модели размером 559 мегабайт ушло 130 секунд. Загрузка моделей размером 20 и 559 мегабайт прошла за 2 секунды.
Помимо отображения модели Xbim, доступно полное топологическое и геометрическое манипулирование над объектами моделей. Таким образом, с помощью данной библиотеки можно создавать сервисы по обработке моделей различных форматов с возможностью дальнейшей передачи на WebGL. При необходимости Xbim toolkit можно использовать полностью на desktop.
Порог вхождения низкий при базовых знаниях языка и фреймворка. Разработчики предоставляют обучающий курс и документацию для изучения.
Библиотеки находятся под лицензией Common Development and Distribution License. Она позволяет использовать, модифицировать и распространять программное обеспечение, но при этом требует, чтобы производные работы также были лицензированы под CDDL, если они основаны на исходном коде, который распространяется под этой лицензией. Это делает ее более совместимой с другими лицензиями и менее строгой в отношении требований к распространению производных работ.
Xeokit
Xeokit — это библиотека для визуализации 3D-моделей, разработанная специально для работы с IFC и другими форматами BIM. Она основана на WebGL и предоставляет разработчикам возможность создавать интерактивные веб-приложения, которые позволяют пользователям просматривать, анализировать и взаимодействовать с трехмерными моделями зданий.
Решение сфокусировано на визуальном слое. Оно не предоставляет возможности каких-либо топологических изменений модели, лишь отображение её у клиента и создание удобного интерфейса. Для отображения низко детализированных моделей может использоваться формат IFC с подключением библиотеки web-ifc. Для нагруженных проектов необходимо конвертировать модели в формат XKT, что позволяет в разы сократить время загрузки. Время, затраченное на загрузку файла формата IFC размером 20 мегабайт - 13 секунд. Модель размером 559 мегабайт не загрузилась из-за ограничения библиотеки. Конвертация модели размером 20 мегабайт в формат XKT прошла за 23 секунды и загрузка за 1 секунду. Конвертация модели размером 559 мегабайт закончилась ошибкой конвертации. Конвертировать модели в формат XKT можно достаточно просто, разработчики предоставили git репозиторий, который можно клонировать на локальную машину и производить конвертации через командную строку. Также для оптимизации взаимодействия с большими моделями разработчики предоставляют плагин FatNavPlugin, который понижает качество рендера модели при передвижении.
Так как весь функционал направлен на эффективную визуализацию, то xeokit предоставляет множество интересных и полезных плагинов:
- AnnotationsPlugin - позволяет создавать заметки на модели;
- AngleMeasurementsPlugin - позволяет по координатам вычислять градус угла;
- FaceAlignedSectionPlanesPlugin - позволяет создавать разрезы в модели;
И множество иных плагинов, позволяющие сделать продукт эффективнее и более привлекательным при просмотре. Именно такие возможности и доступность делают эту библиотеку популярной.
Библиотека находится под лицензией GNU Affero General Public License. AGPL считается вирусной лицензией. Это означает, что, если вы используете или модифицируете программное обеспечение, лицензированное под AGPL, и распространяете его (включая использование через сеть), вы обязаны сделать доступным исходный код вашей модификации под той же лицензией. Это требование распространяется даже на программное обеспечение, которое не распространяется в традиционном смысле, а используется, например, на сервере.
Итоги сравнения библиотек
Мы рассмотрели популярные библиотеки для создания веб-приложений просмотра моделей IFC: Ifc.js, Xbim и Xeokit. По результатам анализа сформировали таблицу соответствия критериям.
Номер |
Критерий |
Ifc.js |
Xbim |
Xeokit |
|
Функциональность |
|||||
- Поддержка IFC |
|||||
1 |
Поддержка версий стандарта IFC (IFC2x3, IFC4) |
|
|
||
- Визуализация |
|||||
2 |
3D-рендеринг (простая визуализация, материалы, текстуры, освещение) |
|
|
||
3 |
Возможность навигации по модели (панорамирование, вращение, масштабирование, перемещение) |
|
|
|
|
4 |
Поддержка различных режимов отображения (каркас, сплошной, заштрихованный) |
|
|
||
- Взаимодействие |
|||||
5 |
Выбор и выделение объектов |
|
|
||
6 |
Получение информации об объектах (идентификатор, свойства) |
|
|
||
7 |
Возможность изменения свойств объектов |
|
|
|
|
8 |
Поддержка пользовательского интерфейса для управления моделью (панели инструментов, меню) |
|
|
|
|
Производительность |
|||||
- Скорость загрузки и рендеринга |
|||||
9 |
Время загрузки моделей 20 и 559 мегабайт в секундах |
web-ifc-viewer – 53 и 55 three.js + web-ifc – 50 и не загрузилась |
wexbim – 6 конвертация, 2 загрузка и 120 конвертация, 2 загрузка |
ifc – 13 и не загрузилась xkt – 23 конвертация, 1 загрузка и не загрузилась |
|
10 |
Скорость рендеринга и плавность анимации |
В связи с тем, что исходный код движка рендера одинаковый во многом, рендер одинаково быстрый после загрузки и только Xeokit использует дополнительный плагин для ускорения рендера тяжелых моделей за счет понижения качества. Остальные решения при увеличении размера модели проседают по производительности. |
|||
- Оптимизация |
|||||
11 |
Сжатие данных модели для уменьшения размера файла; |
Нет возможности динамично урезать, только заранее перевести в Compressed Texture Format |
Только для системы в облаке через Xbim flex |
|
|
12 |
Использование ускоряющих графических процессоров (GPU) для оптимизации визуализации |
Так как в основе лежит WebGL, то возможно ускорение его и только через настройку самой машины, на которой происходит обработка модели |
|||
Доступность |
|||||
- Простота интеграции |
|||||
13 |
Доступность документации, примеров и учебных материалов |
Переход на That Open, сместил фокус на новые библиотеки, поэтому документация не развивается, но остается также полезной, как и сообщество. |
Так как являются лидирующими на рынке и сообщество растет с каждым днем, то на просторах интернета большое количество обсуждений и документаций. |
||
14 |
Простота подключения библиотеки к проекту |
Все проекты направлены на низкий порог вхождения и независимую работу, поэтому легки в подключении. |
|||
15 |
Возможность использования с различными веб-фреймворками |
Библиотеки независимы от фреймворков, есть возможность подключаться к любым, главное использование WebGL. |
|||
- Цена |
|||||
18 |
Стоимость лицензии (бесплатная, платная) |
Все библиотеки являются бесплатными. |
|||
- Открытый код |
|||||
19 |
Возможность использования библиотеки с открытым кодом |
Библиотеки не имеют вирусные лицензии |
Библиотека имеет вирусную лицензию |
||
- Поддержка платформ |
|||||
20 |
Поддержка различных браузеров (Chrome, Firefox, Safari, Edge) |
Главное требование от браузера – это поддержка WebGL, который на данный момент поддерживается практически всеми браузерами, а также многие библиотеки имеют встроенный функционал для проверки совместимости с браузером. |
|||
21 |
Поддержка различных операционных систем (Windows, macOS, Linux) |
Так как все библиотеки распространяются через npm и nuget, а доступ к готовому продукту осуществляется через веб-клиент, то проблем с доступом и использованием нет, главное поддержка браузера и доступ к площадкам распространения. |
Вывод
Выбор оптимальной библиотеки зависит от конкретных потребностей проекта.
- Ifc.js — универсальное решение с хорошей производительностью, но требует внимательного управления памятью.
- Xbim — подойдёт для сложных проектов, где нужно больше инструментов для работы с моделями.
- Xeokit — лучшее решение для быстрой визуализации и простоты использования.
Нет комментариев