Як я можу легко створити карти хмарних текстур?


16

Я роблю 3d планети у своїй грі; вони будуть розглядатися як "глобуси". Для деяких з них знадобляться шари хмар. Я переглянув різні підручники з Blender для створення "землі" , а для їх хмарних шарів вони використовують земні карти хмари від NASA .

Однак я буду створювати вигаданий всесвіт з багатьма планет, створеними процедурою. Тому я хотів би використовувати багато варіацій.

Я сподіваюся, що існує спосіб процедурного генерування хмарних карт, таких як посилання NASA. Також мені знадобиться створити газові гіганти, тому мені також знадобляться інші види карт хмаротекстури .

Якщо це занадто складно, я міг би повернутися до створення декількох варіантів хмарних карт. Наприклад, 3 для землеподібних, 3 для газових гігантів тощо.

Тож як я статично створюю або програмно генерую такі хмарні карти?

Відповіді:


19

Хмарне покоління - це весело! Я висвітлюю як офлайн, так і методи виконання.

Попередньо винесені хмари

Якщо ви хочете заздалегідь відредагувати свої хмарні текстури в режимі офлайн, не шукайте далі Photoshop (або Gimp , якщо вам зручніше). Обидві програми можуть легко генерувати хмарні структури. Елементи меню, як правило, переміщуються між випусками, але на Gimp 2.8.2 основна команда, яку ви шукаєте, це Filters -> Render -> Clouds -> Solid Noise. Вам потрібно буде створити нове порожнє зображення до ввімкнення команди. Я рекомендую вам експериментувати з параметрами шуму, але як один із прикладів, ось що відбувається, якщо встановити "Випадкове насіння" на 1, "Деталі" на 4, "Розмір X" на 4,0, "Розмір Y" на 8,0, відключити "Randomize" та "Turbulent" та ввімкніть "Tilable": Сирий вихід команди Gimp "Твердий шум"

Наступним кроком, який я обов'язково рекомендую, є редагування рівнів зображення ( Colors -> Levels...у Gimp). Перетягуючи кінцеві точки навколо, ви можете ефективно змінити рівень хмарного покриву з "повністю хмарного" на "не хмара в небі". Порогові хмари

Інші цікаві можливості:

  • Використовуйте інструменти "Dodge" та "Burn", щоб вручну освітлити / затемнити ділянки зображення.
  • Оберніть зображення хмари, щоб запропонувати схеми вітру. Спробуйте Filters -> Distorts -> Whirl and Pinch...команду Gimp , або для додаткового контролю використовуйте Filters -> Distorts -> IWarp...режим "Деформація", встановлений на "Swirl". Але нехай це буде витонченим - занадто багато викривлення, як правило, розмиває деталі високої частоти із зображення.
  • Додайте декілька незалежних хмарних шарів, щоб імітувати різні типи хмар, від тонких і муглистих до великих & кремезних (я впевнений, що вони мають належні наукові назви, але чорт Джим, я програміст, а не метеоролог!). У цьому випадку ви, ймовірно, захочете зберегти кожен шар як окреме зображення, щоб ви могли їх анімувати самостійно під час виконання.

Це дійсно залежить від вашого художнього бачення. Піди горіхи! Коли ви закінчите, не забудьте експортувати текстуру як одноканальне зображення сірого кольору, щоб ви могли використовувати ті самі дані хмари для вашого кольору та альфа-каналу під час виконання.

Генерація хмари часу виконання

Створення необмежених хмарних моделей під час виконання - дещо більше, але все-таки цілком можливо. Це величезна тема, і це охопить лише широкі штрихи.

В основному ви збираєтесь повторити команду Gimp "Solid Noise" у своєму шейдерному коді, використовуючи шумову функцію, подібну до канонічного Perlin Noise, для створення нескінченних, плавних, детермінованих (необов'язково) періодичних обсягів шуму. У вашому запитанні не вказано, на який API відтворення ви орієнтовані, тому я не можу отримати тут занадто конкретний характер; Глава 26 "GPU Gems 2" охоплює варіант шуму Перліна в (дещо датованому) HLSL та CgFX, або ви можете використовувати цю функцію, що випадає з шумом GLSL. Відібравши відбір 2D-фрагмента тривимірного шуму, ви отримаєте щось на зразок команди Gimp "Solid Noise" з деталізацією = 0. Чим менша відстань між вашими зразками шумового звуку, тим меншою буде частота ("плавніше") вашого шуму. Щоб підвищити рівень високочастотної деталізації, почніть з базової низькочастотної картини шуму і додайте додаткові «октави» шуму більш високої частоти, де кожна «октава» - це різний зріз тривимірного шуму з більшим відстанню вибірки і нижня амплітуда. Наочний приклад цього процесу (який я знайшов Гуглінг «багатооктавний перліновий шум») можна знайти тут .

Як величезний додатковий бонус, створені таким чином хмарні текстури можна дуже легко оживити! Додайте часове зміщення до зразків координат функції 3D шуму, і ви отримаєте надзвичайно переконливий хмарний рух (як це бачимо, наприклад, у цьому відео ). Це тому, що функція шуму є рівною у всіх трьох вимірах; прокручування текстури в напрямку U / V призводить до того, що хмари рухаються навколо планети, тоді як прокручування в напрямку W (перпендикуляр) призводить до того, що хмари повільно "розвиваються".

Можливі викривлення хмар під час виконання також для ураганоподібних наслідків. Результати насправді можуть бути набагато вищою якістю, ніж наївні фільтри основи Gimp, що (як було сказано раніше) може призвести до надто розмитої текстури. Один з методів, який ви, безумовно, хочете переглянути - це "карти потоку", як описано Алексом Влахосом з Valve ( слайди SIGGRAPH 2010 ) або Карлосом Гонсалесом з Naughty Dog ( слайди GDC 2012 ). Основна ідея полягає в тому, що ви малюєте векторне поле ("карта потоку") і використовуєте його для спотворення та прокручування текстури хмари під час виконання, при цьому періодично перехрещуючись між двома різними хмарними текстурами, коли відстань спотворення стає занадто великою.

Який метод використовувати?

Попереднє відтворення хмарних текстур у Gimp / Photoshop надзвичайно просто; ви можете створити нову текстуру за кілька секунд, як тільки ви отримаєте висіти її. Код виконання тривіальний і дуже швидкий. Однак більш унікальні хмарні текстури означають більш високі вимоги до місця на диску (також, більш велике / повільне завантаження) та більше використання VRAM під час виконання.

Зробити хмарне середовище виконання спочатку набагато складніше, але як тільки ви працюєте, у нього є кілька чітких переваг перед попередньо наданими хмарними текстурами. Ви можете генерувати нескінченну кількість реалістичних анімованих хмарних моделей, не використовуючи додаткового місця на диску чи VRAM. Однак витрати на виконання декількох 3D-шумових функцій на піксель можуть бути крутими; ваші хмарні піксельні шейдери будуть значно повільнішими, ніж у попередньо винесеному випадку.

TL; DR: обов'язково почніть з використання попередньо наданих хмар, і перейдіть на процедурні хмари часу виконання, якщо вам потрібна додаткова різноманітність (або ви хочете отримати додаткову проблему програмування).


1
Це чудова відповідь: дуже всебічний і простий у дотриманні. Я бачу, ви згадали про "викривлення хмар, щоб запропонувати схему вітру". Це те, що мені обов'язково потрібно буде зробити, тож ви можете трохи детальніше розібратися? Як тільки я це отримаю, я прийму вашу відповідь.
EdwardTeach

@EdwardTeach Готово; сподіваюся, що допомагає!
постгудизм
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.