Форум: "Игры";
Текущий архив: 2009.01.04;
Скачать: [xml.tar.bz2];
ВнизСоздание водной поверхности средствами GLScene Найти похожие ветки
← →
Morpheuz (2007-04-10 01:19) [0]Здравствуйте Мастера!
Начал писать игру на [b]GLScene[/b]. Большая часть игрового времени будет проводиьтся на воде. Какие есть способы создать максимально реалистичную водную поверхность (с учетом возможностей этого движка). Хотелось бы сделать хоть какуе-то взаимодействие с объектами помещуными в воду. Что вы можете мне посоветовать?
[i]P.S. и сам знаю, что много хочу[/i]:)))
← →
Хелпер (2007-04-10 07:45) [1]Там демки есть на тему воды.
Покомпилируй их, посмотри.
← →
Morpheuz (2007-04-10 15:52) [2]Демки не подходят по той причине, что вода там статичная. Нет возможности взаимодействовать с другими предметами. А океан глючная не везде запускается. Хотя я не отрицаю, что хорошо разобрался, если все сам понял - не спрашивал здесь:)
Все равно спасибо за ответ. Но хотелось бы услышать советы как делать(я не прошу готовый код, просто советы), а не пиар поисковиков и/или демок GLScene))
← →
Rial © (2007-04-10 16:29) [3]Ищи просто примеры с водой на OpenGL.
GLScene затуманивает могз, постарайся обойтись без него.
Найдешь формулы, рассчитаешь по ним все нужные точки.
Получится водная поверхность.
Ну а теперь придумай, как по законам физики твои тела
будут взаимодействовать с этой поверхностью.
← →
deus krid (2007-04-10 17:21) [4]на сайте glscene.ru есть пара демок с шейдерной водичкой (GLSL)
← →
Morpheuz (2007-04-11 00:07) [5]Не знаю может я не точно выразился... Но мне хотелось бы увидеть ответ поконкрентней. Все демки я пропосмотрел, теперь разбираюсь. У стандартной водной поверхности нет динамического взаимодействия.Просто может быть у кого-то была подобная задача и он знает кое-что, что бы мне помогло, не хотелось бы заново изобретать велосипед:)
ЗЫ: прошу учесть, что в программировании 3Д графики я новичок.
← →
Rial © (2007-04-11 01:45) [6]> [5] Morpheuz (11.04.07 00:07)
Я например не совсем понял, что подразумевается под динамическим взаимодействием.
Это что, кораблик бумажный колышется на волнах ?
Не знаю, есть ли готовые решения. Тем не менее, задача
имеет прямое отношение к математике, а не к графике.
Возможно 3 случая... принципиально упростил для ускорения рассчетов :)
1.
Вода - относительно ровная поверхность. Тело имеет площадь.
Тогда нужно посчитать средний уровень воды на занимаемой
телом площади. Дальше то все просто - по закону архимеда рассчитываешь
высоту тела над водой, а, следовательно, найдешь высоту относительно дна.
2.
Тело - материальная точка.
Тогда на тело дейстует сила тяготения, параллельно возникает сила архимеда,
толкающая тело из воды по касательной к поверхности воды в точке.
Косинус силы и будет влиять на перемещение тела.
Само тело будет располагаться по касательной.
3.
Тело и размер волны имеют соотносимые размеры.
В общем случае, задачка непростая.
Сделай так. У тебя же вода рисуется с определенной дискретизацией - по сути
дискретная сетка высот.
Посчитай сумму синусов и косинусов во всех точках сетки.
Косинусы по-прежнему дадут смещение тела водой в каком то направлении.
Теперь рассмотри тело как трехмерный рычаг, к которому приложены силы,
направленные вверх. Отсюда найдешь крен тела относительно
горизонтальной поверхности.
Все немного усложнится, если тело не плоское.
Ну и, конечно, все рассчеты достаточно приблизительны.
← →
Morpheuz (2007-04-12 01:24) [7]>Rial ©
>Тело и размер волны имеют соотносимые размеры.
Да вот именно так я хочу, точнее надо. Спасибо за помощь.
Хотя я не много не прото взаимодействие думал, хотя теперь и это буду добавлять)) Я имел ввиду такое взаимодействие как например от брошеного камня в воду расходятся волны, при движении корабля волны отходящие от бортов и тыды.
В двиге сетка высот будет иметь большую дитализацию возле объектов погруженых в воду. А волны предположительно такие как в 3дМарк 2001
← →
Morpheuz (2007-04-12 01:27) [8]OffTop
> deus krid (10.04.07 17:21) [4]
>
> на сайте glscene.ru есть пара демок с шейдерной водичкой
> (GLSL)
ксати на этом сайте не работает регистрация, и нигде не сказано ка связаться с админестрацией:( если знаешь как туда мона зайти напиши.
← →
Rial © (2007-04-12 16:10) [9]> [7] Morpheuz (12.04.07 01:24)
> Хотя я не много не прото взаимодействие думал, хотя теперь
> и это буду добавлять)) Я имел ввиду такое взаимодействие
> как например от брошеного камня в воду расходятся волны,
> при движении корабля волны отходящие от бортов и тыды.
Ну, существуют различные способы рисования воды.
Я не знаю, что там происходит в GLScene, а вообще обычно делают так:
1. несколько гармоник, двигающихся с разными скоростями и отклонениями
в направлении
2. карта высот, для которой рассчитываешься визика через дифуры
Вот с камнен и способом 2) все просто - в точке падения камня подними
координату Z на порядок - получишь всплеск и волны. Бля борта корабля -
изменение уровня глубины по периметру.
В случае 1) сам не рассчитывал, хотя волны и красивее :)
Вероятно, нужно будет добавить затухающую гармонику параллельно борту корабля.
← →
Sapersky (2007-04-12 18:59) [10]http://www.gamedev.ru/articles/?id=30119
Ещё на сайте nvidia есть документ "Hardware-Accelerated Procedural Texture Animation", там описываются особенности реализации на шейдерах.
← →
Morpheuz (2007-04-14 05:42) [11]Народ спасибо за помощь! Особенно Rial, за столь доступное изложение материала:) Но всетаки очень хотелось бы увидеть ответы как это можно реализовать в GLScene. Не хочется заново изобретать велосипед:) P.S. Rial ответы действительно помогли и понравились.
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2009.01.04;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c