Ru/HDR Skybox Creation: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
(otherlang2'd, partially untranslated)
m (Multipage removal)
 
(18 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar|title = Создание HDR скайбоксов}}
|en=HDR_Skybox_Creation
 
}}
 
{{ToTranslate}}
{{Translate}}
[[Image:Hdrskybox.jpg|170px|right|HDR skybox textures change considerably across exposures.]]
 
[[File:Skybox ldr hdr.jpg|thumb|250px|Выгода HDR-Skybox (слева) в том, что они позволяют использовать более широкий диапазон яркости.]]
 
В отличие от большинства текстур в игре, Skybox представляет собой коллекцию больших и ярких объектов. '''Это делает {{L|HDR}} более актуальным.'''
 
{{L|VTF}} текстуры используются HDR-Skybox для хранения цветов либо в слегка сжатых 16-битных значениях {{L|Float|с плавающей точкой}} (RGBA16161616f), либо в сильно сжатых 8-битных {{L|integer|целых}} (BGRA8888). В любом случае, они будут созданы {{L|VTEX}} из несжатых 32-битных с плавающей точкой  Portable Float Map (.pfm) файлов.
 
{{tip|Несжатые HDR VTF могут быть декомпилированы в PFM с помощью {{L|vtf2tga}}. Не обращайте внимания на название программы.<br>Сжатие VTF HDR файлы могут быть разжаты в exr с помощью {{no_vtf|3.1}}.}}
 
== Создание отдельных текстур кубической карты из панорамы ==
 
Вы можете создать HDR скайбокс с помощью [https://github.com/MrKleiner/blvtf этого] аддона. Просто создайте сферу с количеством сегментов равным 64 и выполните шаги третьего абзаца. Далее идут инструкции как сделать это без этого аддона в ручную.
 
 
 
Для того, чтобы создать HDR скайбокс, нужно иметь отдельные файлы .exr или .hdr для каждой стороны скайбокса, которые будут преобразован в .pfm, а затем уже в .vtf.
 
Чтобы из панорамы сделать отдельные текстуры, нужно каждую из них отрендерить с текстуры шара. Для этого удобнее всего использовать blender.
 
{| class="standard-table floatright"
|-
! Имя !! Поворот (x y z)
|-
| ft || 90 0 90
|-
| lf || 90 0 0
|-
| bk || 90 0 -90
|-
| up || 180 0 180
|-
| rt || 90 0 -180
|-
| dn || 0 0 -180
|}
 
# Создайте новую сцену и удалите все объекты.
# Создайте шар и установите количество сегментов с 32, на 64.
# Создайте камеру в центре сцены. В её настройках измените тип на '''перспективный''', установите фокусное расстояние '''64мм''' и конец на '''100000''', подгонку сенсора на '''горизонтальное''' и там же ширину на '''128'''. Скопируйте эту камеру ещё 5 раз. В итоге у вас должно получиться 6 одинаковых камер, находящихся в центре сцены. Каждая из камер будет рендерить за свою текстуру определённой грани скайбокса.
# Для каждой из камер задайте поворот из таблицы. При рендере каждой текстуры их нужно будет назвать особым именем, так что рекомендуется переименовать камеры, чтобы не запутаться.
 
 
Теперь нужно подготовить рендер для каждой камеры.
# На временной шкале сделайте начальный кадр №1, а конечный кадр №7.
# Перетащите курсор воспроизведения на первый кадр.
# Выберете камеру и нажмите ctrl+b с курсором мыши на временной шкале.
# Перетащите курсор воспроизведения на второй кадр.
# Выберете другую камеру и нажмите ctrl+b с курсором мыши на временной шкале.
Сделайте так со всеми камерами.
 
 
Отлично! Теперь нужно подготовить панораму.
# Перейдите в окно shading и создайте новый материал и нанесите его на сферу.
# Удалите все ноды кроме вывода материала.
# Добавьте нод "Излучение" ("Emission") и подключите вывод этого нода к "Поверхности" вывода материала. Этот нод отвечает за яркость скайбокса.
# Добавьте нод "Изображение-текстура" и подключите вывод цвета к вводу цвета нода "Излучение".
# Загрузите .exr или .hdr панораму в ноде "Изображение-текстура".


Обычный LDR (Low Dynamic Range) скайбокс делается из шести 24-битных изображений (front, left, back, right, up, and down).


Такой формат прекрасно подходит для LDR, но содержит недостаточно информации чтобы хорошо смотреться через широкий спектр воздействий, осуществляемых [[HDR]]-lit окружением.
Теперь пришло время рендерить текстуры. Убедитесь что в выводе у вас стоит формат файла "Open EXR" с параметром RGB, а в поле "Постобработка" убрана галочка с поля "Видеоредактор" ("Sequencer").


Unlike most textures in a game a skybox typically represents very large 3D objects which behave very differently across different lighting conditions, making HDR imaging a far more pressing issue than normal.
Теперь можно перетаскивать курсор воспроизведения на кадр с камерой и рендерить каждую грань скайбокса с помощью кнопки F12. Каждый файл .exr нужно назвать по следующему шаблону:
*{{file|[ИмяСкайбокса]_hdr'''[Сторона]'''|exr}}
Например для камеры ft и названием скайбокса skyday01 будет соответствовать файл {{file|skyday01_hdr'''ft'''|exr}}.


An [[HDR]] (High Dynamic Range) skybox is a 32-bit floating-point format, saved by an application that supports HDR as a [[Wikipedia:Portable Float Map|Portable Float Map]]. It contains enough information to allow the resulting texture to change considerably across different [[Wikipedia:Exposure (photography)|exposures]].
По итогу у вас должно быть 6 файлов разных сторон кубмапа:
*{{file|[ИмяСкайбокса]_hdr'''ft'''|exr}}
*{{file|[ИмяСкайбокса]_hdr'''lf'''|exr}}
*{{file|[ИмяСкайбокса]_hdr'''bk'''|exr}}
*{{file|[ИмяСкайбокса]_hdr'''up'''|exr}}
*{{file|[ИмяСкайбокса]_hdr'''rt'''|exr}}
*{{file|[ИмяСкайбокса]_hdr'''dn'''|exr}}


== Небо при различных экспозициях ==
== Создание PFM ==


Перед созданием HDR скайбокса мы должны знать что небо похоже на различных экспозициях:
{{tip|[[File:Skybox half.jpg|thumb|250px|Половина всего изображения]] Поскольку нижнюю половину Skybox практически не видно, разумно отрезать "ненужную" часть. Для этого скомпилируйте стороны VTF с особой командой:


[[Image:hdr_sky_reference.jpg|700px|center|Photos of the sky at various exposures.]]
<source lang=php>
clamps 1
clampt 1
</source>


As you can see, the captured image changes as the exposure is altered. A single 24-bit image could never be used to create those effects: at 24-bit white is white, and the sun would only stand out if it was literally a different colour from the rest of the sky.
И добавьте её в материалы:


== Create a base skybox ==
<source lang=php>
$basetexturetransform "center 0 0 scale 1 2 rotate 0 translate 0 0"
</source>


First you need to create a basic skybox cube, as you would for an LDR skybox. See [[Skybox (2D)]].  
Поподробнее об использовании команд можно прочитать ниже, в подпункте "Создание материалов".
}}


With your images ready, arrange them in one large file as seen below. This step is required only if you are using the [[splitskybox]] tool. If you aren't then you are quite free to handle each texture separately.
=== Небо с различной экспозицией ===


[[Image:hdr_skybox_sides.jpg|center|Recommended skybox layout (labelled)]]
Перед созданием HDR-Skybox Вы должны запомнить, что небо выглядит в разных экспозициях:


Save this assembled image as a TGA file. If you are prompted, do ''not'' use RLE compression and ''do'' place the origin at the bottom left.


== Adding HDR data ==
[[File:hdr_sky_reference.jpg|700px|center|Фотографии неба с различной экспозицией.]]


We will now paint a sun into our skybox, which will behave in the same way as the 'exposures' photographs above. A good tool to use for this step is [http://gl.ict.usc.edu/HDRShop/download/HDRShop_92884/HDRShop.exe HDR Shop].
Как вы видите, захваченные изображения меняются в зависимости от экспозиции. Одно 8-битное изображение никогда не используется при создании таких эффектов: в 8-битном белый и есть белый, а солнце, чтобы выделиться, должно хоть немного отличаться от всех остальных цветов неба.


{{note|When you open your TGA in HDR Shop you'll see a dialogue with a slider. Feel free to fiddle with it, but you'll probably want to leave things at their defaults.}}
=== Создание базового Skybox ===


HDR Shop works by taking files created by other [[Image Manipulation Programs|image editors]] for different exposures and merging them together at 32-bit floating point. You can adjust the exposure you are working on with the {{key|+}} and {{key|-}} buttons on your keypad, or from the menu with <code>View > Exposure</code>. The current value is displayed in the lower-right corner of the screen.
Первое, что Вы должны сделать - создать базовый куб Skybox, таким же образом, как и для LDR-Skybox. Посмотрите {{L|Skybox (2D)}}


When you've reached the exposure you are looking for, choose <code>File -> Edit in image editor</code> and you will get an image to edit. HDR Shop will open the image in your default BMP editor at this point, but you can use whatever tool you want so long as you're saving the right file.
Расположите Ваши приготовленные изображения в один большой файл, как показано ниже. Этот пункт необходим только, если вы используете инструмент {{L|splitskybox|деления Skybox}}. Если это не так, то Вы вполне можете обрабатывать каждую текстуру отдельно.


There is a more detailed tutorial [http://gl.ict.usc.edu/HDRShop/tutorial/tutorial7.html available on HDR Shop's website].
[[File:hdr_skybox_sides.jpg|center|Рекомендованное расположение Skybox (стороны помечены)]]


When you are finished, OK away the HDR Shop's dialogue and choose <code>File -> Save as...</code> and select the 'Portable Floatmap' format. Name and save this PFM file as you would a 2D skybox source image.
Сохраните это изображение в формате .TGA. Если появится окно с запросом, то отключите RLE-сжатие и поместите оригинал в нижний левый угол.


=== sdk_sky_exampleup ===
=== Добавление HDR-Данных ===


[[Image:Sdk sky exampleup.jpg|right|thumb|128px|sdk_sky_exampleup]]
Теперь мы будем рисовать солнце на нашем Skybox, которое будет себя вести так же, как на фотографиях выше. Для этого есть хороший инструмент - [http://gl.ict.usc.edu/HDRShop HDR Shop]


Let's do this with <code>sourcesdk_content\dod\materialsrc\skybox\sdk_sky_exampleup.tga</code>. Open it up and adjust the exposure to -3 stops, then edit the image externally. Now paint in a sun.
{{note|При открытии вашего TGA-Файла в HDR Shop Вы увидите диалоговое окно с ползунком. Поэкспериментируйте с ним, но лучше оставить все как есть.}}


After returning to HDR Shop and OKing the dialogue, the current exposure level will be updated with the image that you just painted.
HDR Shop работает так: берет файлы из {{L|Image Manipulation Programs|редакторов изображений}} для разнообразных экспозиций, чтобы затем их объединить в 32-битный формат с плавающей точкой. Вы можете регулировать изменения с помощью клавиш {{key|+}} и {{key|-}} на клавиатуре, или из меню <code>View -> Exposure</code> (Вид -> Экспозиция). Значение отображается в правом нижнем углу экрана.


Try adjusting the exposure up and down and you'll see that the sun is now integrated into the other exposures as well. Continue editing the different exposures until the desired result is achieved. It will be a good idea to spend some time emulating the blown-out effects around the sun and the highlights on the clouds as seen in the photographic reference.
По достижении необходимой экспозиции, выберите <code>File -> Edit in image editor</code> (Файл -> Изменить в редакторе изображений). Вы сможете редактировать изображение. HDR Shop откроет его в стандартном BMP-Редакторе, но можно использовать любой инструмент, который сохранит в правильном формате.


== Creating the auxiliary skybox files ==
Более подробный урок находится [http://gl.ict.usc.edu/HDRShop/tutorial/tutorial07.php на сайте HDR Shop]]


{{warning|[[splitskybox]] Ep1 does not currently function. However, the OB version will work with either version of the engine.}}
Когда закончите, нажмите OK в диалоговом окне HDR Shop и выберите <code>File -> Save as...</code>, выберите формат 'Portable Floatmap'. Назовите и сохраните этот PFM-Файл туда же и так же, как исходное изображение 2D Skybox.


The next stage is to create all the auxiliary skybox files: separate .PFM, .TXT, and .VMT files. A new application called <code>splitskybox.exe</code> was created to split the single .PFM skybox into the six separate files needed by the Source Engine. Copy a shortcut of the <code>Splitskybox.bat</code> (located in the <code>sourcesdk\bin\</code> directory) onto your desktop, then drag the .PFM file onto this shortcut.
==== sdk_sky_exampleup ====


[[File:Sdk sky exampleup.jpg|right|thumb|200px|sdk_sky_exampleup]]


Which should give you output similar to this:


<pre>
splitskybox.exe "C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdr.pfm"


filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrft.pfm
<code>sourcesdk_content\dod\materialsrc\skybox\sdk_sky_exampleup.tga</code>. Откройте и установите экспозицию на шаг -3, затем отредактируйте изображение. Начнем рисовать солнце.
filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrlf.pfm
filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrbk.pfm
filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrrt.pfm
filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrup.pfm
filename: C:\Program Files\Steam\SteamApps\username\sourcesdk_content\dod\materialsrc\skybox\sdk_sky_example_hdrdn.pfm
Press any key to continue . . .
</pre>


When finished the content directory (e.g. <code>sdk_content\dod\materialsrc\skybox</code>) will include six new files based one the same name but appended with (ft, lf, bk, rt, up, and dn) this designates the different directions of the skybox (front, left, back, right, up, and down).
После возвращения в HDR Shop и закрытия диалогового окна, установленная экспозиция будет обновляться с изображением.


Next, create six new .TXT files based on the new file names in the same directory. These .TXT files tell the Source Engine that the skybox is a .PFM file for compression reasons, and that the base exposure level matches '+0.00' in HDR Shop. If needed you can adjust the "pfmscale" so the base level is either higher or lower, but it is recommended to author skybox textures for a scale of 1.
Попытайтесь настроить экспозиции по-разному, и Вы увидите, что солнце теперь отлично сочетается в любых вариациях. Продолжайте редактировать различные экспозиции до желаемого результата. Потратить время на имитацию эффектов солнечного свечения и бликов на облаках, как показано на референсах.


With Notepad or another [[text editor]], create these files:
=== Деление Skybox ===
* sdk_sky_example_hdr'''ft'''.txt
* sdk_sky_example_hdr'''lf'''.txt
* sdk_sky_example_hdr'''bk'''.txt
* sdk_sky_example_hdr'''rt'''.txt
* sdk_sky_example_hdr'''up'''.txt
* sdk_sky_example_hdr'''dn'''.txt


With the following text in each file:
<pre>
"pfm" "1"
"pfmscale" "1"
"nocompress" "1"
</pre>


Then, create six new .vmt files in the Game Directory (e.g. <code>day&nbsp;of&nbsp;defeat&nbsp;source\dod\materials\skybox</code>) and enter the following into each.
If you created your skyboxes in a single file as in the above image, you will need to use <code>splitskybox.exe</code> to split it into six. Just drag the PFM onto it.


{{note|The file names should all match depending upon the skybox side. These .VMT files are the same from standard, non-HDR Source skyboxes except that there is now a <code>$hdrbasetexture</code> field for HDR. The standard <code>$basetexture</code> field is used for the LDR skybox fallback.}}
{{note|{{L|splitskybox}} Ep1 does not currently function. However, the OB version will work with either version of the engine.}}
{{note|{{L|Left 4 Dead 2}} Splitskybox is not a required step. And in fact will not work without lots of retyping of suffixes of multiple files. Left 4 Dead 2's iteration of {{L|VTEX}} is able to take your "T" image array (both tga into LDR and pfm into HDR) and process it directly into the proper <name_bk>vtf format. In order to do this, create your "T" array as above. Recommended simply for the sake of sanity to get proper orientation for the top (and bottom if needed) images in your custom skybox. Create your txt file as normal and drag it onto Left 4 Dead 2's Vtex. Create materials and use in game as normal. A caveat here is, although the vtf files are compiled properly for LDR, if you are opting out of an HDR skybox and plan to use a LDR skybox only, the supplied LDR material template in the {{L|skybox_(2D)}} tutorial does not work. You will get the checkerboard pattern. I am still working on this problem.
If you are trying to import an HDR skybox (meaning, if you rendered out a set of skybox textures in your external software, and then used HDRShop to create the hdr data) of a night sky, you will experience extreme banding in the darker areas which resemble dx compression. This banding is actually a result of the way HDRShop handles color information and can be observed directly in HDRShop if you adjust down the exposure and inspect your image. I am currently experimenting with solutions and will keep you posted.}}


* sdk_sky_example_hdr'''ft'''.vmt
== Creating the materials ==
<pre>
"sky"
{
    "$hdrbaseTexture" "skybox/sdk_sky_example_hdrft"
    "$nofog" "1"
    "$ignorez" "1"
    "$basetexture" "skybox/sdk_sky_exampleft"
}
</pre>


* sdk_sky_example_hdr'''lf'''.vmt
At this stage you should have six files:
<pre>
"sky"
{
    "$hdrbaseTexture" "skybox/sdk_sky_example_hdrlf"
    "$nofog" "1"
    "$ignorez" "1"
    "$basetexture" "skybox/sdk_sky_examplelf"
}
</pre>


* sdk_sky_example_hdr'''bk'''.vmt
*<code><skyname>_hdr'''ft'''.pfm</code>
<pre>
*<code><skyname>_hdr'''lf'''.pfm</code>
"sky"
*<code><skyname>_hdr'''bk'''.pfm</code>
{
*<code><skyname>_hdr'''rt'''.pfm</code>
    "$hdrbaseTexture" "skybox/sdk_sky_example_hdrbk"
*<code><skyname>_hdr'''up'''.pfm</code>
    "$nofog" "1"
*<code><skyname>_hdr'''dn'''.pfm</code>
    "$ignorez" "1"
    "$basetexture" "skybox/sdk_sky_examplebk"
}
</pre>


* sdk_sky_example_hdr'''rt'''.vmt
Make sure they are under <code>your_mod\materialsrc\skybox\</code>. You now need to create '''six corresponding TXT files''' (e.g. <code><skyname>_hdrft.txt</code>) alongside them, in order to compile to VTF. Each must contain:
<pre>
"sky"
{
    "$hdrbaseTexture" "skybox/sdk_sky_example_hdrrt"
    "$nofog" "1"
    "$ignorez" "1"
    "$basetexture" "skybox/sdk_sky_examplert"
}
</pre>


* sdk_sky_example_hdr'''up'''.vmt
<source lang=php>
<pre>
pfm 1 // Flag as HDR texture
"sky"
pfmscale 1 // brightness multiplier
{
nonice 1 // prevent seams appearing at low texture detail
    "$hdrbaseTexture" "skybox/sdk_sky_example_hdrup"
nocompress 1 // optional; removing halves filesize, but causes color banding under close inspection
    "$nofog" "1"
</source>
    "$ignorez" "1"
    "$basetexture" "skybox/sdk_sky_example_01up"
}
</pre>


* sdk_sky_example_hdr'''dn'''.vmt
Drag these text files onto VTEX and it will compile them (unfortunately {{L|VTFEdit}} doesn't import PFMs). The VTFs will appear in the corresponding materials subfolder (e.g. <code>your_mod\materials\skybox\</code>).
<pre>
"sky"
{
    "$hdrbaseTexture" "skybox/sdk_sky_example_hdrdn"
    "$nofog" "1"
    "$ignorez" "1"
    "$basetexture" "skybox/sdk_sky_exampledn"
}
</pre>


== Creating LDR fallbacks ==
Now you just need to '''create six VMTs named <code><skyname>_hdr<face>.vmt</code>'''. These should read:


The LDR fallback for the skybox will be based on the original six .TGA files that were used to create the HDR version.
<source lang=php>
Sky
{
// if you compiled with nocompress:
$hdrbasetexture "skybox/sdk_sky_example_hdrft"


Go ahead and save these six files into your content directory (e.g. <code>sdk_content\dod\materialsrc\skybox</code>):
// if you didn't:
* sdk_sky_example'''ft'''.tga
$hdrcompressedtexture "skybox/sdk_sky_example_hdrft"
* sdk_sky_example'''lf'''.tga
* sdk_sky_example'''bk'''.tga
* sdk_sky_example'''rt'''.tga
* sdk_sky_example'''up'''.tga
* sdk_sky_example'''dn'''.tga


Create these text files into the same directory (just like standard LDR skybox [[Material Creation|materials]]):
$basetexture "skybox/sdk_sky_exampleft"
* sdk_sky_example'''ft'''.txt
}
* sdk_sky_example'''lf'''.txt
</source>
* sdk_sky_example'''bk'''.txt
* sdk_sky_example'''rt'''.txt
* sdk_sky_example'''up'''.txt
* sdk_sky_example'''dn'''.txt


With the following text in each file:
=== Creating LDR fallbacks ===
<pre>
"dxt5" "1"
"skybox" "1"
</pre>


== Compiling the skybox ==
You must also create standard low dynamic range VTFs for users who do not play in HDR. Compile with these settings:


The final stage is to compile all these files so they can be used in the engine. Copy a shortcut of the <code>[[Vtex|vtex.exe]]</code> (from the <code>sourcesdk\bin\</code> directory) onto your desktop, then drag the following .TGA and .PFM files onto this shortcut. For a full description of how to compile textures, see [[Vtex]].
<source lang=php>
nonice 1
dxt5 1 // or nocompress
</source>


* sdk_sky_example_hdr'''ft'''.pfm
These are ordinary textures, so you can use {{L|VTFEdit}} if you prefer. There is no need to create new materials for LDR users; they will load the <code>_hdr</code> ones.
* sdk_sky_example_hdr'''lf'''.pfm
* sdk_sky_example_hdr'''bk'''.pfm
* sdk_sky_example_hdr'''rt'''.pfm
* sdk_sky_example_hdr'''up'''.pfm
* sdk_sky_example_hdr'''dn'''.pfm


* sdk_sky_example'''ft'''.tga
== Usage ==
* sdk_sky_example'''lf'''.tga
* sdk_sky_example'''bk'''.tga
* sdk_sky_example'''rt'''.tga
* sdk_sky_example'''up'''.tga
* sdk_sky_example'''dn'''.tga


If all went well, there should be 12 new .VTF files in your Game directory (e.g. <code>day&nbsp;of&nbsp;defeat&nbsp;source\dod\materials\skybox</code>) for a HDR skybox with a LDR fallback.
In Hammer, go to ''Main Menu > Map > Map Properties > Skybox Texture Name'' and type the name of your skybox, relative to <code>materials\skybox\</code> and without any of the face suffixes. (e.g. just <code>MySky</code>.)


== See also ==
== See also ==


* [[HDR Lighting Basics]] - How to add basic HDR lighting effects.
* <code>{{L|Sky (shader)|Sky}}</code>
* [[HDR Lighting Settings]] - Information on customizing HDR lighting settings.
* {{L|HDR Lighting Basics}} - How to add basic HDR lighting effects.
* [[Skybox (2D)|Skybox (2D)]]
* {{L|HDR Lighting Settings}} - Information on customizing HDR lighting settings.
* [[Material]]
* {{L|Skybox (2D)}}
 
* {{L|Material}}
* [https://github.com/MrKleiner/blvtf] - Аддон для blender для удобного создания hdr скайбокса
* {{L|Sky Writer}} - 3ds Max tool that renders your scene into PFM and compiles to VTF.
{{envart}}
{{envart}}
 
{{ACategory|HDR}}{{ACategory|Material System}}
[[Category:Material System]]

Latest revision as of 07:01, 12 July 2024

English (en)Русский (ru)Translate (Translate)


Info content.png
This page needs to be translated.
This page either contains information that is only partially or incorrectly translated, or there isn't a translation yet.
If this page cannot be translated for some reason, or is left untranslated for an extended period of time after this notice is posted, the page should be requested to be deleted.
Also, please make sure the article complies with the alternate languages guide.(en)
Выгода HDR-Skybox (слева) в том, что они позволяют использовать более широкий диапазон яркости.

В отличие от большинства текстур в игре, Skybox представляет собой коллекцию больших и ярких объектов. Это делает HDR(en) более актуальным.

VTF(en) текстуры используются HDR-Skybox для хранения цветов либо в слегка сжатых 16-битных значениях с плавающей точкой(en) (RGBA16161616f), либо в сильно сжатых 8-битных целых(en) (BGRA8888). В любом случае, они будут созданы VTEX(en) из несжатых 32-битных с плавающей точкой Portable Float Map (.pfm) файлов.

Tip.pngСовет:Несжатые HDR VTF могут быть декомпилированы в PFM с помощью vtf2tga(en). Не обращайте внимания на название программы.
Сжатие VTF HDR файлы могут быть разжаты в exr с помощью no_vtf.

Создание отдельных текстур кубической карты из панорамы

Вы можете создать HDR скайбокс с помощью этого аддона. Просто создайте сферу с количеством сегментов равным 64 и выполните шаги третьего абзаца. Далее идут инструкции как сделать это без этого аддона в ручную.


Для того, чтобы создать HDR скайбокс, нужно иметь отдельные файлы .exr или .hdr для каждой стороны скайбокса, которые будут преобразован в .pfm, а затем уже в .vtf.

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

Имя Поворот (x y z)
ft 90 0 90
lf 90 0 0
bk 90 0 -90
up 180 0 180
rt 90 0 -180
dn 0 0 -180
  1. Создайте новую сцену и удалите все объекты.
  2. Создайте шар и установите количество сегментов с 32, на 64.
  3. Создайте камеру в центре сцены. В её настройках измените тип на перспективный, установите фокусное расстояние 64мм и конец на 100000, подгонку сенсора на горизонтальное и там же ширину на 128. Скопируйте эту камеру ещё 5 раз. В итоге у вас должно получиться 6 одинаковых камер, находящихся в центре сцены. Каждая из камер будет рендерить за свою текстуру определённой грани скайбокса.
  4. Для каждой из камер задайте поворот из таблицы. При рендере каждой текстуры их нужно будет назвать особым именем, так что рекомендуется переименовать камеры, чтобы не запутаться.


Теперь нужно подготовить рендер для каждой камеры.

  1. На временной шкале сделайте начальный кадр №1, а конечный кадр №7.
  2. Перетащите курсор воспроизведения на первый кадр.
  3. Выберете камеру и нажмите ctrl+b с курсором мыши на временной шкале.
  4. Перетащите курсор воспроизведения на второй кадр.
  5. Выберете другую камеру и нажмите ctrl+b с курсором мыши на временной шкале.

Сделайте так со всеми камерами.


Отлично! Теперь нужно подготовить панораму.

  1. Перейдите в окно shading и создайте новый материал и нанесите его на сферу.
  2. Удалите все ноды кроме вывода материала.
  3. Добавьте нод "Излучение" ("Emission") и подключите вывод этого нода к "Поверхности" вывода материала. Этот нод отвечает за яркость скайбокса.
  4. Добавьте нод "Изображение-текстура" и подключите вывод цвета к вводу цвета нода "Излучение".
  5. Загрузите .exr или .hdr панораму в ноде "Изображение-текстура".


Теперь пришло время рендерить текстуры. Убедитесь что в выводе у вас стоит формат файла "Open EXR" с параметром RGB, а в поле "Постобработка" убрана галочка с поля "Видеоредактор" ("Sequencer").

Теперь можно перетаскивать курсор воспроизведения на кадр с камерой и рендерить каждую грань скайбокса с помощью кнопки F12. Каждый файл .exr нужно назвать по следующему шаблону:

  • 🖿[ИмяСкайбокса]_hdr[Сторона].exr

Например для камеры ft и названием скайбокса skyday01 будет соответствовать файл 🖿skyday01_hdrft.exr.

По итогу у вас должно быть 6 файлов разных сторон кубмапа:

  • 🖿[ИмяСкайбокса]_hdrft.exr
  • 🖿[ИмяСкайбокса]_hdrlf.exr
  • 🖿[ИмяСкайбокса]_hdrbk.exr
  • 🖿[ИмяСкайбокса]_hdrup.exr
  • 🖿[ИмяСкайбокса]_hdrrt.exr
  • 🖿[ИмяСкайбокса]_hdrdn.exr

Создание PFM

Tip.pngСовет:
Половина всего изображения
Поскольку нижнюю половину Skybox практически не видно, разумно отрезать "ненужную" часть. Для этого скомпилируйте стороны VTF с особой командой:
clamps 1
clampt 1

И добавьте её в материалы:

$basetexturetransform "center 0 0 scale 1 2 rotate 0 translate 0 0"

Поподробнее об использовании команд можно прочитать ниже, в подпункте "Создание материалов".

Небо с различной экспозицией

Перед созданием HDR-Skybox Вы должны запомнить, что небо выглядит в разных экспозициях:


Фотографии неба с различной экспозицией.

Как вы видите, захваченные изображения меняются в зависимости от экспозиции. Одно 8-битное изображение никогда не используется при создании таких эффектов: в 8-битном белый и есть белый, а солнце, чтобы выделиться, должно хоть немного отличаться от всех остальных цветов неба.

Создание базового Skybox

Первое, что Вы должны сделать - создать базовый куб Skybox, таким же образом, как и для LDR-Skybox. Посмотрите Skybox (2D)(en)

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

Рекомендованное расположение Skybox (стороны помечены)

Сохраните это изображение в формате .TGA. Если появится окно с запросом, то отключите RLE-сжатие и поместите оригинал в нижний левый угол.

Добавление HDR-Данных

Теперь мы будем рисовать солнце на нашем Skybox, которое будет себя вести так же, как на фотографиях выше. Для этого есть хороший инструмент - HDR Shop

Note.pngПримечание:При открытии вашего TGA-Файла в HDR Shop Вы увидите диалоговое окно с ползунком. Поэкспериментируйте с ним, но лучше оставить все как есть.

HDR Shop работает так: берет файлы из редакторов изображений(en) для разнообразных экспозиций, чтобы затем их объединить в 32-битный формат с плавающей точкой. Вы можете регулировать изменения с помощью клавиш + и - на клавиатуре, или из меню View -> Exposure (Вид -> Экспозиция). Значение отображается в правом нижнем углу экрана.

По достижении необходимой экспозиции, выберите File -> Edit in image editor (Файл -> Изменить в редакторе изображений). Вы сможете редактировать изображение. HDR Shop откроет его в стандартном BMP-Редакторе, но можно использовать любой инструмент, который сохранит в правильном формате.

Более подробный урок находится на сайте HDR Shop]

Когда закончите, нажмите OK в диалоговом окне HDR Shop и выберите File -> Save as..., выберите формат 'Portable Floatmap'. Назовите и сохраните этот PFM-Файл туда же и так же, как исходное изображение 2D Skybox.

sdk_sky_exampleup

sdk_sky_exampleup


sourcesdk_content\dod\materialsrc\skybox\sdk_sky_exampleup.tga. Откройте и установите экспозицию на шаг -3, затем отредактируйте изображение. Начнем рисовать солнце.

После возвращения в HDR Shop и закрытия диалогового окна, установленная экспозиция будет обновляться с изображением.

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

Деление Skybox

If you created your skyboxes in a single file as in the above image, you will need to use splitskybox.exe to split it into six. Just drag the PFM onto it.

Note.pngПримечание:splitskybox(en) Ep1 does not currently function. However, the OB version will work with either version of the engine.
Note.pngПримечание:Left 4 Dead 2(en) Splitskybox is not a required step. And in fact will not work without lots of retyping of suffixes of multiple files. Left 4 Dead 2's iteration of VTEX(en) is able to take your "T" image array (both tga into LDR and pfm into HDR) and process it directly into the proper <name_bk>vtf format. In order to do this, create your "T" array as above. Recommended simply for the sake of sanity to get proper orientation for the top (and bottom if needed) images in your custom skybox. Create your txt file as normal and drag it onto Left 4 Dead 2's Vtex. Create materials and use in game as normal. A caveat here is, although the vtf files are compiled properly for LDR, if you are opting out of an HDR skybox and plan to use a LDR skybox only, the supplied LDR material template in the skybox_(2D)(en) tutorial does not work. You will get the checkerboard pattern. I am still working on this problem. If you are trying to import an HDR skybox (meaning, if you rendered out a set of skybox textures in your external software, and then used HDRShop to create the hdr data) of a night sky, you will experience extreme banding in the darker areas which resemble dx compression. This banding is actually a result of the way HDRShop handles color information and can be observed directly in HDRShop if you adjust down the exposure and inspect your image. I am currently experimenting with solutions and will keep you posted.

Creating the materials

At this stage you should have six files:

  • <skyname>_hdrft.pfm
  • <skyname>_hdrlf.pfm
  • <skyname>_hdrbk.pfm
  • <skyname>_hdrrt.pfm
  • <skyname>_hdrup.pfm
  • <skyname>_hdrdn.pfm

Make sure they are under your_mod\materialsrc\skybox\. You now need to create six corresponding TXT files (e.g. <skyname>_hdrft.txt) alongside them, in order to compile to VTF. Each must contain:

pfm 1 // Flag as HDR texture
pfmscale 1 // brightness multiplier
nonice 1 // prevent seams appearing at low texture detail
nocompress 1 // optional; removing halves filesize, but causes color banding under close inspection

Drag these text files onto VTEX and it will compile them (unfortunately VTFEdit(en) doesn't import PFMs). The VTFs will appear in the corresponding materials subfolder (e.g. your_mod\materials\skybox\).

Now you just need to create six VMTs named <skyname>_hdr<face>.vmt. These should read:

Sky
{
	// if you compiled with nocompress:
	$hdrbasetexture		"skybox/sdk_sky_example_hdrft"

	// if you didn't:
	$hdrcompressedtexture	"skybox/sdk_sky_example_hdrft"

	$basetexture		"skybox/sdk_sky_exampleft"
}

Creating LDR fallbacks

You must also create standard low dynamic range VTFs for users who do not play in HDR. Compile with these settings:

nonice 1
dxt5 1 // or nocompress

These are ordinary textures, so you can use VTFEdit(en) if you prefer. There is no need to create new materials for LDR users; they will load the _hdr ones.

Usage

In Hammer, go to Main Menu > Map > Map Properties > Skybox Texture Name and type the name of your skybox, relative to materials\skybox\ and without any of the face suffixes. (e.g. just MySky.)

See also

Статьи об окружающей среде
Текстуры неба и создание неба Source Source: Небосвод (2D)Объёмное небо (3D)HDR-текстуры небаСоздание текстур неба в TerragenСоздание текстур неба в Terragen - подробноСписок текстур неба


Source 2 Source 2: Объёмное небо (3D)

Создание рельефа местности и деформация поверхностей Деформированные поверхностиСоздание отверстий в деформированных поверхностяхЦифровые модели местностиСоздание рельефа в Worldmachine