Объект 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") вы измените имя вашего файла карты (например: если было "de_train.bsp", а измените на "de_train2.bsp"), то некоторые env_cubemap могут перестать работать и придётся перестраивать все env_cubemap заново, что в свою очередь приведёт к увеличению размера вашей карты, потому что старые картинки, созданные для объектов env_cubemap, не будут удалены из вашей карты. Всегда сохраняйте копию вашей карты после этапа компиляции, до того как начнёте строить картинки для объектов env_cubemap.
Если выполнить команду "buildcubemaps" несколько раз (см. пункт "Последовательность действии для правильной работы env_cubemap"), то старые картинки, созданные для env_cubemap не удалятся (!) и размер карты вырастет ещё больше. Будьте очень аккуратны! Всегда сохраняйте копию вашей карты после этапа компиляции, до того как начнёте строить картинки для объектов env_cubemap.
Компиляция карты может занимать весьма продолжительное время, порой до нескольких дней(!), поэтому после компиляции, перед выполнением консольных команд "buildcubemaps" сохраните копию вашей карты.
Для удобной отладки объектов env_cubemap используется специальное "оружие" weapon_cubemap, которое отражает картинки, созданные объектами env_cubemap, на своих шести сферах. При помощи этого "оружия" появляется возможность находить проблемные участки карты и отслеживать места переходов от картинок одного env_cubemap, до картинок другого env_cubemap. Чтобы использовать это оружие, оно должно быть установлено. Если у вас нет этого "оружия", вы можете легко установить его себе. Нужные файлы и инструкцию по установке/использованию вы можете найти в дополнительных файлах CSSSDK: /+files/weapon_cubemap.zip
csssdk_env_cubemap.vmf
Для такой небольшой карты, на ней размещено достаточно много env_cubemap. Обычно env_cubemap ставят в местах с чётким визуальным контрастом. Например: в тёмном коридоре чётко видно яркий свет, идущий из двери в конце коридора. Если пол в таком коридоре имеет отражающую поверхность, то для поверхности пола нужен объект env_cubemap. Если в этом случае не поставить объект env_cubemap, то на полу не будет отражаться не только дверь, но и вообще ничего.
На карте на полу и потолке применён материал "metal/metalwall048a", который использует объекты env_cubemap для отражения окружения. Обратите внимание на то, что вся карта разбита на "квадраты". При таком разбиении на квадраты, каждая квадратная поверхность использует свой env_cubemap, который она выбирает сама – автоматически, в момент построения env_cubemap. Материал "metal/metalwall048a", применяемый на потолке и полу, выполнен в виде выпуклых плит, поэтому в самой игре не видны состыковки/трещины между квадратными поверхностями, на которые разбита вся карта. Попробуйте поменять материал на полу и потолке на "de_dust/tilefloor02" и посмотрите что произойдёт.