Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 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
15-1225807517
Petr V. Abramov
2008-11-04 17:05
2009.01.04
Электронные деньги - будущая замена бумажных денег?


2-1227547166
Res
2008-11-24 20:19
2009.01.04
gethostbyname


2-1227459676
ИванН
2008-11-23 20:01
2009.01.04
TFileStream + soFromEnd


2-1226488903
Vova
2008-11-12 14:21
2009.01.04
DeleteFile


15-1225510312
Slider007
2008-11-01 06:31
2009.01.04
С днем рождения ! 1 ноября 2008 суббота





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский