Круги на воде - Форум Игроделов
Пн, 20 Май 2024, 07:57 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Круги на воде (Интересно общее мнение)
Круги на воде
NapalmRainДата: Пн, 19 Май 2014, 15:43 | Сообщение # 1
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Доброго всем времени суток!
Интересует ваше мнение по реализации.
Есть вода. Реализована средствами плоскости с самописным шейдером.
Так же есть круги (то же реализованы плоскостью и шейдером и анимированы с помощью скрипта).
На плоскости воды повешен триггер и скрипт, который по онТриггерСтейт происходит считывание координат Икс и Зет объекта вошедшего в воду и Игрик самой воды и в это место происходит инстантиейт круга на воде.
Круг самоликвидируется после того, как проиграет анимацию до конца.

Сейчас это реализовано так.
Вопрос: на сколько данная система логична по вашему мнению? Ну и если есть советы, буду благодарен!
 
СообщениеДоброго всем времени суток!
Интересует ваше мнение по реализации.
Есть вода. Реализована средствами плоскости с самописным шейдером.
Так же есть круги (то же реализованы плоскостью и шейдером и анимированы с помощью скрипта).
На плоскости воды повешен триггер и скрипт, который по онТриггерСтейт происходит считывание координат Икс и Зет объекта вошедшего в воду и Игрик самой воды и в это место происходит инстантиейт круга на воде.
Круг самоликвидируется после того, как проиграет анимацию до конца.

Сейчас это реализовано так.
Вопрос: на сколько данная система логична по вашему мнению? Ну и если есть советы, буду благодарен!

Автор - NapalmRain
Дата добавления - 19 Май 2014 в 15:43
HunjethДата: Пн, 19 Май 2014, 20:00 | Сообщение # 2
 
Сообщений: 354
Награды: 1
Репутация: 112
Статус: Offline
В css (Counter Strike) тоже такая реализация.
Думаю что это хорошая реализация.


Сообщение отредактировал Hunjeth - Пн, 19 Май 2014, 20:01
 
СообщениеВ css (Counter Strike) тоже такая реализация.
Думаю что это хорошая реализация.

Автор - Hunjeth
Дата добавления - 19 Май 2014 в 20:00
AltairДата: Пн, 19 Май 2014, 22:08 | Сообщение # 3
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
В крайзис флоумапом сделано ,ну то есть есть что-то вроде генерации текстуры в зависимости от объекта и его движения и потом либо бамп рефлектион или теселятион.
 
СообщениеВ крайзис флоумапом сделано ,ну то есть есть что-то вроде генерации текстуры в зависимости от объекта и его движения и потом либо бамп рефлектион или теселятион.

Автор - Altair
Дата добавления - 19 Май 2014 в 22:08
NapalmRainДата: Ср, 21 Май 2014, 10:08 | Сообщение # 4
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Тут посоветовали следующий вариант: реализовать всю работу внутри шейдера.
То есть не инстантиейт круга в мире, а размещение его в переданной скриптом позиции и анимирование уже в шейдере. Мысль хорошая, но возник вопрос:
Каким образом можно передать позицию в шейдер, в каком именно месте плейна будет размещаться текстура? И как сделать так, что бы она не была зациклена?
Ну то есть один раз разместилась на меше в конкретной точке и всё.
Возможно звучит несколько по дилетантски, но в этом вопросе, честно говоря, не подкован.
 
СообщениеТут посоветовали следующий вариант: реализовать всю работу внутри шейдера.
То есть не инстантиейт круга в мире, а размещение его в переданной скриптом позиции и анимирование уже в шейдере. Мысль хорошая, но возник вопрос:
Каким образом можно передать позицию в шейдер, в каком именно месте плейна будет размещаться текстура? И как сделать так, что бы она не была зациклена?
Ну то есть один раз разместилась на меше в конкретной точке и всё.
Возможно звучит несколько по дилетантски, но в этом вопросе, честно говоря, не подкован.

Автор - NapalmRain
Дата добавления - 21 Май 2014 в 10:08
AltairДата: Ср, 21 Май 2014, 10:24 | Сообщение # 5
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
Цитата NapalmRain ()
Каким образом можно передать позицию в шейдер

Да легко..material.SetVector("_MyPos",myPos(Vector4));
Насчёт зацыкленности..прикол в том что я хз как несколько текстур делать что б появлялось в шейдере,ибо ты выстрелишь и оно каждый раз будет менять позицию,
можно сделать что б просто увеличивался тайлинг круга и сделать его через нормал мап и поставить интенсивность текстуры(альфу) и просто после цыкла полного уменьшать его до 0 и когда снова нужно ставить 1.

Добавлено
Вот тут даже текстур не надо,но нужно много полигонов..
http://benbritten.com/2009/05/19/fun-with-unity/

Добавлено
http://unitycoder.com/blog/2011/08/24/wip-mboatwaves-v1-0-fake/


Сообщение отредактировал Altair - Ср, 21 Май 2014, 10:24
 
Сообщение
Цитата NapalmRain ()
Каким образом можно передать позицию в шейдер

Да легко..material.SetVector("_MyPos",myPos(Vector4));
Насчёт зацыкленности..прикол в том что я хз как несколько текстур делать что б появлялось в шейдере,ибо ты выстрелишь и оно каждый раз будет менять позицию,
можно сделать что б просто увеличивался тайлинг круга и сделать его через нормал мап и поставить интенсивность текстуры(альфу) и просто после цыкла полного уменьшать его до 0 и когда снова нужно ставить 1.

Добавлено
Вот тут даже текстур не надо,но нужно много полигонов..
http://benbritten.com/2009/05/19/fun-with-unity/

Добавлено
http://unitycoder.com/blog/2011/08/24/wip-mboatwaves-v1-0-fake/

Автор - Altair
Дата добавления - 21 Май 2014 в 10:24
NapalmRainДата: Ср, 21 Май 2014, 10:45 | Сообщение # 6
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
Цитата Altair ()
Да легко..material.SetVector("_MyPos",myPos(Vector4));

Это я понимаю, меня интересует не механизм передачи информации, а её формат.
Размещение текстуры на меше зависит от UV координат. Сейчас пока писал, кажется, сам понял, но если не прав, прошу поправить. Так как на практике не применял...
Размещение текстуры зависит от UV координат, а именно, от параметра offset. Его значение, на сколько я понимаю, варьируется от 0 до 1. И таким образом в зависимости от размеров меша воды и его координат объекта, вошедшего в воду, можно рассчитать этот самый offset достаточно просто. Но!
Остаётся вопрос о зацикливании. Опять таки: Если мы имеем большой меш и в шейдере будем анимировать текстуру круга путём её увеличения, изначально она будет достаточно маленькой, а значит будет мороситься по всей поверхности воды. Но ведь как-то можно сделать так, что бы она ложилась на меш единожды...
Что касается вариантов с манипуляцией вершинами, на мой взгляд, это не самый правильный вариант, по крайней мере мне он не нравится.
Мой шейдер воды работает с приломлениями, ипользоя карты нормалей и круг я собирался сделать так же.
 
Сообщение
Цитата Altair ()
Да легко..material.SetVector("_MyPos",myPos(Vector4));

Это я понимаю, меня интересует не механизм передачи информации, а её формат.
Размещение текстуры на меше зависит от UV координат. Сейчас пока писал, кажется, сам понял, но если не прав, прошу поправить. Так как на практике не применял...
Размещение текстуры зависит от UV координат, а именно, от параметра offset. Его значение, на сколько я понимаю, варьируется от 0 до 1. И таким образом в зависимости от размеров меша воды и его координат объекта, вошедшего в воду, можно рассчитать этот самый offset достаточно просто. Но!
Остаётся вопрос о зацикливании. Опять таки: Если мы имеем большой меш и в шейдере будем анимировать текстуру круга путём её увеличения, изначально она будет достаточно маленькой, а значит будет мороситься по всей поверхности воды. Но ведь как-то можно сделать так, что бы она ложилась на меш единожды...
Что касается вариантов с манипуляцией вершинами, на мой взгляд, это не самый правильный вариант, по крайней мере мне он не нравится.
Мой шейдер воды работает с приломлениями, ипользоя карты нормалей и круг я собирался сделать так же.

Автор - NapalmRain
Дата добавления - 21 Май 2014 в 10:45
AltairДата: Ср, 21 Май 2014, 12:32 | Сообщение # 7
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
Цитата NapalmRain ()
что бы она ложилась на меш единожды...

Через скрипт сделай затухание прозрачности.
 
Сообщение
Цитата NapalmRain ()
что бы она ложилась на меш единожды...

Через скрипт сделай затухание прозрачности.

Автор - Altair
Дата добавления - 21 Май 2014 в 12:32
seamanДата: Ср, 21 Май 2014, 14:40 | Сообщение # 8
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
 
Сообщение

Автор - seaman
Дата добавления - 21 Май 2014 в 14:40
seamanДата: Ср, 21 Май 2014, 14:53 | Сообщение # 9
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Здесь есть реализация (на cpp)
http://edxgraphics.codeplex.com/SourceControl/latest
см. ripple effect
Там интересны шейдеры.
Вообще поищи ripple effect?
Например можно найти это: http://forum.unity3d.com/threads/27205-Ripple-Effect
Тут меняется меш (что имхо - неверно)
 
СообщениеЗдесь есть реализация (на cpp)
http://edxgraphics.codeplex.com/SourceControl/latest
см. ripple effect
Там интересны шейдеры.
Вообще поищи ripple effect?
Например можно найти это: http://forum.unity3d.com/threads/27205-Ripple-Effect
Тут меняется меш (что имхо - неверно)

Автор - seaman
Дата добавления - 21 Май 2014 в 14:53
NapalmRainДата: Ср, 21 Май 2014, 15:11 | Сообщение # 10
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
seaman, в код не вникал, но, если я правильно понимаю, система работает с вертексами? или я не прав?
 
Сообщениеseaman, в код не вникал, но, если я правильно понимаю, система работает с вертексами? или я не прав?

Автор - NapalmRain
Дата добавления - 21 Май 2014 в 15:11
seamanДата: Ср, 21 Май 2014, 15:19 | Сообщение # 11
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
По ссылке на форум? Да. В скрипте! Потому я считаю, что подход неверен. Поищи - на форуме есть даже пак с кругами, с расчетами на GPU
Вот:
http://forum.unity3d.com/threads....ailable
И не ленись искать - это быстрее, чем ждать когда кто-то за тебя найдет.
 
СообщениеПо ссылке на форум? Да. В скрипте! Потому я считаю, что подход неверен. Поищи - на форуме есть даже пак с кругами, с расчетами на GPU
Вот:
http://forum.unity3d.com/threads....ailable
И не ленись искать - это быстрее, чем ждать когда кто-то за тебя найдет.

Автор - seaman
Дата добавления - 21 Май 2014 в 15:19
NapalmRainДата: Ср, 21 Май 2014, 15:26 | Сообщение # 12
 
Сообщений: 473
Награды: 0
Репутация: 31
Статус: Offline
seaman, я не ленюсь. Прежде чем написать на форумы, я в течении нескольких дней искал и пересматривал не один вариант реализации, как шаровые ,так и платные. В конце концов разработав свой. И уже потом обратился за советом, как его улучшить или же вообще пойти в другую сторону.
А вариант работы с вёртексами, как через скрипт, так и через шейдер отмёл сразу, так как если использовать шейдерное искажение картами нормалей, мне хватит всего одного полигона и не нужно манипулировать вершинами. Но за ссылки благодарю, возможно натолкнут на какие-то мысли.
 
Сообщениеseaman, я не ленюсь. Прежде чем написать на форумы, я в течении нескольких дней искал и пересматривал не один вариант реализации, как шаровые ,так и платные. В конце концов разработав свой. И уже потом обратился за советом, как его улучшить или же вообще пойти в другую сторону.
А вариант работы с вёртексами, как через скрипт, так и через шейдер отмёл сразу, так как если использовать шейдерное искажение картами нормалей, мне хватит всего одного полигона и не нужно манипулировать вершинами. Но за ссылки благодарю, возможно натолкнут на какие-то мысли.

Автор - NapalmRain
Дата добавления - 21 Май 2014 в 15:26
AltairДата: Ср, 21 Май 2014, 17:56 | Сообщение # 13
Unity 3D PRO Developer
 
Сообщений: 758
Награды: 6
Репутация: 195
Статус: Offline
http://wiki.unity3d.com/index.php/Ocean
 
Сообщениеhttp://wiki.unity3d.com/index.php/Ocean

Автор - Altair
Дата добавления - 21 Май 2014 в 17:56
Форум Игроделов » UNITY3D » ОБЩИЕ ВОПРОСЫ » Круги на воде (Интересно общее мнение)
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024