2d покоління процесуального всесвіту


16

Я хочу створити плоску Всесвіт, де спочатку весь Всесвіт порожній.

Це було б представлено фоновим зображенням туманності прокрутки паралакса.

Що я хочу зробити, це представити планети як дискові предмети у Всесвіті. Вони можуть бути різного розміру.

Внутрішня частина дисків буде складатися з сухопутної маси, потім зовні буде водойма, а після цього повітря.

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

Перша моя думка - створити текстурні зображення, а потім викреслити кола з цих текстур, але проблема полягає в тому, що ці текстури повинні були обернутись горизонтально і вертикально. Чи існує цілком процедурний спосіб зробити це?


На такі питання краще відповісти якось наочно, щоб описати, що ви хочете. Хороша відповідь нижче може бути або занадто технічною, або недостатньо технічною.
Річард Фабіан

Відповіді:


14

Процедурні текстури, особливо на основі шуму, можна виготовити для плитки. Дивіться цю тему в GDNet для деякої дискусії, а також цей запис у журналі. Є також це посилання , яке звучить цікаво, хоча я не можу говорити за його правдивість.

Що стосується процедурного покоління світу, то тут є ця стаття, написана хлопцем, що розвиває Infinity. Його система є 3D, але ви, ймовірно, можете досить легко адаптувати методи.

Існує ціла вікі щодо генерації процедурного вмісту .


1
Пфф. Мені потрібно навчитися вводити швидше. Це в основному те, що я маю у вікні редактора нижче ... +1 вам, сер.
bummzack

ура, я підкажу.
Джозеф Ле Брех

2

Мені це здається, що ви хочете прямокутні текстури з повітрям зверху і брудом знизу. Ви можете зіставити прямокутні текстури до кіл, зробивши координату текстури U, що представляє кут навколо кола, а V текстуру координати представляють відстань від центру кола. Для великих планет U може обернутися навколо планети кілька разів.

Щоб перетворити з звичайних 2D координат XY на вищезгадані УФ-координати, ви можете робити математику так:

y -= planet_center.y;
x -= planet_center.x;
u = atan2( y, x );
v = sqrt( y*y + x*x );

Слід бути обережним, щоб не обчислювати це занадто близько до центру планет ...


Я більше розмірковую по лінії вертикального перерізу Всесвіту, як цей i.imgur.com/gpCTc.jpg земля, море, повітря, порожнеча. тощо ..
Джозеф Ле Бреч

Це розумний спосіб розділити простір на типи, але це буде завдання зробити його схожим на сферичні планети.
bmcnett

немає жодної вимоги, щоб він виглядав занадто схожим на планету. достатньо лише випадкової землі, води, повітря в потрібній пропорції і все на шестигранній сітці разом з іншими планетами в цій сітці.
Джозеф Ле Брех

Ага, тоді ви хочете створити багато шестикутної текстури плитки, з тим обмеженням, що край між землею / повітрям тощо відображається в передбачуваному місці між сусідніми плитками?
bmcnett

так, сферичним чином. тож розмір кожного шару (земля, вода ..) вибирається випадковим чином, і тоді в цій масі буде розміщена випадкова плитка землі для планети, однакова для кожного шару.
Джозеф Ле Брех
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.