Гидродинамическое моделирование (CFD) на рельефе с помощью MantaFlow и визуализация результатов в ParaView
Дисциплина Computational fluid dynamics(CFD) или, на русском языке, Вычислительная гидродинамика изучает поведение различных потоков, в том числе вихревых. Это и моделирование цунами, и лавовых потоков, и выбрасываемых из жерла вулкана камней вместе с лавой и газами и многое другое. Посмотрим, как можно использовать совместно MantaFlow и ParaView, реализовав на встроенном в MantaFlow языке Python необходимые функции конвертации данных. Как обычно, исходный код смотрите в моем GitHub репозитории: MantaFlow-ParaView.

Визуализация шлейфа извержения вулкана. Мы уже видели эту картинку в серии статей про визуализацию в ParaView Как визуализировать и анимировать (геофизические) модели, обсуждали создание геологических моделей в статье Методы компьютерного зрения для решения обратной задачи геофизики, а теперь поговорим и о моделировании дыма.
Введение
Для визуализационного моделирования зачастую используются упрощенные методы, пренебрегающие трением, в то время как для физического моделирования необходимо моделирование уравнений Навье-Стокса, учитывающих трение. Конечно, результаты физического моделирования могут быть использованы и просто для визуализации, хотя их получение более ресурсоемкое. В то же время, многие физические процессы не могут моделироваться без учета трения, к примеру, пирокластический поток. К счастью, за последние несколько лет физическое моделирование потоков стало доступнее, в том числе, за счет методов машинного обучения — стало возможным точную модель низкой детализации дополнительно детализировать с помощью соответствующих методов (на мой взгляд, благодаря самоподобию процессов на разных масштабах, это вообще одно из самых удачных применений техник машинного обучения). Теперь и в открытой программе трехмерной графики Blender используется именно физическое моделирование на основе открытого фреймфорка MantaFlow.
Как и в случае с методами спутниковой интерферометрии, см. предыдущую статью Геология XXI века как наука данных о Земле, методы моделирования потоков позволяют узнать многое о происходивших процессах — именно узнать, а не предположить. Действительно, моделируя лавовые потоки на палеорельефе (построенным, к примеру, путем решения обратной задачи геофизики), мы можем сравнить полученную модель с реально существующими [застывшими] лавовыми потоками и полями, поскольку они достаточно прочные и могут хорошо сохраняться многие и многие миллионы лет. Построенная модель позволяет изучить залегание различных слоев там, где у нас нет геологической информации, — зачастую, один и то же вулкан извергался многократно из разных жерл, при этом потоки лавы разных извержений [и разного состава] могут перекрываться. Кроме того, эта же модель покажет неувязки между используемой моделью палеорельефа и существующими лавовыми проявлениями — и позволит внести уточнения. То есть, вместо сложно формализуемой геологической интуиции, мы можем работать с моделью — в том числе, изменять параметры и оценивать, насколько разные геологические предположения вообще разумны. Поскольку я сам не геолог, а физик, для меня путь моделирования представляет вполне понятный интерес. В результате, геолог может точнее оценить возможные области залегания полезных ископаемых и их потенциал — разумеется, в геологическом исследовании вовсе не ставится задача обойтись без геолога, но, как и везде, ценность результатов согласуется с известным принципом информатики: «Мусор на входе — мусор на выходе», поэтому каждая возможность уточнить, заверить и дополнить имеющиеся данные в буквальном смысле на вес золота (или нефти, или воды. ).
MantaFlow
Как уже сказано выше, MantaFlow это хорошо известный и поддерживаемый программный пакет, а также, на его основе есть несколько интересных производных проектов: с большим акцентом на использование машинного обучения PhiFlow, с возможностью вычисления параметров процесса по набору снимков reconstructScalarFlows и другие.
MantaFlow позволяет моделировать ламинарные и турбулентные потоки, в том числе, пламя и клубы дыма и потоки воды и многое другое. Для примера я построил несколько моделей, чтобы оценить качество моделирования. Например, эта модель потока воды выглядит отлично и даже видны формирование и разрыв воздушных пузырей в потоке:
А это модель заполнения потоком воды заданного рельефа:
Рубрика: Материалы и текстуры

Сериал Arcane это вершина художественного стиля и будучи немного связанным с творчеством трудно было пройти мимо. Граната Jinx яркий пример креатива и изобретательности. Так умело совместить игрушку с оружием в образе немного чокнутой девушки… В общем в этом уроке мы будем моделировать гранату и рисовать для нее текстуры.

25 апреля 2019
Артем Слаква
Создание бесшовной текстуры в Blender
В этом уроке мы научимся из любых трехмерных объектов создавать бесшовную PBR-текстуру, которую в последствии можно использовать в игровых движках, для создания качественного окружения и экономии полигонов.

20 марта 2019
Артем Слаква
Домик шамана в Blender (часть 3/3)
Вот мы и добрались до заключительной части данной серии уроков. Если вы прошли все этапы первых двух частей, то вы уже большой молодец. Здесь же мы создадим все текстуры и материалы, и выполним финальный рендер.

23 июля 2018
Артем Слаква
Создание блендера в Blender (материалы 3/3)
В заключительной части серии из трех уроков по созданию блендера в Blender мы завершим его создание и выполним финальный рендер. В первой и второй частях мы моделировали сам блендер, а в этом уроке настроим материалы с помощью Cycles, окружение и произведем сам рендеринг.

4 апреля 2018
Артем Слаква
Создаем спатифиллум в Blender
В сегодняшнем уроке мы будем создавать спатифиллум в Blender. При создании цветка мы будем моделировать, выполнять UV-развертку, использовать систему частиц и нодов. Урок не сложный, но на его выполнение потребуется время, так как в нем содержится определенное количество рутинной работы.

13 декабря 2017
Артем Слаква
Создание винтажного микрофона (часть 2/2)
В этом уроке мы закончим короткую серию из двух уроков по созданию винтажного микрофона в Blender. В первой части мы моделировали сам микрофон, а во второй части мы закончим моделировать подставку и кабель для микрофона, настроим материалы и освещение, а также выполним финальный рендеринг.

7 ноября 2017
Артем Слаква
Создание наковальни в Blender (часть 3)
В этом уроке мы завершим создание наковальни в Blender. В первой части мы моделировали наковальню, во второй создавали развертку и карту нормалей, а в третьей завершим создание материала и выполним финальный рендеринг.

18 августа 2017
Артем Слаква
Запекание карты нормалей из материала в Cycles
Если вы когда-либо пытались запечь нормали в Blender, используя движок рендеринга Cycles, вы, вероятно, замечали следующее поведение: процесс запекания использует только информацию о геометрии меша и игнорирует вариации нормалей, созданные вашим материалом. Это означает, что если вы используете карту нормалей и/или карту рельефа, то они не будут учитываются.

19 июня 2017
Артем Слаква
Почему игры используют карты нормалей?
Чтобы хорошо выглядеть, ассеты игр ААА-класса, такие как персонажи, оружие и элементы окружения в значительной степени полагаются на карты нормалей. Но что такое карты нормалей и почему они так широко распространены?
Авторизация

Рубрики
- Анимация и риггинг
- Загрузки
- Материалы и текстуры
- Моделирование и скульптинг
- Новости и обзоры
- Основы Blender
- Рендеринг и освещение
- Симуляция и частицы
- Скриптинг на Python
- Создание игр в Blender
Метки
О сайте
На данном сайте Вы сможете найти множество уроков и материалов по графическому
редактору Blender.
Контакты
Для связи с администрацией сайта Вы можете воспользоваться следующими контактами:
Следите за нами
Подписывайтесь на наши страницы в социальных сетях.
На сайте Blender3D собрано огромное количество уроков по программе трехмерного моделирования Blender. Обучающие материалы представлены как в формате видеоуроков, так и в текстовом виде. Здесь затронуты все аспекты, связанные с Blender, начиная от моделирования и заканчивая созданием игр с применением языка программирования Python.
Помимо уроков по Blender, Вы сможете найти готовые 3D-модели, материалы и архивы высококачественных текстур. Сайт регулярно пополняется новым контентом и следит за развитием Blender.
Почему игры используют карты нормалей?

Чтобы хорошо выглядеть, ассеты игр ААА-класса, такие как персонажи, оружие и элементы окружения в значительной степени полагаются на карты нормалей. Но что такое карты нормалей и почему они так широко распространены?
Балансировка между качеством и производительностью
Игры должны работать в режиме реального времени со скоростью 60+ кадров в секунду. Это означает, что высокополигональные модели, обычно используемые для 3D-печати или анимации, не будут хорошо работать в игре, так как они будут значительно замедлять производительность игры.
Для обеспечения плавной работы игры необходимы модели с низким уровнем полигонов.
Но в то же время геймеры ожидают красивые визуальные эффекты с высоким уровнем детализации. Разработчики игр должны иметь возможность использовать большое количество моделей в одной сцене, не говоря уже о различных эффектах освещения и физике.
Итак, как же найти компромисс между высокой производительностью игры и реалистичными визуальными эффектами?
Карты нормалей — лучший компромисс, который обеспечивает высокое качество модели и высокую производительность игры. Секрет в том, что они позволяют нам получить большее количество деталей при использовании меньшего количество полигонов.
Имитация геометрии с помощью текстур

Как это работает? Карты нормалей (Normal maps) и карты смещения (Displacement maps) представляют собой особые виды текстур, которые влияют на то, как ведет себя свет при попадании на поверхность. Они создают иллюзию глубины, сообщая лучу света отскакивать от имитационных особенностей поверхности, даже если на самом деле их там нет.
Это позволяет нам достичь высокого уровня детализации, не обременяя игровой движок сложной геометрией. Звучит слишком хорошо, чтобы быть правдой? Имейте в виду, что есть некоторые ограничения для данной техники.
Карты нормалей VS карты высот
В то время как карты нормалей и карты высот дают нашим низкополигональным моделям вид более детализированных, они используются для совершенно разных целей.
Наиболее очевидное различие заключается в том, что карты высот создаются лишь в оттенках серого, потому что они отображают только разницу высот. Черный (0) — «вниз», белый (1) — «вверх», а 0.5 означает отсутствие изменения высоты.
Существует несколько различных типов карт высот, с которыми вы, возможно, уже знакомы.

Bump maps — это способ старой школы для добавления деталей к низкополигональным объектам. Они используются так же, как и обычные карты, за исключением того, что они содержат только информацию о высоте, а не информацию об угле.
Displacement maps иногда используются для изменения местоположения фактических вершин объекта. Такое перемещение не добавляет никаких дополнительных деталей. Вместо этого оно используется для создания более сложных объектов. Часто подобным способом генерируется рельеф мира с использованием карт смещения.
Еще карты смещения используются для отображения параллакса (так называемое виртуальное отображение смещения), что является более сложной техникой, в которой игровой движок пытается смещать координаты текстуры относительно камеры. Это довольно ресурсозатратно, но может давать хорошие результаты.
Normal Maps не содержат информации о высоте. Вместо этого они содержат информацию о углах. Они цветные, потому что значения RGB сообщают рендеру, в каком направлении идет наклон, и насколько он крут.
Наиболее важным преимуществом этого является то, что мы можем использовать информацию об угле для того, чтобы искусственно сгибать края соседних граней друг к другу, тем самым имитируя эффект фаски. Это невозможно сделать только с информацией о высоте, потому что рендер не может знать, в каком направлении должны быть согнуты края.
Смягчение острых краев звучит достаточно просто, но это дает удивительно большой скачок визуального качества. Все потому, что в реальной жизни ничто не имеет абсолютно острых краев (кроме, разве что, графена). С другой стороны, в компьютерной графике все имеет бесконечно острый край, поскольку каждая грань имеет нулевую толщину.

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

Существует три типа карт нормалей, которые дают идентичный результат, но вычисляются немного по-разному.
Tangent space (касательное пространство)
Как следует из названия, карты нормалей касательного пространства основаны на касательном направлении каждой грани. Эти карты всегда состоят из комбинации трех цветов.
- Синий показывает наклон в направлении нормали
- Красный показывает наклон влево и вправо в направлении касательной
- Зеленый показывает наклон вверх и вниз в направлении касательной. OpenGL карты нормалей отображают зеленым цветом наклон вверх, в то время как DirectX наклон вниз.
Object space (объектное пространство)
Карты нормалей пространства объектов основаны на всем объекте, а не на его индивидуальных гранях. Такие карты немного быстрее вычисляются графическими картами, но у них есть некоторые недостатки.
Поскольку правая сторона будет другого цвета, нежели левая, никакие UV-карты не могут быть отзеркалены, а это означает, что большое количество текстурного пространства будет потрачено впустую на симметричных моделях. Это также означает, что если объект скручивается, то мы увидим инвертированное затенение.
World space (мировое пространство)
Карты нормалей в пространстве мира являются наименее гибкими. Поскольку они основаны на глобальных координатах, объект вообще не может вращаться, чтобы сохранить корректность затенения. Этот тип карт нормалей используется только для больших, статических и асимметричных объектов, таких как окружение игрового мира, или временно используется в таких программах, как Substance Painter, в качестве средства вычисления различных погодных эффектов и не только.
Заключение

Наиболее распространенным типом карт нормалей являются карты касательного пространства, поскольку они наиболее гибки. Но полезно понимать и другие типы, чтобы вы могли использовать их, если это будет необходимо. Для углубленного изучения карт нормалей и того, как моделировать объекты с их использованием и запекать данные карты, посмотрите курс «Введение в моделирование с использованием карт нормалей».