Forum

Author Topic: Использование памяти: 3д-модель vs тайловая модель  (Read 10471 times)

alexl

  • Newbie
  • *
  • Posts: 6
    • View Profile
Здравствуйте!

Из беглого прочтения документации я понял, что тайловая модель - это та же 3d-модель (mesh 3d), но дополненная слоями с пониженной детализацией: чтобы близкие объекты показывать как есть, в исходной, максимальной детализации, дальние же берутся из слоёв с пониженной детализацией. Таким образом скорость отрисовки больших пространств драматически возрастает. Как мультитриангуляция.

Т.е. построить тайловую модель сложнее, чем просто модель. Нужны дополнительные структуры и расчёты.
Однако, построение 3d-модели требует значительно больших объёмов оперативной памяти в сравнении с тайловой моделью.

Например, если взять 800 фотографий 12Мп, то по ним без труда строится плотное облако 170 млн точек (качество = высокое). По облаку успешно строится тайловая модель (32Гб оперативки). Но просто 3д-модель без текстуры и без цветов вершин на этих же 32Гб построить по такому облаку не удастся ни в каком виде (даже если задать количество треугольников 1000, и выключить интерполяцию).

1. Как такое возможно? Почему эта 3д-модель так прожорлива? Прожорливее тайловой модели.
2. Можно ли (будет) как-то преобразовать построенную тайловую модель в 3д-модель?
3. 3д-модели местности/рельефа имеют такую особенность: большая площадь (десятки Га), небольшая высота (десятки метров). Удвоение площади (числа фотографий) потребует вдвое больше памяти при построении 3д-модели. Но если вручную задать размер области, и поочерёдно построить модель сначала для одной половины, а потом для другой половины, то требования по памяти останутся без изменений. Останется только склеить половинки между собой. Можно ли (планируется ли) как-то автоматизировать этот процесс? Построение 3д-модели больших площадей, путём разбивки плотного облака точек на области меньшего размера с последующей склейкой полученных моделей. Тогда не пришлось бы думать, как организовать 256Гб на машину, и хватило бы типичных 16Гб для модели местности любой сложности.

alexl

  • Newbie
  • *
  • Posts: 6
    • View Profile
Актуально для 1.4.3

Alexey Pasumansky

  • Agisoft Technical Support
  • Hero Member
  • *****
  • Posts: 14813
    • View Profile
Добрый день,

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

Потребление для построения тайловой модели существенно ниже, т.к. не требуется единовременная загрузка всех данных в память. Дополнительно снизить потребление можно включив опцию Тонкого Распределения Задач для тайловой модели в окне Сетевых Настроек для PhotoScan Pro.

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

Однако, обратите внимание, что существует два основных режима построения обычной полигональной модели: Произвольный (3D) и Карта Высот (2.5D). Первый вариант значительно более ресурсоёмкий, а второй обычно рекомендуется для использования при реконструкции больших площадей по данным аэрофотосъёмки. Возможно даже, что этап построения полигональной модели вообще не важен, т.к. из плотного облака можно строить ЦМР напрямую.

Что же касается построения модели по частям с последующей сшивкой, то, возможно, Вам будет полезен следующий скрипт:
https://github.com/agisoft-llc/photoscan-scripts/blob/master/src/split_in_chunks_dialog.py
который как раз и строит меш модель по частям, на основе единого выравнивания. Т.е. исходный блок дублируется несколько раз и внутри каждого блока изменяется область реконструкции.
Best regards,
Alexey Pasumansky,
Agisoft LLC

alexl

  • Newbie
  • *
  • Posts: 6
    • View Profile
Спасибо, скрипт толковый, изучаю.