Оптимизация сторонних 3Д моделей в ArcGIS CityEngine

Оптимизация сторонних 3Д моделей в ArcGIS CityEngine

Часто при импорте 3Д моделей, созданных в специализированном ПО для 3Д моделирования, например в 3ds Max, встречается что грани разбиты на треугольники. Это заметно увеличивает объём 3Д модели, ArcGIS требуется больше времени\ресурсов для её отображения как в ArcGIS Pro, так и в Веб Сцене, при этом эта триангуляция граней не добавляет детальности модели.

В ArcGIS CityEngine существует операция cleanupGeometry, которая позволяет оптимизировать структуру геометрической сетки модели без изменения её внешнего вида за счёт очистки совпадающих элементов. Эта операция позволяет значительно сократить количество граней и вершин в модели.

Модель здания из 3ds Max до оптимизации (12 173 788 рёбер, 6 809 702 граней)

Модель после оптимизации в ArcGIS City Engine.

Модель здания после оптимизации (4 464 852рёбер, 2 706 325 граней)

Параметры операции cleanupGeometry позволяют оптимизировать следующие элементы модели:

  • vertices — Объединяет вершины и удаляет коллинеарные вершины.
  • edges — Объединяет вершины и удаляет общие ребра между смежными гранями.
  • faces — Объединяет вершины и удаляет дубли и вырожденные грани с небольшой площадью.
  • all — Оптимизирует все элементы.

Кроме этого при выполнении cleanupGeometry можно установить параметр допуска (диапазон от 0 до 1), который контролирует точность операции:

  • 0 — Очистка только соответствующих элементов: идентичные вершины, коллинеарные рёбра, копланарные грани или с нулевой площадью. В этом случае форма 3Д модели не изменяется.
  • 1 —Вершины на расстоянии до 1 м объединяются. Рёбра с промежуточными углами до 10 градусов считаются коллинеарными. Нормали с промежуточными углами до 10 градусов считаются копланарными. Грани площадью до 1 м удаляются.
  • [0, 1] — Для значений между 0 и 1 применяется линейная интерполяция.

Для оптимизации этой модели здания я использовал следующий скрипт CGA:

model—>
i(«Mehmon_xona_3d.dae»,yUp,keepSizeAlignPosition)
cleanupGeometry(all,0)

 

В этом скрипте CGA я так же использовал операцию insert , которая позволяет «вписать» 3Д модель в полигон различными методами.

Для автоматизации привязки и размещения 3Д моделей можно использовать атрибута полигона с именем файла модели и возможностями операции insert.

Размещённые оптимизированные модели можно экспортировать в файловую Базу Геоданных виде мультипатчей для работы в ArcGIS Pro либо сразу построить пакет сцены SLPK и опубликовать в виде слоя сцены для отображения в Веб Сцене.

В результате оптимизации 3Д модель быстрее отображается в ArcGIS Pro и Веб Сцене, а также занимает меньше места в памяти Веб Сцены.