Ru/Adding Water: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
m (otherlang2)
No edit summary
Line 1: Line 1:
{{otherlang2
{{otherlang2
|title=Добавления воды
|title=Добавление воды
|en=Adding Water
|en=Adding Water
|zh-cn=Adding Water:zh-cn
|zh-cn=Adding Water:zh-cn
}}
}}
{{Cleanup:ru|Это техническая статья, а не сочинение}}
{{Cleanup:ru|Это техническая статья, а не сочинение}}
Вода... Она занимает большую часть земли... Какая игра была без воды, или вообще какой-нибудь жидкости? Half-Life имеет много карт с водой. Каналы, Радиоактивные Воды. Вода в них являлась основной частью. И в игре она хорошо проработана движком. Перейдём непосредственно к созданию воды.
Вода - очень сложный шейдер в движке Source: она анимированная, отражающая, мутная, искажающая отражение и использует бамп, поэтому нужно знать определенные правила и ограничения по размещению воды, и какую воду использовать в разных случаях.
 


== "Дорогая" вода ==
== "Дорогая" вода ==


Этот вид воды самый красивый, но также стоит вам много ресурсов. Этот Шейдер будет отражать мир вокруг неё, иметь туман в ней (туман основан на обмане, то бишь стоит браш, который отвечает за туман внутри.) и анимировать объемную текстуру на поверхности. Эти результаты фото-реалистичны и иногда их невыгодно использовать. Так что используйте этот вид воды только в тех местах, с которыми игрок встречается больше всего.
Этот тип воды выглядит лучше всего, но он более ресурсоемок. Такой шейдер будет все отражать, искажать отражения и делать мутным все, что под водой, и воспроизводить анимацию бамп-маппнга. С одной стороны результаты будут фотореалистичными,а с другой - слишком медленными в комплексных сценах.
 
<div style="margin:0.4em 1em 0.5em;"><strong style="display:table-cell;text-align:right;white-space:nowrap;padding-right:0.3em;">[[File:Note.png|link=|alt=]] Примечание:</strong><span style="display:table-cell;">"Дорогая" вода будет только корректного отображения, если эти [[Adding_Water:ru#Требования|требования]] будут выполнены.</span></div>


== "Легкая" Вода ==
== "Легкая" Вода ==


Для ситуаций, где красота воды не так важна, на недоступных местах, например. Эта версия воды не отражает мир вокруг неё, делая её менее реалистичной, но зато более легкой в компилировании. "Дорогая" вода будет возращать к чалой воде, на слабых видеокартах, если они не могут поддерживать эти выкрутасы (отражения, бамп, туман) чтобы рендерить нормально. Это будет также возращаться к этому материалу то есть к чалому, если юзер (пользователь) отключит визуальное качество в настройках видео в игре.
В ситуациях, когда требуется более простое решение в плане воды (чтобы уменьшить затрату ресурсов системы), может быть использована “быстрая” вода. Она не отражает окружающего пространства, что делает менее реалистичной, но более быстродейственной. Качественная вода будет проигрывать быстрой на видеокартах без поддержки возможностей, нужных для ее правильного отображения. Она также будет уступать быстрой воде, если пользователь поставит в настройках плохое качество воды.
 
== Рекомендации ==
 
Чтобы вода выглядела хорошо и работала тоже, вода имеет ряд правил как её размещать и использовать внутри карты.
 
* Здесь может быть только один уровень высоты воды в PVS если вода "дорогая".
 
* "Дорогая" и "Дешевая" вода не будет использоваться одновременно в том же PVS.
 
* Водная поверхность не должна наклонятся по оси Z, она должна всегда быть параллельна горизонту в карте.
 
* Вода создаётся с помощью применения водного материала к верхним поверхностям браша, когда другие стороны должны быть закрашены tools\toolsnodraw материалом.
 
* water_lod_control энтитя контролирует дистанцию в каждом дорогом водном переходе в дешевую воду.
 
* env_cubemap энтитя должна присутствовать на водной поверхности чтобы рендерить на DX9 харде.
 
{{Note|Вода это ''не'' браш, и не привязана к энтите. Водные браши включенные в любой браш-энтитю не будет рендерить корректно.}}
 
== Построение воды ==
 
Чтобы добавить водный объём к вашему уровню, следуйте следующим шагам:
 
1. Создайте браш размера водной массы используя Block Tool.
 
2. Откройте '''Texture Browser''' нажав на кнопку Browse на Texture Bar.


3. Дважды кликните tools\toolsnodraw материал в Texture Browser.
== Требования ==


4. Теперь нажмите на Apply Current Texture кнопку чтобы применить текстуру nodraw на браш.
Чтобы вода правильно работала, имеется несколько правил по её размещению и использованию на карте.


5. Выделите Texture Application Tool, который откроет '''Face Edit''' режим.
* Может быть только один уровень высоты воды в [[PVS]], если вода "дорогая".
* "Дорогая" и "Дешевая" вода не может использоваться одновременно в одном [[PVS]].
* Поверхность воды никогда не должна склоняться по оси Z, она всегда должна быть параллельна линии горизонта на карте.
* Вода создаётся с помощью применения водного материала к верхним поверхностям браша, когда другие стороны должны быть закрашены материалом <code>tools\toolsnodraw</code>
* Энтити [[water_lod_control]] контролирует дистанцию, на которой дорогая вода переходит в дешевую.
* Энтити [[env_cubemap]] должна присутствовать над водной поверхностью, чтобы правильно отображать на аппаратных средствах sub-DX9
* [[Areaportal|Areaportals]] никогда не могут пересекать поверхность воды.
* Вода не [[Leak|запечатывает]] карту.
* Только верх браша отображается правильно, если смотреть. Бока и дно не отображаются.


6. Кликните левой кнопкой мыши на верхний фэйс водной браши на 3d виде чтобы выделить её.
Вода не работает с брашевыми энтити и не должна к ним привязана. Водные браши, привязанные к любым брашевым энтити, не будут отображаться правильно.


7. Нажмите '''Browse''' чтобы отобразить Texture Browser опять.
== Постройка ==


8. Напишите "water" в поле '''filter'''. Он отсеит все текстуры с названием water.
Для добавления толщи воды на ваш уровень, следуйте этим шагам:


9. Выберите водный материал чтобы применить дважды щёлкните мышью. Один из материалов можете попробовать nature/water_canals_water2.
# Создайте браш размера водной массы используя Block Tool.
# Откройте '''Texture Browser''' нажав на кнопку Browse на Texture Bar.
# Дважды кликните tools\toolsnodraw материал в Texture Browser.
# Теперь нажмите на Apply Current Texture кнопку чтобы применить текстуру nodraw на браш.
# Выберете Texture Application Tool, который откроет режим '''Face Edit'''.
# Кликните левой кнопкой мыши на верхний фейс водного браша в 3D виде, чтобы выделить его..
# Нажмите '''Browse''', чтобы снова отобразить '''Texture Browser'''.
# Введите <code>water</code> в поле '''filter'''. Это отобразит вам все материалы с ключевым словом <code>water</code> в названии.
# Выберите водный материал для применения, дважды щелкнув по нему. Один из материалов можете попробовать <code>nature/water_canals_water2</code>.
# Нажмите кнопку'''Apply''' кнопку на панели '''Face Edit'''
# Браш должен иметь правильно созданную воду. Скомпилируйте и запустите вашу карту (с включенными VVis и VRad) для тестирования.


10. Нажмите '''Apply''' кнопку на панели '''Face Edit'''
Для правильного отображения водных поверностей, необходимо для вашей карты иметь skybox, и водный браш прямоугольной формы.


11. Браш готов. Компильте карту и наслаждайтесь шедевром. (VVis и VRad включите обязательно!)
=== Конкретные игровые предупреждения ===


{{Note|Иногда для правильного отображения воды нужен скайбокс!}}
* {{l4d2}} L4D2 карты также требуют [[env_fog_controller]].
* {{as}} Все водные браши в Alien Swarm должны быть присоединены [[func_brush]], названному "structure_seal".
* {{Portal}} Чтобы создать ядовитую воду в Portal, вы должны использовать текстуру <code>nature/hazard_liquid</code>.


== Cubemaps и вода ==
== Cubemaps и вода ==


Cubemaps - это важная часть использования водных поверхностей. На видеокартах, которые работают на DX меньше чем 9, невозможно рендерить в реальном времени отражения водной поверхности. Для таких компьютеров создаётся ентитя env_cubemap, которая предварительно просчитывает карту на отражения.
Cubemaps важны для использования с водными поверхностями. На видеокартах, которые работают на DX меньше чем 9, невозможно отображать в реальном времени отражения водной поверхности. Для этих карт создаётся энтити [[env_cubemap]], которая предварительно просчитывает карту отражений.
 
Добавляем env_cubemap к водной поверхности:
 
1. Добавим env_cubemap энтитю используя Entity Tool.
 
2. Разместите env_cubemap выше поверхности, около центра.
 
3. Дважды кликните на env_cubemap на 3d виде чтобы отобразить '''Object Properties'''.
 
4. Кликните на Brush faces ключ в Object Properties.
 
5. Кликните '''Pick...''' кнопку. Мышь примет курсор пипетки.
 
6. Нажмите на верхний фэйс чтобы выделить его. Он закрасится красным и добавится его ID в значение env_cubemap'а
 
7. Закройте Object properties диалог, применив результаты.
 
8. Компилируйте и запустите свою карту. Карта открылась, откройте консоль, и наберите ''buildcubemaps''. Движок проработает карту окружения для каждой env_cubemap энтити, и сохранит информацию в BSP файл.


== В заключении ==
Добавляем [[env_cubemap]] к водным поверхностям:


В заключении хочу сказать несколько вещей про воду. Как то раз я хотел сделать футуристическую карту, где поверхность воды была повёрнута на 90 градусов. Никогда этого не делайте...
# Добавьте энтити [[env_cubemap]] используя Entity Tool.
# Разместите [[env_cubemap]] выше поверхности воды, около центра.
# Дважды кликните на [[env_cubemap]] в 3D виде,чтобы отобразить Object Properties.
# Кликните на ключ '''Brush faces'''  в '''Object Properties'''.
# Кликните кнопку '''Pick...'''. Курсор мыши смениться на иконку пипетки.
# Кликните на верхний фейс воды, чтобы выделить его с пипеткой. Он выделиться красным, чтобы показать ассоциацию фейса с энтити [[env_cubemap]].
# Закройте '''Object properties'''
# Скомпилируйте и запустите вашу карту. Когда карта загрузилась, откройте консоль разработчика и введите <code>buildcubemaps</code>. Движок просчитает карту окружения для каждой энтити env_cubemap , и сохранит информацию в [[BSP]] файл.


== ссылки ==
== См. также ==
* [[Water]]
* [[Water (shader)]]


[[Category:Level Design:ru]]
[[Category:Level Design Tutorials]]
[[Category:Water]]

Revision as of 03:16, 19 October 2013

Template:Otherlang2

Broom icon.png
This article or section needs to be cleaned up to conform to a higher standard of quality because:
Это техническая статья, а не сочинение
For help, see the VDC Editing Help and Wikipedia cleanup process. Also, remember to check for any notes left by the tagger at this article's talk page.

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


"Дорогая" вода

Этот тип воды выглядит лучше всего, но он более ресурсоемок. Такой шейдер будет все отражать, искажать отражения и делать мутным все, что под водой, и воспроизводить анимацию бамп-маппнга. С одной стороны результаты будут фотореалистичными,а с другой - слишком медленными в комплексных сценах.

Примечание:"Дорогая" вода будет только корректного отображения, если эти требования будут выполнены.

"Легкая" Вода

В ситуациях, когда требуется более простое решение в плане воды (чтобы уменьшить затрату ресурсов системы), может быть использована “быстрая” вода. Она не отражает окружающего пространства, что делает менее реалистичной, но более быстродейственной. Качественная вода будет проигрывать быстрой на видеокартах без поддержки возможностей, нужных для ее правильного отображения. Она также будет уступать быстрой воде, если пользователь поставит в настройках плохое качество воды.

Требования

Чтобы вода правильно работала, имеется несколько правил по её размещению и использованию на карте.

  • Может быть только один уровень высоты воды в PVS, если вода "дорогая".
  • "Дорогая" и "Дешевая" вода не может использоваться одновременно в одном PVS.
  • Поверхность воды никогда не должна склоняться по оси Z, она всегда должна быть параллельна линии горизонта на карте.
  • Вода создаётся с помощью применения водного материала к верхним поверхностям браша, когда другие стороны должны быть закрашены материалом tools\toolsnodraw
  • Энтити water_lod_control контролирует дистанцию, на которой дорогая вода переходит в дешевую.
  • Энтити env_cubemap должна присутствовать над водной поверхностью, чтобы правильно отображать на аппаратных средствах sub-DX9
  • Areaportals никогда не могут пересекать поверхность воды.
  • Вода не запечатывает карту.
  • Только верх браша отображается правильно, если смотреть. Бока и дно не отображаются.

Вода не работает с брашевыми энтити и не должна к ним привязана. Водные браши, привязанные к любым брашевым энтити, не будут отображаться правильно.

Постройка

Для добавления толщи воды на ваш уровень, следуйте этим шагам:

  1. Создайте браш размера водной массы используя Block Tool.
  2. Откройте Texture Browser нажав на кнопку Browse на Texture Bar.
  3. Дважды кликните tools\toolsnodraw материал в Texture Browser.
  4. Теперь нажмите на Apply Current Texture кнопку чтобы применить текстуру nodraw на браш.
  5. Выберете Texture Application Tool, который откроет режим Face Edit.
  6. Кликните левой кнопкой мыши на верхний фейс водного браша в 3D виде, чтобы выделить его..
  7. Нажмите Browse, чтобы снова отобразить Texture Browser.
  8. Введите water в поле filter. Это отобразит вам все материалы с ключевым словом water в названии.
  9. Выберите водный материал для применения, дважды щелкнув по нему. Один из материалов можете попробовать nature/water_canals_water2.
  10. Нажмите кнопкуApply кнопку на панели Face Edit
  11. Браш должен иметь правильно созданную воду. Скомпилируйте и запустите вашу карту (с включенными VVis и VRad) для тестирования.

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

Конкретные игровые предупреждения

  • Left 4 Dead 2 L4D2 карты также требуют env_fog_controller.
  • Alien Swarm Все водные браши в Alien Swarm должны быть присоединены func_brush, названному "structure_seal".
  • Portal Чтобы создать ядовитую воду в Portal, вы должны использовать текстуру nature/hazard_liquid.

Cubemaps и вода

Cubemaps важны для использования с водными поверхностями. На видеокартах, которые работают на DX меньше чем 9, невозможно отображать в реальном времени отражения водной поверхности. Для этих карт создаётся энтити env_cubemap, которая предварительно просчитывает карту отражений.

Добавляем env_cubemap к водным поверхностям:

  1. Добавьте энтити env_cubemap используя Entity Tool.
  2. Разместите env_cubemap выше поверхности воды, около центра.
  3. Дважды кликните на env_cubemap в 3D виде,чтобы отобразить Object Properties.
  4. Кликните на ключ Brush faces в Object Properties.
  5. Кликните кнопку Pick.... Курсор мыши смениться на иконку пипетки.
  6. Кликните на верхний фейс воды, чтобы выделить его с пипеткой. Он выделиться красным, чтобы показать ассоциацию фейса с энтити env_cubemap.
  7. Закройте Object properties
  8. Скомпилируйте и запустите вашу карту. Когда карта загрузилась, откройте консоль разработчика и введите buildcubemaps. Движок просчитает карту окружения для каждой энтити env_cubemap , и сохранит информацию в BSP файл.

См. также