что такое детализация моделей

OpenSceneGraph: Уровни детализации (LOD) и фоновая загрузка объектов

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Введение

Одной из интереснейших задач, решаемых посредством трехмерной графики является создание «больших миров» — протяженных сцен, содержащих большое число объектов с возможностью неограниченного перемещения по сцене. Решение этой задачи упирается в понятные ограничения, присущие аппаратному обеспечению компьютера.

Типичный пример: «большой мир» при визуализации железной дороги на движке OSG. Не хватает только лангольеров, пожирающих мир за поездом.

1. Использование уровней детализации (LOD)

Техника использования уровней детализации позволяет отображать один и тот же объект более или менее детально, в зависимости от расстояния от него до наблюдателя. Использование этой техники основано на том простом соображении, что мелкие детали трехмерной модели неразличимы на большом расстоянии, значит нет необходимости в их прорисовке. С одной стороны этот прием позволяет уменьшить общее количество геометрических примитивов, выводимых в буфер кадра, а с другой — не терять в дальности отображения объектов сцены, что очень полезно при создании больших открытых миров.

OSG предоставляет инструменты для реализации этого приема через класс osg::LOD, наследуемый от всё того же osg::Group. Этот класс позволяет представить один и тот же объект в нескольких уровнях детализации. Каждый уровень детализации характеризуется минимальной и максимальной дистанцией до наблюдателя, при соблюдении которой происходит переключение отображения объекта в этом уровне детализации.

osg::LOD позволяет задавать данный диапазон сразу при задании дочерней ноды, или позже, применением методы setRange()

Продолжаем мучать цессну и проиллюстрируем описанную технику примером

main.h

main.h

Для начала загружаем модель

Теперь необходимо генерировать несколько (ограничимся для примера двумя) моделек, с более низким уровнем детализации. Для этого скопируем загруженную ноду дважды, применяя методику так называемого «глубокого» копирования класса, для ноды реализуемого методом clone()

Теперь редуцируем геометрию этих моделей, используя класс osgUtil::Simplifer. Степень упрощение модели задается методом setSampleRatio() данного класса — чем меньше передаваемый параметр, тем менее детальной будет модель после применения процедуры редукции

Когда у нас есть модельки разного уровня детализации мы можем зарядить их в корневую ноду, созданную как умный указатель на osg::LOD. Для каждого уровня детализации задаем дистанцию отображения этого уровня

Под FLT_MAX понимается в некотором роде «бесконечно» большое расстояние до наблюдателя. После запуска вьювера получаем следующую картину

Уровень детализации 3

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Уровень детализации 2

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Уровень детализации 1

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Видно, как при отдалении камеры от объекта снижается детальность отображаемой геометрии. Применяя этот прием можно добиться высокой реалистичности сцены при малом расходе ресурсов.

2. Техника фоновой загрузки узлов сцены

В движке OSG представлены классы osg::ProxyNode и osg::PagedLOD, предназначенный для баллансировки нагрузки при рендеринге сцены. Оба класса наследуются от osg::Group.

Узел типа osg::ProxyNode уменьшает время запуска приложения до начала рендеринга, если в сцене огромное количество загружаемых с диска и отображаемых моделей. Он работает как интерфейс к внешним файлам, позволяя выполнять отложенную загрузку моделей. Для добавления дочерних узлов используется метод setFileName() (вместо addChild) чтобы установить имя файла модели на диске и загрузить его динамически.

Узел osg::PagedNode наследует методы osg::LOD и загружает и выгружает уровни детализации таким образом, чтобы избежать перегрузки конвейера OpenGL и обеспечить плавную отрисовку сцены.

3. Динамическая (runtime) загрузка модели

Посмотрим, как происходит процесс загрузки модели с применением osg::ProxyNode.

main.h

main.cpp

Процесс загрузки здесь немного отличается

Вместо явной загрузки модели коровы мы указываем корневой ноде имя файла, где содержится модель и индекс дочерней ноды, куда следует поместить эту модель после её загрузки. При выполнении программы мы получи такой результат

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Видно, что точка обзора выбрана не лучшим образом — камера упирается прямо в зеркальный бок коровы. Это произошло потому, что модель загрузилась уже после запуска рендера и инициализации камеры, когда нода 0 ещё не была видна. Вьювер просто не смог просчитать необходимые параметры камеры. Однако, модель загрузилась и мы может настроить режим её отображения путем манипуляций мышью

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Что происходит в рассмотренном примере? osg::ProxyNode и osg::PagedLOD работают в данном случае как контейнеры. Внутренний менеджер данных OSG будет посылать запросы и загружать данные в граф сцены по мере того, как возникнет необходимость в файлах моделей и уровнях детализации.

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

Движок автоматически обрабатывает узлы, не отображаемые в текущем вьюпорту и удаляет их из графа сцены когда рендер перегружен. Однако, такое поведение не затрагивает узлы osg::ProxyNode.

Как и прокси-узел, класса osg::PagedLOD также имеет метод setFileName() для задания пути к загружаемой модели, однако для его необходимо установить диапазон дистанции видимости, как для узла osg::LOD. При условии, что у нас имеется файл cessna.osg и низкополигональная модель уровня L1 мы можем организовать выгружаемую ноду следующим образом

Нужно понимать, что узел modelL1 не может быть выгружен из памяти, так как это обычный дочерний не прокси-узел.

При рендеринге внешне не видна разница между osg::LOD и osg::PagedLOD, если использовать только один уровень детализации модели. Интересной идеей будет организовать громадный кластер моделей Cessna, используя класс osg::MatrixTransform. Для этого можно использовать например такую функцию

Пример программы реализующей фоновую загрузку 10000 самолетов

main.h

main.cpp

Предполагается, что самолеты будут располагаться на плоскости с интервалом в 50 единиц координат. При загрузке мы увидим, что загружаются только те цессны, что попадаю в кадр. Те самолеты, что исчезают из кадра пропадают из дерева сцены.

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Заключение

Этот урок в цикле об OpenSceneGraph будет последним, выполненным в формате «How To». В рамках двенадцати статей удалось уместить базовые принципы работы и использования OpenSceneGraph на практике. Очень надеюсь, что данный движок стал более понятен русскоязычному разработчику.

Это не означает, что я закрываю тему OpenSceneGraph на ресурсе, напротив, будущие статьи планируется посвятить более продвинутым техникам и приемам применения OSG в разработке графических приложений. Но для этого следует накопить хороший материал и переработать массу англоязычных источников, а на это требуется время.

Но я не прощаюсь, благодарю за внимание и до новых встреч!

Источник

Детализация модели

Уровни детализации, которым можно придерживаться при BIM-проектировании здания, разбиты на 5 основных частей: LOD 100, LOD 200, LOD 300, LOD 400, LOD 500.

LOD состоит из двух составляющих: геометрической – LOD (G) и атрибутивной – LOD (I).

Низкая детализация: LOD 100, LOD 200.

Высокая детализация: LOD 300, LOD 350, LOD 400.

Цифровая копия здания: LOD 500 — образуется при моделировании здания по исполнительной документации или по результатам цифрового (лазерного) сканирования реального здания. Максимально приближена к фактическим параметрам здания (но, естественно, не на 100%).

Выбор уровня детализации при моделировании обуславливается набором задач, которые ставятся для модели на текущем этапе. Важно соблюсти баланс — выполнить достаточный для строительства/эксплуатации уровень детализации и в то же время не перегрузить модель несущественными атрибутивными параметрами и графическими элементами. Описание модели и её наполнение данными должно исходить из принципов целесообразности и рационализма.

Для конкретного проектируемого объекта нужный уровень детализации элементов здания прописывается в Техническом Задании на проектирование BIM-модели (IER). Причем, для разных элементов или систем здания, требуемый уровень детализации может быть различным, поэтому требования по LOD прописываются, как правило, в матричной (табличной) форме. В такой таблице в одном направлении указываются элементы и системы здания, а в другом — их параметры.

Источник

СОДЕРЖАНИЕ

Историческая справка

Такая же структура среды теперь предлагается как способ управления различными деталями, что позволяет избежать ненужных вычислений, но при этом обеспечивает адекватное визуальное качество:

Однако важным моментом является то, что в сложной среде объем информации, представленной о различных объектах в окружающей среде, варьируется в зависимости от доли поля зрения, занятой этими объектами.

Хорошо известные подходы

Хотя представленный выше алгоритм охватывает весь спектр методов управления уровнем детализации, в реальных приложениях обычно используются специальные методы, адаптированные к отображаемой информации. В зависимости от требований ситуации используются два основных метода:

В обоих случаях LOD выбираются на основе некоторой эвристики, которая используется для оценки того, сколько деталей теряется из-за уменьшения детализации, например, путем оценки геометрической ошибки LOD относительно модели с полной детализацией. Затем объекты отображаются с минимальным количеством деталей, требуемым для выполнения эвристики, которая предназначена для минимизации геометрических деталей в максимально возможной степени, чтобы максимизировать производительность при сохранении приемлемого уровня визуального качества.

Подробная информация о дискретном уровне детализации

что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей

Алгоритмы DLOD часто используются в ресурсоемких приложениях с небольшими наборами данных, которые легко помещаются в памяти. Хотя можно использовать алгоритмы, не связанные с ядром, степень детализации информации не очень подходит для такого рода приложений. Этот тип алгоритма обычно легче запустить, поскольку он обеспечивает более высокую производительность и меньшую загрузку ЦП из-за небольшого количества операций.

Дискретный пример LOD

Сравнение и измерения визуальных воздействий

670

Изображениечто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделейчто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделейчто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделейчто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделейчто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей
Вершины140
ПримечанияМаксимальная детализация
для крупных планов.
Минимум деталей,
очень далекие объекты.

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

В следующей таблице сравнивается производительность рендеринга с учетом LOD и метода полной информации ( грубой силы ).

Сравнение и измерения визуальных воздействий

ГрубыйDLODСравнение
Визуализированные
изображения
что такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделейчто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделейчто такое детализация моделей. Смотреть фото что такое детализация моделей. Смотреть картинку что такое детализация моделей. Картинка про что такое детализация моделей. Фото что такое детализация моделей
Время рендеринга27,27 мс1,29 мс21 × уменьшение
Вершины сцены2 328 480109 44021 × уменьшение

Иерархический LOD

Поскольку оборудование ориентировано на большое количество деталей, рендеринг низкополигональных объектов может иметь неоптимальную производительность. HLOD позволяет избежать этой проблемы, группируя различные объекты вместе. Это позволяет повысить эффективность, а также воспользоваться соображениями близости.

Практическое применение

Видеоигры

В популярной игре о строительстве городов Cities: Skylines моды позволяют изменять уровень детализации.

В ГИС и 3D моделировании городов

LOD встречается в ГИС и 3D моделях городов как аналогичная концепция. Он показывает, насколько тщательно были нанесены на карту особенности реального мира и насколько модель соответствует своему аналогу из реального мира. Помимо геометрической сложности, в LOD модели могут учитываться другие показатели, такие как пространственно-семантическая когерентность, разрешение текстуры и атрибуты. Стандартный CityGML содержит одну из самых известных категорий LOD.

Источник

Детализация. Откуда взять детали?

Мне задали этот интересный вопрос, что мне хочется ответить на него развернуто, разложив все, в том числе для себя самой, по полочкам.

Итак, откуда взять детализацию, если хочется, но не получается? Вопрос был про костюм, но это можно применить практически к любому дизайну рукотворных предметов.
Итак, предположим у нас есть персонаж. Мы определили общие формы, направление дизайна и силуэт. На этом этапе я останавливаться не буду, потому что это не касается темы статьи. В качестве иллюстрации я использую персонажа, которого меня попросили нарисовать участники группы, когда я спросила их совета. Это шаманка в сай-фай сеттинге. Основа, которую я использовала для ее дизайна выглядит так.

Этап третий. Мелкие детали.
Здесь у меня все смешалось, но я могу для вас выделить три различных источника этого этапа детализации, и добавить еще один, которого здесь нет.

Также на этом этапе, как вы можете заметить, я изменила маску, когда поняла, что ее форма выглядит недостаточно понятно.

Дальше у меня случился кризис с дизайном обуви. Я не хотела ставить пожилую даму на каблуки (а еще я считаю, что каблуки отправятся на ту же свалку истории, где пылятся котурны, бинтование ног, корсеты, гульфики и фижмы, в будущем им не место), но мне нужен был оригинальный дизайн, который я не могла родить из головы. Поэтому я спросила всесильный гугл и, после определенных боданий с ним, я нашла переосмысленную на современный лад обувь ниндзя. Так называемые ниндзя-шуз. Они идеально вписались в дизайн, и теперь я хочу купить себе такие безумные боты 🙂
Чуть позже мне понадобились примеры эстетики и материалов футуристическоо дизайна, потому что несмотря на все мои усилия, я еще не привыкла к сай-фай индикаторам в дизайне персонажей.
Как видите, референсы мне понадобились сперва для анализа, потом для поиска дизайнерских решений, которые ставили меня в тупик, а потом для контроля стиля.

Напоследок хочу поделиться парой приемов, которыми пользуюсь сама. Это не обязательно, просто мой подход:

2. Добавьте пару элементов ландшафта. Поставьте персонажа на землю. Что это будет за земля? Зеленая трава, каменная брусчатка, деревянный пол, футуристические плиты, лавовое поле? Персонаж не сможет общаться с простым серым фоном, но сможет общаться с парой мелких деталей, указывающих на ландшафт.

Вернемся к шаманке. При прорисовке, как обычно, я никаких деталей уже не добавляю, только привожу все в порядок.

Но на финальном этапе кое-что добавила. В самом конце работы я критически оцениваю, что получилось, и подправляю проблемы с пропорциями (это удобнее всего делать, когда персонаж собран на одном слое), светом, цветом, добавляю немного шума.


Шум
это последний источник детализации. Я имею в виду не фильтр в фотошопе, а мелкие случайные детали, которые можно набросать там, где ничего определенного в голову не приходит. Их можно делать текстурными кистями, или кусками фото-текстур в разных режимах наложения. Добавлять немного хаоса там, где поверхность слишком идеальная и неживая. С шума можно начинать, набирая общее впечатление от персонажа случайными мазками текстурных кистей, но я не люблю так работать, мне нравится продумывать персонажа в скетче. Собственно, если вернуться назад, то вот таким был скетч.

На нём достаточно шума и случайных мазков, которые порой вырастают во что-то осмысленное. Тот случай, когда на скетче какая-то невнятная каляка, но понятно, что ей здесь место и нужно решить, что же это такое будет. Некоторые художники вообще работают исключительно через осмысление таких случайных мазков. Это отличный способ для тех, кто полагается не на рациональность, а на порывы подсознания. В подсознании скрыт колоссальный творческий потенциал. Имеет смысл давать хотя бы немного места подсознанию, спонтанным деталям или деталям, чье значение для вас загадка.
Спасибо всем, кто осилил статью! Вы можете писать свои вопросы и комментарии.

Источник

Уровни детализации цифровой модели: стандарт LOD

«…Вполне логично, что уровень детализации BIM-модели обычно определяется целесообразностью при решении поставленной задачи. Например, если модель жилого дома нужна для оценки экономической эффективности проекта, то нет смысла для этого прорабатывать систему крепления подоконников. Вроде бы все понятно. Но понимание уровня проработки модели у всех может быть свое, особенно — у заказчика и исполнителя (даже меняться в процессе взаимоотношений), что создает немалые трудности в работе.

В результате в 2008 году Американским Институтом Архитектуры (AIA) был впервые документально определен LOD (Level of Development) — уровень проработки (детализации) модели. На сегодняшний день для выполнения BIM-моделей действует усовершенствованный протокол AIA G202-2013, в котором для упорядочения взаимоотношений между участниками проектно-строительного процесса прописаны шесть базовых уровней детализации информационных моделей зданий LOD100, LOD200, LOD300, LOD350, LOD400 и наивысший LOD500.

К сожалению, в нашей стране про LOD пока еще мало кто слышал. Тем не менее, всегда, когда речь заходит о внедрении BIM, на первый план выходят вопросы глубины проработки модели, которые в настоящее время решаются у нас просто интуитивно. Часто сами компьютерные программы допускают возможность создавать библиотечные элементы, имеющие несколько уровней детализации, а затем, уже в модели, управлять переключением этих уровней в зависимости от ситуации.

Более сложной ситуация становится тогда, когда в модель вставляются элементы, имеющие только высший (для конкретной ситуации — чрезмерный) уровень геометрической проработки. В этом случае единственный выход — сделать свой, упрощенный элемент и использовать его в модели»

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *