Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Не сайты (http://www.flasher.ru/forum/forumdisplay.php?f=82)
-   -   зацените океан (http://www.flasher.ru/forum/showthread.php?t=143661)

an_games 22.08.2010 16:03

зацените океан
 
Вложений: 1
Привет.
Интересно мнение со стороны- как вам поверхность океана? Пока все только в черновом варианте, нужно еще поэксперементировать.
Вот уже неделю пытаюсь сделать экономную и реалистичную морскую поверхность, перепробовал кучу вариантов с масками, фильтрами и прочей ерундой но все оказалось ресурсоемко и в итоге решил проблему самым традиционным способом, на который наткнулся в самом начале поисков но проигнорировал из-за неудачной реализации в примере. Повезло увидеть игрушку newo soft где водная поверхность была сделана таким образом.

Вложение 25013

shaman4d 22.08.2010 22:04

А как игрушка называлась?

an_games 23.08.2010 15:57

"Пираты". там нужно здоровой пушкой отстреливать корабли , защищая остров.

riden 23.08.2010 17:51

Вложений: 1
Помните текстуру на воде в первом Serious Sam - хороший пример применения такого способа.
Отличие есть в наложении этой текстуры. Там блики воды на текстуре и она накдажывается с альфа-каналом (маской). Поучается что анимированные блики видны, а все остальное просвечивается. Текстура ложится на поврехность воды, и на дно. в 2д варианте - это два слоя спрайтов. И получается классный эффект. Особенно если добваить отражение. В 2д оно тоже легко думаю делается.

Вот я эксперементировал с движком первого сэма. Никакого бампа и пиксельных шэйдеров в то время не исользовалось. просто использование слоев текстур:

an_games 23.08.2010 18:24

Интересно, нужно посмотреть, я сейчас вспомнил, что мне очень нравилась водичка в каких-то бассейнах в 1 сэме.
В моем варианте все еще проще, у меня просто две текстуры полупрозрачные движутся на встречу друг-другу, тупо по прямой.
К слову, фаркрай была первой игрой в которой я увидел невероятно, на тот момент, реалистичную пену прибоя, потом , как оказалось, способ реализации ее был простейшим, но смотрелся великолепно.

shaman4d 23.08.2010 22:42

Лучше сразу Seriuos Sam HD посмотреть - там вода сводит меня с ума :) особенно в Лунных Горах

an_games 24.08.2010 01:49

Вложений: 2
Цитата:

Лучше сразу Seriuos Sam HD
как раз его и нашел, а 1-го немогу. но учти что ХД это движок 3-й, насколько я знаю, а там уже шейдеры и прочее GMO. Во флеше ближайшая аналогия это perlinNoise. можно еще масками подобного эфекта добиться, но все это дает нагрузку на проц 30-50% к тому же с высоты птичьего полета вся эта красота выглядит не так эпично.
Я сделал вывод-нужно брать только самые главные элементы- волны, барашки, пена на берегу, красивое дно, и добиваться максимум эфекта.
А всякие каустики, искажения, блики в топку, ибо дорого.
Отражений, при виде сверху, законам оптики, если не учитывать перспективу, не будет...вернее они есть, но , не значительные, а небо чаще всего в сильных, волнах дает скорее дополнительную окраску, чем четкое отражение.
Я жеж пока еще не осилил AS3, так что приходится оптимизировать)

Вот, еще сыро, но уже почти как настоящий океан.
Есть 2 варианта, почти оданаковые, как считаете, какой лучше?
Вложение 25026
Вложение 25027
Теперь борюсь с прибоем. Нужно сдувать пыль с дисков Фар края и изучать. Принцип знаю, но тем не менее..

samana 24.08.2010 13:40

Мне больше sea6 понравился, но он уже не такой экономный и быстродействующий, кажется если будет ещё что-то кроме него, то из за тормозов играть будет невозможно.

Zebestov 24.08.2010 14:01

sea6, только можно ли попробовать их не вдоль одной линии "гнать"? градусов до 60 можно пробовать — должно быть интересней... предполагаю.

Добавлено через 11 минут
хотя ты знаешь... в реальном океане выглядит так, будто мелкие волны стоят на месте, в то время как крупные волны движутся. так что sea6 наверное то что надо. без изменений.

Волгоградец 24.08.2010 15:25

Вложений: 2
А мне больше sea7 понравился - выглядит здорово!
А что с реализацией пены в фаркрае, ну т.е. как она реализована?
К слову, я когда-то тоже хотел воду сделать реалистичную, но кроме как трюками с перлин/дисплейсментМап реалистичного эффекта не добился.
Вот осталась пара набросков - может пригодится:
Вложение 25029
Вложение 25030

shaman4d 24.08.2010 16:11

sea6

Цитата:

Сообщение от Волгоградец (Сообщение 931044)
Вот осталась пара набросков - может пригодится:
Вложение 25029
Вложение 25030

Афигительно особенно второй - даже не думал что так красиво можно во флеш сделать. А можете объяснить алгоритм или типа минитутор?

Волгоградец 24.08.2010 18:52

Все очень просто - 2 битмапы с постоянно генерирующимся перлином и 2 дисплейсментМап фильтра.
Автору темы на заметку - мои примеры делались на АС2.0 и перлин нойз генерируется на ходу. Если в качестве карт для фильтра взять готовые, скорость возрастет на порядок. А если на АС3.0 перевести, то еще быстрее будет. А если еще перевести дисплейсментМап фильтр на pixelBender, то вообще летать будет.

an_games 24.08.2010 19:29

Цитата:

sea6, только можно ли попробовать их не вдоль одной линии "гнать"? градусов до 60 можно пробовать — должно быть интересней... предполагаю.
не вьехал, всмысле чтоб волны веером расходились?

water2 кульно смотриься.
по поводу экономии- в данных примерах просто нет оптимизации-слишком большие текстуры и прочее. В итоге должно быть побыстрее.
В принципе, смысл такой- две одинаковые ПНГ картинки полупрозрачные друг над другом, каждая длинной 1.5 экрана движутся зацикленно. Я их еще повернул на 5 градусов чтоб пошла дополнительная рябь, которая возникает когда у картинки нет сглаживания. Движутся они с разной скоростью. В sea6 в одном направлении, в sea7 навстречу друг другу. В последнем случае в зависимости от их скоростей, вода получается более "стоячая" и "переливистая". По идее все это дело не должно сильно нагружать проц.
В фаркрае-1 прилив устроен примерно так - в анимации учавствуют 3 одинаковые текстуры пены, которые поочередно выползают на пляж и сползают обратно, причем изменяется только их прозрачность, у них даже анимации нет. Немного сложно обьяснить, но я еще по точнее обьясню позже, когда реализую.

Zebestov 24.08.2010 22:06

Цитата:

Сообщение от an_games (Сообщение 931149)
не вьехал, всмысле чтоб волны веером расходились?

ну не веером — они ж не из точки, просто их пути под углом. да не надо это. sea6 хорошо выглядит!

an_games 25.08.2010 00:38

Волгоградец, я впринципе с самого начала эксперементировал как раз с этими фильтрами, но у меня очень грузило систему, особенно с большой битмапой, по этому отложил эксперементы пока не перейду на AS3.
Решения с pixelBender и картами мне показались интересными, нужно попробовать.
К стати, где можно почитать про то как использовать готовые карты для perlin noise, я где-то видел подобное, но не помню где.
К стати water2 у меня грузит ее на 100%))
Тоже, пытался так же как утебя, совместить мелкую зыбь с большими волнами, но тогда у меня это не вышло , как-то не докумекал, теперь понял как надо было.
Еще у меня подводное пространство, скорей всего, будет динамическое- акулы, тонущие корабли, так что тут еще и это нужно учесть.

Zebestov 25.08.2010 03:11

perlin noise не годится в качестве правильной displacement map для поверхности моря/океана. нужен fractal noise. проверено 100500 раз.

Волгоградец 25.08.2010 12:00

Готовая карта - это сгенерированная один раз битмапДата с нужным изображением. Потом ее просто двигать нужно.

an_games 25.08.2010 13:20

Цитата:

Готовая карта - это сгенерированная один раз битмапДата с нужным изображением. Потом ее просто двигать нужно
А, понял) Я думал ты имеешь ввиду вот это http://3d-area.ru/content/blogcategory/15/31/

Zebestov, я тоже такое слышал, но во флеше fractal noise вроде нет.

Zebestov 25.08.2010 14:01

вот поэтому твои заранее подготовленные карты для sea6 наиболее удачное направление =)
хотя стало интересно — насколько "тяжелый" алгоритм fractal noise?

Добавлено через 27 часов 57 минут
Вообще-то fractal noise в AS3 есть:

Цитата:

perlinNoise(baseX:Number, baseY:Number, numOctaves:uint, randomSeed:int, stitch:Boolean, fractalNoise:Boolean, channelOptions:uint = 7, grayScale:Boolean = false, offsets:Array = null):void
его только надо инвертировать ;)


Часовой пояс GMT +4, время: 10:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.