· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.DIRECTX.OPENGL —› Перехватить координаты до отрисовки

Посл.отвђт Сообщенiе


Дата: Сен 17, 2004 10:56:04

Хочу написать небольшой эффект типа волн (больших, океанических). Проблемма в том, что вершин в решетке очень много и рассчитываются они очень долго. Так же долго считаются нормали и потом еще все это очень долго отрисовывается :-). Есть идея отрисовывать полигоны от камеры к горизонту, чтобы отсекат лишнее по принципу воксельных ландшафтов. Как можно определить координаты полигона еще до того, как они будут выведены на экран? Спасибо за внимание.


Дата: Сен 17, 2004 17:44:35

погугли hidden surface removal heightmap


Дата: Сен 20, 2004 06:25:10

aaleksander

Я думаю достаточно разбить ландшафт на секторы и определять какие из секторов мы видим. Не забываем про VBO. А водичку можно на вершинном шейдере посчитать. Проблемм не вижу.


Дата: Сен 20, 2004 09:16:55

Вершинными шейдерами неинтересно (они у меня не поддерживаются и я не знаю как с ними работать :-) Кроме того, хочется сделать что-нибудь такое, что еще никто не видел B-)


Дата: Сен 21, 2004 01:51:00

aaleksander
хочется сделать что-нибудь такое, что еще никто не видел

Без шейдеров публику уже не удивить :)

Определяешь видимые сегменты, и пересчитываешь их на CPU. Все просто. Скажем по формуле:

z(x,y,t) = sin(x+t)+cos(y+t)

Это примитив конечно, но добавить сюда еще пару синусов-косинусов и суперпозиций и будет тебе вполне приличная вода. Еще добавь отражение и преломление.


Дата: Сен 21, 2004 08:24:02

"z(x,y,t) = sin(x+t)+cos(y+t)" У меня так и сделано, картина называется "Мужики вывозят сено с полей" :-).
А что такое суперпозиция?


Дата: Сен 21, 2004 08:36:54

„картина называется "Мужики вывозят сено с полей"“
Хе-хе... Сильно! Я долго смеялся :)))
Я бы еще назвал "бурундуки во ржи ползут на северо-запад" :)

„А что такое суперпозиция?“
Функция внутри функции. Например f(g(x)).

Например...

z(x,y,t) = sin(x*cos(t+y)+y+t) + cos(x+y*sin(t+x)+t)

Ну и если дать 3-4 вложенности синусов-косинусов то водичка будет очень даже ничего. Полезно поиграться с коэффициентами. Например:

z(x,y,t) = sin(A*x*cos(B*t+C*y)+D*y+E*t) + cos(F*x+G*y*sin(H*t+I*x)+J*t)

Проблемма тут будет только в скорости :)


Дата: Сен 21, 2004 08:45:22

Это все циклично и потому скучно (и еще действительно медленно). Я делаю что-то похожее на seastorm3D, где-то тут ссылка пробегала. Пока делаю на основе графа с "резиновыми" ребрами. Преимущество в том, что можно делать смещения не только по Y, но и по X с Y-ком, плюс красиво волнуется текстура.


Дата: Сен 21, 2004 08:59:22

Так ведь никто не мешает по-разному двигать вертексы и текстуры.

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

Вобщем... Способов-то куча. Советую почитать статью с www.gamedev.ru раздел "Графика" статья "Физическое моделирование воды" + посмотри пример к ней.


Дата: Сен 27, 2004 13:22:57

Попробуй feedback буффер. Я не разбирался, но по идее это оно...


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.096