Env cubemap

Материал из CSM Wiki
Перейти к навигации Перейти к поиску

Оригинал Env_cubemap

Описание

Объект env_cubemap используется для создания картинок, которые будут отражаться на геометрии, игроках, оружии и прочих предметах на карте. В игре CS:S отражение окружающего мира в реальном времени используется только для особых типов материалов, (таких как вода) и только на видеокартах с поддержкой DirectX 9.0 и выше. Для остальных же составляющих карты используется упрощённая модель отражения – при помощи заранее подготовленных картинок. Для создания таких картинок как раз и используется объект env_cubemap.

"Cube Map" можно перевести как "Карта в виде куба". Каждый объект env_cubemap на карте делает для себя 6 квадратных скриншотов – слева, справа, спереди, сзади, сверху и снизу от себя. Затем он уменьшает эти скриншоты, превращая их в маленькие картинки, размером примерно 16x16 пикселей (размер можно настроить). Затем эти картинки накладываются на воображаемый Куб таким образом, чтобы если встать в самый центр такого Куба, то создавалось бы впечатление, что мы находимся в точке, где установлен наш объект env_cubemap, и видим всё тоже самое, что видели бы, если бы находились там на самом деле и вертели камерой во все стороны.


Картинки для env_cubemap создаются всего 1 раз - на финишном этапе создания карты, после чего эти картинки встраиваются в вашу карту и больше не меняются.

env_cubemap используются только на тех объектах, которые имеют отражательные поверхности. Например: отполированный пол/стены, или линзы на снайперских винтовках, или металлические поверхности, или кевларовый жилет на моделях CT-игроков и т.п.

Особенности использования

  • Объект удаляется с карты во время загрузки карты и не используется в игре.
  • Объект не может быть создан во время игры.
  • Этот объект обновляется в каждом раунде. Это означает что любые изменения объекта НЕ будут наследоваться в последующих раундах.
  • Объект может быть установлен в любом месте на карте.
  • На карте может быть установлено множество этих объектов
  • Объекты env_cubemap ставят даже там, где нет объектов с отражающими поверхностями. Это необходимо, потому что env_cubemap отражаются так же на игроках и оружии.
  • Для динамических объектов на карте, игроков и оружия выбирается и используется ближайший к ним env_cubemap.
  • Все картинки, используемые в env_cubemap вшиваются в карту, увеличивая размер карты (порой на несколько мегабайт).

Ошибки

Если после того, как вы построите все env_cubemap на карте (см. пункт "Последовательность действии для правильной работы env_cubemap") вы измените имя вашего файла карты (например: если было "de_train.bsp", а измените на "de_train2.bsp"), то некоторые env_cubemap могут перестать работать и придётся перестраивать все env_cubemap заново, что в свою очередь приведёт к увеличению размера вашей карты, потому что старые картинки, созданные для объектов env_cubemap, не будут удалены из вашей карты. Всегда сохраняйте копию вашей карты после этапа компиляции, до того как начнёте строить картинки для объектов env_cubemap.

Если выполнить команду "buildcubemaps" несколько раз (см. пункт "Последовательность действии для правильной работы env_cubemap"), то старые картинки, созданные для env_cubemap не удалятся (!) и размер карты вырастет ещё больше. Будьте очень аккуратны! Всегда сохраняйте копию вашей карты после этапа компиляции, до того как начнёте строить картинки для объектов env_cubemap.

Последовательность действии для правильной работы env_cubemap

  • Расставьте env_cubemap на карте, в тех местах, где считаете это нужным.
  • Откомпилируйте карту и запустите её в игре.
  • Если в используете различные функции отладки карты, которые отображают то чего не увидят другие игроки, тогда вам нужно отключить все эти функции, потому что картинки для env_cubemap будут создаваться на основе того, что вы можете видеть у себя на мониторе. Яркий пример таких функций: "showtriggers" или "showtriggers_toggle", которые отображают невидимый материал tools/toolstrigger в игре точно так же как он отображается в редакторе Hammer.
  • Откройте консоль и выполните команду "buildcubemaps". После завершения создания картинок закройте карту и выйдите в главное меню игры, где в консоли выполните другую консольную команду "mat_reloadallmaterials", которая перезагрузит все игровые материалы. Если вы компилируете карту БЕЗ HDR, то команду "buildcubemaps" нужно выполнить всего 1 раз после каждой новой компиляции карты. Если вы компилируете карту с HDR, то эту команду нужно выполнить в каждом режиме (с HDR и без него). Для этого после первого запуска команд "buildcubemaps" и "mat_reloadallmaterials" зайдите в графические настройки игры и включите (если выключен) или выключите (если включен) HDR. После этого вновь запустите вашу карту и по очереди выполните команды "buildcubemaps" и "mat_reloadallmaterials", как это было описано ранее.
  • Запустите/перезагрузите вашу карту и проверяйте работу объекта env_cubemap.

Советы

Компиляция карты может занимать весьма продолжительное время, порой до нескольких дней(!), поэтому после компиляции, перед выполнением консольных команд "buildcubemaps" сохраните копию вашей карты.

Для удобной отладки объектов env_cubemap используется специальное "оружие" weapon_cubemap, которое отражает картинки, созданные объектами env_cubemap, на своих шести сферах. При помощи этого "оружия" появляется возможность находить проблемные участки карты и отслеживать места переходов от картинок одного env_cubemap, до картинок другого env_cubemap. Чтобы использовать это оружие, оно должно быть установлено. Если у вас нет этого "оружия", вы можете легко установить его себе. Нужные файлы и инструкцию по установке/использованию вы можете найти в дополнительных файлах CSSSDK: /+files/weapon_cubemap.zip

Параметры

  • Cubemap Size – размер одной картинки (этих картинок будет по шесть штук для каждого env_cubemap); обычно используют значение по умолчанию, равное (32x32); если указать в этом свойстве слишком большое значение, то разрешения вашего монитора может не хватить для создания картинок для этого объекта env_cubemap;
  • Brush Faces – к каким Brush-поверхностям применять env_cubemap; нажмите кнопку "Pick..." и, удерживая нажатой клавишу "Ctrl" на клавиатуре, выберите несколько поверхностей; для тех Brush-поверхностей, для которых не назначен env_cubemap, будет автоматически использоваться самый ближайший к ним env_cubemap.

Карта

csssdk_env_cubemap.vmf

Используются объекты

  • env_cubemap
  • func_brush
  • func_detail
  • prop_static
  • weapon_awp

Описание карты

Для такой небольшой карты, на ней размещено достаточно много env_cubemap. Обычно env_cubemap ставят в местах с чётким визуальным контрастом. Например: в тёмном коридоре чётко видно яркий свет, идущий из двери в конце коридора. Если пол в таком коридоре имеет отражающую поверхность, то для поверхности пола нужен объект env_cubemap. Если в этом случае не поставить объект env_cubemap, то на полу не будет отражаться не только дверь, но и вообще ничего.

На карте на полу и потолке применён материал "metal/metalwall048a", который использует объекты env_cubemap для отражения окружения. Обратите внимание на то, что вся карта разбита на "квадраты". При таком разбиении на квадраты, каждая квадратная поверхность использует свой env_cubemap, который она выбирает сама – автоматически, в момент построения env_cubemap. Материал "metal/metalwall048a", применяемый на потолке и полу, выполнен в виде выпуклых плит, поэтому в самой игре не видны состыковки/трещины между квадратными поверхностями, на которые разбита вся карта. Попробуйте поменять материал на полу и потолке на "de_dust/tilefloor02" и посмотрите что произойдёт.

Смотрите также