Данный пост является переводом статьи, взятой из раздела Demos, Tutorials and Tips официального блога unity3d.
Этот пост расскажет вам как создать воду с помощью специально подготовленного меша, откорректировать настройки и сделать так, чтоб вода выглядела лучше. Чтобы быть в курсе новинок, в данном посте будет рассказано о новых компонентах воды в Unity3d Pro, а затем будут рассмотрены некоторые моменты, которые будут интересны всем.
Какие элементы составляют воду?
Водород и кислород.А в Unity3d?
Существует множество различных типов воды, которые вы можете создать из префабов. Я остановлюсь на ассетах Water4ExampleSimple, которые, по существу являясь парой 3D мешей, представляют поверхность воды вместе с:- скрипт WaterTile (WaterTile script),
- шейдер воды (Water shader).
- скрипт воды (water script), который отображает цвета, нормальные текстуры, и основные параметры эффекта;
- скрипт отражения (reflection script);
- опциональный скрипт освещения для зекрального эффекта (lighting script);
- опциональный скрипт смещения (displacement script).
Как я могу сделать воду?
Самый простой способ - перетащить префаб на сцену и настроить меш:- Assets > Import Package > Water (только pro);
- в окне проекта откройте папку Standard Assets > Water (только pro);
- откройте папку Water4;
- перетащите префаб Water4Example (Simple) на сцену;
- разместите примерно там, где требуется;
- выберите один из tile-мешей, перейдите к компоненту меша в инспекторе (жмите на круглую иконку справа) и выберите ваш меш (должен быть у вас в проекте);
- поверните родительский узел Water4ExampleSimple на 90 градусов, если ваш меш расположен не под тем углом (это может произойти, если вы экспортируете его из 3D-приложения с системой координат, отличной от системы unity3d);
- отпозиционируйте ваш меш, двигая родительский узел;
- удалите второй tile-меш.
Настройки
Теперь у вас есть меш воды и вы можете поиграть с настройками. Выберите узел Water4ExampleSimple и просмотрите параметры в инспекторе.Основа воды
Плоское отражение
Этот скрипт для включения/отключения плоского отражения в реальном времени. Отражения вычисляются относительно высоты родительского меша к которому и привязан данный скрипт. Поэтому локальный Y transform дочерних мешей должен быть 0. Здесь вы также можете включить или отключить отражения неба (skybox).Зеркальное освещение
Вы можете отрегулировать силу отражения и перетащить любой transform, чтобы обозначить источник зеркального освещения. Это может быть как ваш transform направленного освещения, так и любой другой объект (совсем не требуется, чтоб он был источником света).Смещение Герстнера
Здесь вы можете отрегулировать настройки для генерации волны по алгоритму Герстнера.Советы по созданию воды
- Сходите и взгляните на настоящую воду - очень полезно изучать что-то визуально, прежде чем это сделать в unity3d. Снимите видео если есть такая возможность.
- Вода поглащает красный свет из спектра, отражая больше зеленых и синих лучей в добавок к небу, это заставляет думать, что вода синяя, поэтому:
- вы не можете сделать плоскость синей (да и не следует этого делать), но если вы используете синие и зеленые цвета в плоскостях под водой, таких как бассейн, к примеру, вы можете усилить иллюзию;
- (думаю именно поэтому изготовители бассейнов используют зеленую/синюю/бирюзовую плитку);
- чем темнее синий, тем глубже кажется вода - вы можете использовать более темный цвет и подкрашивать преломление темнее в глубине.
Использование синих/зеленых цветов против использования серых/розовых |
- Изменяйте настройки эффектов, это может помочь побороть сомнение:
- скорость сдвига нормалей (Scrolling speed of normals);
- отражение (Reflection);
- преломление (Refraction);
- сила Фреснеля и нормальная сила (Fresnel and Normal strength);
- смещение (Displacement).
- Одним из полезных советов является выключить практически все, например, выкрутить все слайдеры в 0 и затем добиться нужного эффекта.
- Если у вас выпуклый меш (такой как водопад/бортик бассейна), добавьте деталей к кривой, чтоб помочь воде "изогнуться".
В следующий раз рассмотрим пену на воде и угасание глубины.
Примечание переводчика: если есть какие-то неточности перевода, смело обращайтесь в комментариях, исправлю.
Ахуительно
ОтветитьУдалитьспасибо))) буду ждать продолжения)))
ОтветитьУдалитьЕсли не нырять, всё конечно хорошо, но когда глядишь из под воды то с отражениями творится нечто непотребное. Стандартная вода юнити никуда не годится, всё сделано, извиняюсь, через жопу.
ОтветитьУдалитьСпасибо за отзыв, чужой опыт очень интересен :)
УдалитьПодскажите автора (оригинал)
ОтветитьУдалитьОригинал лежит вот по этой ссылке: http://blogs.unity3d.com/2011/10/07/top-tips-for-water-in-unity/
УдалитьАвтор: Olly Nicholson