Объектная модель Navisworks и его особенности
Введение - о Navisworks
Navisworks, как программа, предназначен для интерактивного отображения больших моделей со сложной геометрией и\или с большим числом полигонов. Производительность Navisworks зависит от доступного аппаратного обеспечения (ресурсы видеокарты, оперативной памяти, виртуальной памяти).
Традиционный подход к созданию моделей для СОД
В обычных сценариях, если аппаратные ресурсы нельзя повысить, то единственное решение добиться производительности при работе со сборками моделей - либо отображать их частично, либо моделировать объекты с меньшим уровнем детализации (LOD). Далее при просмотре сцены решать, объекты в какой детализации отображать - в слабой или детальной. Решение обычно основывается на статических правилах (расстояние от зрителя), иногда с элементами прогнозирования (попытаться заранее определить, сколько времени займет отображение, и рассчитать оптимальное расстояние видимости).
Процесс оптимизации для моделей сложен. Существуют инструментальные средства, которые автоматически формируют упрощенную модель в более низком LOD. Однако все ещё необходимо самостоятельно решать, какие части объектов упрощать, и сколько упрощенной графики включать в целевую модель. Как правило, улучшение идёт до того момента, пока модель не достигнет достаточной производительности на имеющемся оборудовании. Также необходимо будет пересоздавать модель, если она изменяется или разворачивается на менее производительном оборудовании.
Подход в Navisworks
Navisworks использует другой подход. Отрисовка модели упорядочена таким образом, что сперва отображаются наиболее важные (внешние) части модели. Гарантированная минимальная частота кадров легко достигается остановкой отрисовки графики при превышении временного интервала. Такой подход гарантирует, что всякий раз модель отображается с максимально-возможным качеством для доступных аппаратных характеристик ПК.
Механика графической подсистемы Navisworks устроена так, чтобы упрощать объекты при взаимодействии пользователя с моделью (вращение, перемещение, масштабирование). Как только взаимодействие завершается, подсистема начинает заполнять недостающие части геометрии в порядке их важности. Для пользователя это немного похоже на процесс проявления фотографии. Пользователь может прервать процесс в любой момент, осуществив следующую итерацию изменения положения вида.
Navisworks работает автоматически с исходными данными модели. Не требуется этап редактирования геометрии вручную. Не требуются уровни детализации (LOD). Navisworks автоматически определяет оптимальный состав сцены в соответствии со сложностью модели и доступными аппаратными средствами. Одну и ту же модель можно использовать как на графической рабочей станции, так и на ноутбуке.
Архитектура Navisworks
Navisworks отображает модель, используя логические и пространственные структуры данных.
Логическая структура данных соответствует тому, как пользователь представлял бы себе модель. Так, модель AutoCAD (dwg) будет разделена на слои, а Вхождения блоков обеспечат иерархическую структуру. Модель MicroStation разделена на уровни, а элементы сгруппированы в ячейки, обеспечивающие иерархическую структуру.
Логическая структура модели обычно не является оптимальным решением для быстрого отображения структуры данных, поэтому Navisworks поддерживает отдельную пространственно-организованную структуру данных для оптимальной производительности отображения. Пространственная структура данных автоматически перестраивается при изменении логической структуры.
Логическая структура Navisworks представляет собой граф сцены. Граф сцены описывает иерархически структурированные данные (любые данные могут быть иметь несколько вхождений). Топологически граф сцены представляет собой направленный ациклический граф (DAG). Navisworks поддерживает графы сцен с атрибутами (материалами, преобразованиями и т. д.), прикрепленными к узлам графа. Листовые узлы графа представляют геометрию. Совокупный набор атрибутов, применяемых к каждому геометрическому объекту, наследуется от родительских узлов в графе.
Логическая структура исходной модели преобразуется в эквивалентный граф сцены Navisworks. Каждому элементу SceneBase (то есть узлу или атрибуту) присваивается имя и тип, определенные в процессе преобразования модели. Это позволяет максимально точно связать логическую структуру в Navisworks с исходной САПР-системой. Тип элемента SceneBase определяется двумя строками:
- ClassUserName, которая отображается пользователю Navisworks для описания типа. Эта строка может быть локализована и различаться в разных версиях Navisworks. Ее не следует использовать для идентификации какого-либо конкретного типа элемента SceneBase при программировании;
- ClassName, которая никогда не отображается пользователю и одинакова во всех версиях Navisworks. Ее безопасно использовать для идентификации конкретного типа элемента SceneBase.
При преобразовании в пространственную структуру данных иерархический граф сцены логической структуры упрощается, при этом сохраняется вся информация о геометрии. Каждый экземпляр узла Geometry представляется одним или несколькими фрагментами в пространственной структуре данных. Каждый фрагмент содержит упрощенные версии атрибутов Geometry, Transform и Appearance из исходного графа сцены. Для экономии памяти исходные геометрические данные отбрасываются. ![[Pasted image 20260417132126.png]]
В графе сцены единственный способ идентифицировать конкретный экземпляр — это использовать путь через граф сцены от корневого узла (раздела) до данного узла геометрии. Путь можно рассматривать как набор узлов, где каждый узел является дочерним узлом предыдущего узла в наборе. Пути используются для поддержания связей между логическими и пространственными структурами данных. Каждый узел содержит список всех путей, в которых он используется. Каждый фрагмент поддерживает ссылку на путь, который он представляет. Пути используются во всей системе Navisworks для идентификации объектов внутри модели. Например, выделение представляет собой набор путей, как показано ниже. ![[Pasted image 20260417132230.png]]