Процедурная генерация планет

Oct 26, 2010 21:44

Заинтересовали меня методы процедурной генерации планет. Цель - получить максимально реалистичный 3D меш.

Самый простой, самый быстрый метод:
Сперва берём униформно триангулированную сферу. Несколько миллионов треугольников хватит для генерации реалистично выглядящего ландшафта небольших планет.

Затем разбиваем сферу на пополам случайно повёрнутой плоскостью, проходящей через центр сферы. Одну получившуюся половину сферы слегка уменьшаем на некоторый константый фактор, другую половинку слегка увеличиваем. Повторяем разбиение-уменьшение-увеличение N-ное количество раз, пока ландшафт не начинает выглядеть более-менее реалистично.

Затем, для удобства, можно покрыть текстурой воды все треугольники, имеющие радиус менее некоторого порогового. Таким образом получается красиво-выглядящая планета, напоминающая Землю видом гор, континентов и океанов.

Потратил вечер, но сделал :) Простой Ansi C + OpenGL и немножко линейной алгебры. 80fps на Dual Core. В общем, если немного доработать, можно вполне себе красивые планеты генерировать.


complexity, math, fun

Previous post Next post
Up