Ru/Cubemaps

Чтобы движок Source правильно показывал многочисленные отражающие , они должны быть объединены с внешними данными. Эти данные хранятся в виде карты-куба (cubemap), то есть кубической текстуры, которая представляет собой трёхмерное изображение определённой области. Для этого движок Source использует точечные сущности в качестве образцов, с помощью которых создаёт текстуры и сохраняет их в файл с расширением ".bsp". При обработке зеркальных и других окружающих материалов он использует кубы для получения более точного окружения. Другими словами, куб создаёт текстуры, которые будут моделировать отражающую поверхность.
==Размещение==
Чтобы обозначить область, которую охватит куб, просто вставьте на карту сущность . Когда карта скомпилируется программой , поверхности геометрии мира автоматически свяжут себя с ближайшей , и будут использовать рождённый ей куб. Поверхности связывают себя с ближайшей (однако, в свойствах куба можно задать любую привязываемую поверхность); движущиеся сущности будут автоматически выбирать нужный куб. Важно, чтобы положение было эстетичным и производительным.
Карты-кубы используются для разных ситуаций, и должны располагаться соответствующе. Одни нужны для отображения статической геометрии мира. Другие - для отображения сущностей игроков, включая ботов (). Третьи нужны для отображения всевозможных неигровых энтить. Каждой из этих целей соответствует оптимальное расположение , дабы обеспечить максимальную отдачу. Вот несколько простых эвристических правил, которым необходимо следовать:
*Если куб предназначен для NPC или игрока, следует размещать на уровне головы (как правило, 64 юнита). Таким образом, она наиболее точно передаст мир с точки зрения стоящего.
*Если куб предназначен для статичной геометрии мира, то справедливым, как правило, будет расстояние в 16 юнитов от всех поверхностей.
*В каждой зоне с визуальным контрастом должна быть своя карта-куб. Коридор с ярко-жёлтым светом требует своей , особенно, если она расположена рядом с комнатой, где горит тускло-голубой свет. Если в одном их этих мест не будет , то отражения и блики на сущностях и геометрии будут моделироваться неправильно.
==Построение кубов==
Когда карта будет скомпилирована и освещена и (соответственно), можно создавать кубы. После загрузки карты, введите в команду buildcubemaps. Начнётся процесс построения, который займёт некоторое время, в течение которого вы сможете увидеть каждую из шести граней кубов. После завершения, карту или игру нужно перезагрузить, чтобы кубы правильно применились ко всем поверхностям.
 
===HDR===
Если карта скомпилирована с включённой опцией в программе , кубы необходимо построить как в режиме HDR, так и LDR (не-HDR). Создание кубов только в одном из этих режимов будет означать, что кубы не представлены в другом режиме. Информацию о том, как строить кубы под HDR см. в .
Кубы должны быть построены для карт LDR и HDR. Предположим, вы уже находитесь в режиме HDR и загрузили свежескомпилированную карту (в программе VRAD должен быть включён параметр '-both'). Перейдите в консоль и выполните следующие команды:
 buildcubemaps
 mat_hdr_level 0 (для перехода в LDR)
 restart (для перезагрузки карты)
 buildcubemaps
 mat_hdr_level 2 (для перехода обратно в HDR)
 restart (для перезагрузки карты)
===Игры Team Fortress 2 / Source 2012+ ===
 по-умолчанию не применяет кубы к отражающим поверхностям. (Аналогичные проблемы также имеются и в некоторых установках , когда кубы просто не появляются). Все текстуры светятся чёрно-розовыми шашечками. Если вы построите кубы, и один из них увидит большую сверкающую поверхность, то зафиксирует её в 6 изображениях. Это значит, что некоторые объекты будут бликовать так, будто рядом с ними находится розовая и чёрная сверкающая текстура. Для решения проблемы, кубы нужно строить с отключенной зеркальностью. Чтобы построить кубы для карты TF2, загрузите её через "Create Server". Затем, откройте консоль и выполните следующие команды:
Создание кубов только для LDR или HDR:
 mat_specular 0
 buildcubemaps
 mat_specular 1
 disconnect
 sv_cheats 1
 mat_reloadallmaterials
 sv_cheats 0
При создании кубов для HDR требуется, чтобы вы повторили эти шаги после загрузки карты с включённым HDR.
===Кубы после обновления SteamPipe===
В связи с обновлением SteamPipe, возникла проблема построения кубов без видимых результатов. Согласно ветке форума, проблему можно решить следующим образом:
# Поместите энтити env_cubemap в доступных местах вашей карты, и скомпилируйте её. Важно: Название карты должно быть не длиннее 30 символов, (включая расширение .bsp), иначе .bsp не запишется! Также, не меняйте название карты после создания кубов, иначе они не будут работать!
# Возьмите ваш любимый редактор файлов .bsp (Например, VIDE или Pakrat. Работа с этими инструментами не входит в данную статью.), и загрузите ваш .bsp. 
# Удалите все файлы "Texture" или "Texture (HDR) ". (Не файлы "Material", только .vtf!)
# Сохраните отредактированный .bsp. 
# Скопируйте эту карту назад в каталог карт вашей игры.
# Откройте консоль и введите: "map -название карты-". (В моём случае, "ttt_mars_colony_cubemap".) 
# В игре, снова откройте консоль и введите это: "mat_specular 0" и "buildcubemaps". 
# Подождите, пока построятся кубы, и снова включите зеркальность с помощью "mat_specular 1", а затем перезагрузите ваши материалы командой "mat_reloadallmaterials".
 
===Source Filmmaker===
Сегодня создание кубов в Source Filmmaker не работает, и отрисовывает только одну поверхность с одним кубом. Чтобы правильно создавать кубы в Source Filmmaker, скопируйте файл карты вместе с принадлежностями (текстурами, моделями, и т.д.) в . Движок не требует перекомпиляции карты, достаточно её перенести. Загрузите вашу карту в Alien Swarm и введите в консоль команду "buildcubemaps". После отрисовки поверхностей, ваша карта будет содержать кубы, которые можно скопировать обратно в Source Filmmaker. Это работает только с новыми версиями карт, при загрузке карт из или игра будет вылетать.
Откройте 'не скопированную' версию в Хаммер и постройте её с помощью дополнительного режима поиска 'чужих' (относительных) путей содержимого sfm. todo: абсолютные пути.
Пример для 'общего' расположения:
 	"SearchPaths"
 	{
 		"Game"	"|gameinfo_path|."
 		"Game"	"swarm"
 		"Game"	".\..\SourceFilmmaker\game\tf_movies"
 		"Game"	".\..\SourceFilmmaker\game\tf"
 		"Game"	".\..\SourceFilmmaker\game\usermod"
 		"Game"	".\..\SourceFilmmaker\game\hl2"
 		"Game"	"swarm_base"
 		"Game"	"platform"
 	}
===Portal 2===
Если вы хотите создавать кубы для карт, расположенных в "Portal 2/portal2/maps" (Hammer копирует карты туда по-умолчанию), Portal 2 вылетит, потому что ищет карты в разделе "portal2_dlc2/maps". Так что, если вы хотите избежать сбоя, скопируйте вашу карту в "Portal 2/portal2_dlc2/maps" (или каталог карт вашего мода), перезагрузите её и создайте кубы снова. Это должно работать.
===Black Mesa===
Перед тем как строить кубмапы в , запустите игру с такими параметрами bms.exe -oldgameui -dev -console +r_4way_use_fast_normals 0 +mat_specular 0 
Далее запустите карту и введите в консоли buildcubemaps
== Тестирование ==
Лучше всего карты-кубы тестировать с помощью консольной команды 81. Введите её в консоль. Затем, впишите weapon_cubemap. 
 
Это заменит текущую модель оружия с "" на несколько сфер, каждая со своей отражающей поверхностью. Путешествуя по карте, вы увидите, где и как применяются кубы в пространстве, а также, на сколько верно куб описывает зону освещения и цвета. 
== Производительность ==
Сущность позволяет задавать разрешение связываемой с ней текстуры. С одной стороны, чем больше разрешение, тем точнее и “резче” результат, но с другой – сильнее расход памяти. В основном, кубы должны иметь разрешение по умолчанию (32x32 пикселя для каждой поверхности). Обычно это дает удовлетворительный результат. Некоторые исключения возможны для областей с высокой отражающей способностью или, например, для детализации определенных частей действия.
Поскольку поверхности через кубы должны соответствовать своему окружению, использование чрезмерного числа кубов на небольшой площади может привести к заметным визуальным разрывам во время перемещения по карте. Для участков с высокой отражающей способностью правильнее будет разместить один куб по цетру, и не более. Это позволит избежать швов или растрескиваний во время движения картинки.
Чтобы определить вес кубов в той или иной зоне, загляните в категорию World Rendering с помощью консольной команды . Если категория регистрирует необычайно высокую загрузку, значит в зоне слишком много кубов. Простой сценарий решения проблемы – скрыть все кубы в программе Hammer, перекомпилировать и запустить карту. Если производительность стала заметно лучше, значит надо уменьшить плотность или разрешение кубов. 
Наконец, проверить загрузку можно, отключая кубы командой mat_specular 0, но это требует подтверждения.
==Баги==
== См. также ==
* 
Category:Level_Design
Category:Russian