Ru/Adding Water: Difference between revisions

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


== "Дорогая" (?) вода ==


Этот вид воды самый красивый, но также много стоит (прим. переводчика: компиляция больше наверное если бы вода стоила в игре :-)). Этот Шейдер будет отражать мир вокруг неё, иметь туман в ней (основан на обмане, то бишь стоит браш, который отвечает за туман внутри.) и анимирует объемную текстуру на поверхности. Эти результаты фото-реалистичны, иногда её невыгодно использовать. (вспомните Шоссе 17, там на побережье вода хорошо проработана, а отойдя подальше вас едят пиявки :-), это такое ограничение, чтобы заблокировать доступ игрока к плохо прорабатанной воде, вода теряет качества уйдя дальше. Разрабы халтурят, халтурьте и вы, ведь надо уложиться в бюджет, и долгая компиляция не красит никого). Так что используйте этот вид воды только в тех местах, с которыми игрок встречается больше всего.
Вода - очень сложный шейдер в движке 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;">"Дорогая" вода будет только корректного отображения, если эти {{L|Adding_Water#Требования|требования}} будут выполнены.</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 на браш.
* Может быть только один уровень высоты воды в {{L|PVS}}, если вода "дорогая".
* "Дорогая" и "Дешевая" вода не может использоваться одновременно в одном {{L|PVS}}.
* Поверхность воды никогда не должна склоняться по оси Z, она всегда должна быть параллельна линии горизонта на карте.
* Вода создаётся с помощью применения водного материала к верхним поверхностям браша, когда другие стороны должны быть закрашены материалом <code>tools\toolsnodraw</code>
* Энтити {{L|water_lod_control}} контролирует дистанцию, на которой дорогая вода переходит в дешевую.
* Энтити {{L|env_cubemap}} должна присутствовать над водной поверхностью, чтобы правильно отображать на аппаратных средствах sub-DX9
* {{L|Areaportal|Areaportals}} никогда не могут пересекать поверхность воды.
* Вода не {{L|Leak|запечатывает}} карту.
* Только верх браша отображается правильно, если смотреть. Бока и дно не отображаются.


5. Выделите Texture Application Tool, который откроет '''Face Edit''' режим.
Вода не работает с брашевыми энтити и не должна к ним привязана. Водные браши, привязанные к любым брашевым энтити, не будут отображаться правильно.


6. Кликните левой кнопкой мыши на верхний фэйс водной браши на 3d виде чтобы выделить её.
== Изготовление ==


7. Нажмите '''Browse''' чтобы отобразить Texture Browser опять.
Для добавления толщи воды на ваш уровень, следуйте этим шагам:


8. Напишите "water" в поле '''filter'''. Он отсеит все текстуры с названием water.
# Создайте браш размера водной массы используя 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) для тестирования.


9. Выберите водный материал чтобы применить дважды щёлкните мышью. Один из материалов можете попробовать nature/water_canals_water2.
Для правильного отображения водных поверхностей, браш должна иметь прямоугольною форму, и необходимо карте иметь скайбокс. Водная браш может пересекаться с другими брашами. Если вода не правильно отображается (невидимая), то в карте находится утечка.


10. Нажмите '''Apply''' кнопку на панели '''Face Edit'''
=== Конкретные игровые предупреждения ===


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


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


Cubemaps - это важная часть использования водных поверхностей. На видюхах, которые тя-янут на директ-иксе меньше чем 9, невозможно рендерить в реальном времени отражения водной поверхности. Для таких стариков (то есть видюх старых) создаётся ентитя env_cubemap которая предварительно просчитывает карту на отражения.
Cubemaps важны для использования с водными поверхностями. На видеокартах, которые работают на DX меньше чем 9, невозможно отображать в реальном времени отражения водной поверхности. Для этих карт создаётся энтити {{L|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 файл.
Добавляем {{L|env_cubemap}} к водным поверхностям:


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


В заключении хочу сказать несколько вещей про воду, связанные с моим опытом. Как то раз я хотел сделать футуристическую карту, где поверхность воды была повёрнута на 90 градусов. Никогда этого не делайте :-). Ещё иногда вода почему-то не будет просчитывать себя. это смотрите в окошке компиляции, я эту проблему не решил.
== См. также ==
* {{L|Water}}
* {{L|Water (shader)}}


== ссылки ==
{{ACategory|Level Design Tutorials}}
{{ACategory|Water}}


[[Category:Level Design:ru]]
{{ACategory|Level Design}}
{{ACategory|Tutorials}}
{{ACategory|Water}}

Latest revision as of 03:41, 22 August 2024

English (en)Français (fr)Русский (ru)中文 (zh)Translate (Translate)


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

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

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

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

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

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

Требования

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

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

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

Изготовление

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

  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) для тестирования.

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

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

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

Cubemaps и вода

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

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

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

См. также