ПроектыФорумОцените

Planet_E (4 стр)

Страницы: 13 4 5 610 Следующая »
#45
11:11, 9 сен 2010

Aslan
> Мою демку смотрел?
Выглядит интересно, но детализация нединамическая как понял или?

#46
11:49, 9 сен 2010

registr
именно что динамическая, когда подлетаешь ближе видно, как делятся треугольники

#47
12:03, 9 сен 2010

Aslan
> diamond-square - не знаю, у меня из треугольников, начинается с икосаэдра
> меш 33*33 вершины - ты сделал для удобства вычисления след. уровня на GPU?
> Используешь шум Перлина?

Пока шум Перлина, fBm и разбиение Вороного для кратеров.

> > где много вычислений, надо использовать только GPU
> как сказать, 20K вершин - это много для CPU? А у тебя сколько?

200 мешей по 33*33 вершины = 200к вершин, fps зашкаливают за 300 (GeForce 9800 GTX+). 20к вершин было много во времена третьей кваки:)

> Точность float - 7 знаков (мантисса 24 бит). Хватило бы на планету (с учетом
> диапазона min dist - max dist), если бы z-buffer был линейным. Худшая ситуация
> когда к примеру стоишь на поверхности горы и горизонт за 100 км

А точность обычного 32-битного z-буффера - 9 знаков:) Линейность или лучше логарифмичность легко можно сделать в шейдере - преобразуй z координату как хочешь.

#48
12:41, 9 сен 2010

См. посты 643, 644, 645
http://www.gamedev.ru/code/forum/?id=122716&page=43#m643

#49
13:11, 9 сен 2010

Neptune
В статье Перлина наложение нескольких шумов разного "уровня", причем отдельный уровень задается прямоугольным массивом псевдослучайных значений в "узлах", и между ними интерполируется кубическим сплайном, расстояние между узлами уменьшается с каждым уровнем в 2 раза
Это несильно отличается от "взять среднее 4х точек, добавить случайное*шаг", только билинейная интерполяция вместо сплайна
А ты Perlin Noise так расчитываешь, следующий уровень из предыдущего?

#50
13:14, 9 сен 2010

Neptune
Замечательно!
Самое трудное подобрать таблицу : уровень->сила шума ?

В посте 44 цвета на поверхности Луны образуются из рельефа, или независимо?
А вот смотри, если допустим с некоторого расстояния область выглядит черной, а когда приближашься, вдруг возникают белые пятна? Есть зависимость от предыдущего уровня? В идеале уровень N должен получаться усреднением из уровня N+1, как в mipmap, возможно ли такое?

#51
13:17, 9 сен 2010

я вот тока по скринам не пойму ? степеней детализации нет чтоли ?

#52
13:24, 9 сен 2010

Вахтанг Кикабидзе
Судя по 644, есть

#53
13:24, 9 сен 2010

да я не про нептуна )), а про текущую тему )

#54
15:27, 9 сен 2010

Aslan
> именно что динамическая, когда подлетаешь ближе видно, как делятся треугольники
Теперь заметил, медленно просто. Ты просто их строишь или как-то индексируешь, чтобы можно было например с одного нового треугольника перепрыгнуть на другой?

Вахтанг Кикабидзе
> я вот тока по скринам не пойму ? степеней детализации нет чтоли ?
Две детализации, но они нединамические.

#55
18:06, 9 сен 2010

Aslan
> А ты Perlin Noise так расчитываешь, следующий уровень из предыдущего?

Нет, Я просто беру значение из шумовой текстуры, потом уменьшаю шаг в 2 или в другое (не обязательно целое) число раз, и обращаюсь к той же шумовой текстуре, и т.д. Ну и амплитуда на каждом шагу уменьшается.
fBm фрактал сторится похожим образом, результат несколько красивее, чем Перлин. Код функции в шейдере на Cg:

float   Perlin(float3 point, float NOctaves, float lacunarity, float H)
{
    float amplitude = 1.0;
    float value = 0.0;
    for (int i=0; i<NOctaves; i++)
    {
        value += Noise(point) * amplitude;
        point *= lacunarity;
        amplitude *= H;
    }
    return value;
}

float   fBm(float3 point, float NOctaves, float lacunarity, float H)
{
    float value = 0.0;
    for (int i=0; i<NOctaves; ++i)
    {
        value += Noise(point) * pow(lacunarity, -H*i);
        point *= lacunarity;
    }
    return value;
}

Noise - функция шума с линейной интерполяцией. В простейшем случае - просто обращение к заранее созданной 3D текстуре, содержащей случайные числа [0...255].

inline  float   Noise  (float3 point)
{
    return tex3D(NoiseTexture, point).r * 2.0   - 1.0;
}

Но я сделал самодельную интерполяцию, т.к. хардварная осуществляется с 8-битной точностью и приводит к сильным артефактам. Сама линейность интерполяции тоже приводит к артефактам - "клетчатости", что заметно например на последнем скрине поста 645. Возможный выход - сгладить текстуру шума.


Aslan
> Замечательно!
> Самое трудное подобрать таблицу : уровень->сила шума ?

Какой таблицы? На каждой октаве шум просто уменьшается в lacunarity или pow(lacunarity, -H) раз...

Aslan
> В посте 44 цвета на поверхности Луны образуются из рельефа, или независимо?

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

Aslan
> А вот смотри, если допустим с некоторого расстояния область выглядит черной, а
> когда приближашься, вдруг возникают белые пятна? Есть зависимость от
> предыдущего уровня? В идеале уровень N должен получаться усреднением из уровня
> N+1, как в mipmap, возможно ли такое?

По-идее так и нужно делать, но это очень геморрно. Я забил:) Некоторый алиасинг наблюдается, но заметен он только в узких местах с резким переходом цвета, например на линии пляжа. По-идее, достаточно для нижних (глобальных) уровней выкидывать высокие октавы шума, тогда Перлин автоматически будет "сглаженным".

#56
15:31, 11 сен 2010

registr
Я недавно писал алгоритм разбиения икосаэдра на любой число сегментов. Вот тут http://zalil.ru/upload/29662955 есть краткое описание, раздел "Генерация численной модели в рамках геодезической сферы"
Если хочешь, могу скинуть исходники)

#57
18:54, 12 сен 2010

Назови движок Сфериум.

#58
14:25, 13 сен 2010

MaJa
Спасибо, результат будет в принципе аналогичен итерационному методу. Как показывает моя практика, проблема не в том, чтобы разбить, а в том, чтобы удобно индексировать вершины и треугольники. В моей демке вершины и треугольники индексированы последовательно по правилу правого винта, закручиваясь с севера на юг. Если выбрать вершину и нажимать клавиши "," и "." (на клавиатуре они совпадают с "<" и ">"), то можно это наглядно увидеть.

#59
14:43, 13 сен 2010

MaJa
> MaJa
Причем, если использовать метод итераций, то древовидная структура образуется автоматически. С другой стороны, накладываются ограничения на число треугольников сферы.

Страницы: 13 4 5 610 Следующая »
ПроектыФорумОцените

Тема в архиве.