Level.geom — различия между версиями
Материал из S.T.A.L.K.E.R. Inside Wiki
Loxotron (обсуждение | вклад) (→Ссылки) |
Haper (обсуждение | вклад) (→Формат вершин) |
||
(не показаны 3 промежуточных версий 3 участников) | |||
Строка 142: | Строка 142: | ||
</table> | </table> | ||
=== Формат вершин === | === Формат вершин === | ||
− | Несколько слов о формате вершин. Как уже известно, в файле несколько блоков описания вершин. В игре не все объекты одинаковы: для брашей нужно указывать координаты лайтмапов, а координаты текстур для деревьев можно упростить. Поэтому, вершины, заданные в разных блоках, могу отличаться. Формат вершины задаётся при помощи нескольких | + | Несколько слов о формате вершин. Как уже известно, в файле несколько блоков описания вершин. В игре не все объекты одинаковы: для брашей нужно указывать координаты лайтмапов, а координаты текстур для деревьев можно упростить. Поэтому, вершины, заданные в разных блоках, могу отличаться. Формат вершины задаётся при помощи нескольких структур - это стандартный формат вертекс-буфера D3D. Т.е. в файле хранятся готовые скомпонованные вертекс-буферы для D3D: |
<table width="586" border="1"> | <table width="586" border="1"> | ||
<tr> | <tr> | ||
Строка 216: | Строка 216: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>Тангенты</td> |
<td><div align="center">6</div></td> | <td><div align="center">6</div></td> | ||
<td><div align="center">Word(2)</div></td> | <td><div align="center">Word(2)</div></td> | ||
Строка 236: | Строка 236: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>Би-тангенты</td> |
<td><div align="center">7</div></td> | <td><div align="center">7</div></td> | ||
<td><div align="center">Word(2)</div></td> | <td><div align="center">Word(2)</div></td> | ||
Строка 310: | Строка 310: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>Тангенты</td> |
<td><div align="center">6</div></td> | <td><div align="center">6</div></td> | ||
<td><div align="center">Word(2)</div></td> | <td><div align="center">Word(2)</div></td> | ||
Строка 330: | Строка 330: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>Би-тангенты</td> |
<td><div align="center">7</div></td> | <td><div align="center">7</div></td> | ||
<td><div align="center">Word(2)</div></td> | <td><div align="center">Word(2)</div></td> | ||
Строка 424: | Строка 424: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>Тангенты</td> |
<td><div align="center">6</div></td> | <td><div align="center">6</div></td> | ||
<td><div align="center">Word(2)</div></td> | <td><div align="center">Word(2)</div></td> | ||
Строка 444: | Строка 444: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td> | + | <td>Би-тангенты</td> |
<td><div align="center">7</div></td> | <td><div align="center">7</div></td> | ||
<td><div align="center">Word(2)</div></td> | <td><div align="center">Word(2)</div></td> | ||
Строка 546: | Строка 546: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td><span class="style14"> | + | <td><span class="style14">Тангент по Х </span></td> |
<td><div align="center" class="style14">127</div></td> | <td><div align="center" class="style14">127</div></td> | ||
<td><div align="center" class="style14">16</div></td> | <td><div align="center" class="style14">16</div></td> | ||
Строка 552: | Строка 552: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td><span class="style14"> | + | <td><span class="style14">Тангент по Z </span></td> |
<td><div align="center" class="style14">255</div></td> | <td><div align="center" class="style14">255</div></td> | ||
<td><div align="center" class="style14">17</div></td> | <td><div align="center" class="style14">17</div></td> | ||
Строка 558: | Строка 558: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td><span class="style14"> | + | <td><span class="style14">Тангент по Y </span></td> |
<td><div align="center" class="style14">255</div></td> | <td><div align="center" class="style14">255</div></td> | ||
<td><div align="center" class="style14">18</div></td> | <td><div align="center" class="style14">18</div></td> | ||
Строка 570: | Строка 570: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td><span class="style15"> | + | <td><span class="style15">Би-тангент по X </span></td> |
<td><div align="center" class="style15">0</div></td> | <td><div align="center" class="style15">0</div></td> | ||
<td><div align="center" class="style15">20</div></td> | <td><div align="center" class="style15">20</div></td> | ||
Строка 576: | Строка 576: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td><span class="style15"> | + | <td><span class="style15">Би-тангент по Z </span></td> |
<td><div align="center" class="style15">127</div></td> | <td><div align="center" class="style15">127</div></td> | ||
<td><div align="center" class="style15">21</div></td> | <td><div align="center" class="style15">21</div></td> | ||
Строка 582: | Строка 582: | ||
</tr> | </tr> | ||
<tr> | <tr> | ||
− | <td><span class="style15"> | + | <td><span class="style15">Би-тангент по Y </span></td> |
<td><div align="center" class="style15">127</div></td> | <td><div align="center" class="style15">127</div></td> | ||
<td><div align="center" class="style15">22</div></td> | <td><div align="center" class="style15">22</div></td> | ||
Строка 811: | Строка 811: | ||
*[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=169 Geometry Decompiler] от '''kasper''' (3dsmax 7,8) | *[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=169 Geometry Decompiler] от '''kasper''' (3dsmax 7,8) | ||
*[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=170 Geometry Decompiler 2] от '''Neo''' (3dsmax 9) | *[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=170 Geometry Decompiler 2] от '''Neo''' (3dsmax 9) | ||
− | |||
*[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=348 X-RAY Tools update 2.0] от '''bardak''' | *[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=348 X-RAY Tools update 2.0] от '''bardak''' | ||
+ | *[http://stalkerin.gameru.net/modules.php?name=Downloads&d_op=getit&lid=288 X-RAY Tools] от '''bardak''' | ||
[[Категория:Форматы файлов]] | [[Категория:Форматы файлов]] |
Текущая версия на 05:57, 4 мая 2015
Формат разбирал Haper (разобран не до конца, нужны коррективы)
Содержание
Описание файла
Cодержит всю видимую геометрию карты. Тут указаны все вершины с нормалями и координатами для текстур и индексы для построения геометрии, а так же синхронизация.
Файл состоит из таких блоков:
Код блока |
|
Версия компилятора карты | 1 |
Описание вершин | 9 |
Описание индексов | 10 |
Описание синхронизации | 11 |
Версия компилятора карты (блок для всех карт одинаковый)
Значение |
Размер |
|
Код блока | 1 |
Word(2) |
Сжатие данных (0 - нет, 32768 - да) | 0 |
Word(2) |
Размер блока (в байтах) | 4 |
DWord(4) |
Номер версии (для всех одинаковый) | 13 |
DWord(4) |
Описание вершин
Значение |
Размер |
|
Код блока | 9 |
Word(2) |
Сжатие данных (0 - нет, 32768 - да) | 0 |
Word(2) |
Размер блока (в байтах) | 4 |
DWord(4) |
Количество блоков описания вершин | - |
DWord(4) |
Блок описания вершин | - |
- |
Блок описания вершин
Значение |
Размер |
|
Начало нового блока | 0 |
DWord(4) |
Начало описания формата вершины | 2 |
DWord(4) |
Формат вершины | - |
- |
Конец описания формата вершины | 255 |
DWord(4) |
Начало описания вершин | 17 |
DWord(4) |
Количество вершин | - |
DWord(4) |
Вершины | - |
- |
Формат вершин
Несколько слов о формате вершин. Как уже известно, в файле несколько блоков описания вершин. В игре не все объекты одинаковы: для брашей нужно указывать координаты лайтмапов, а координаты текстур для деревьев можно упростить. Поэтому, вершины, заданные в разных блоках, могу отличаться. Формат вершины задаётся при помощи нескольких структур - это стандартный формат вертекс-буфера D3D. Т.е. в файле хранятся готовые скомпонованные вертекс-буферы для D3D:
Значение |
Размер |
|
???(всегда ноль) | 0 |
Word(2) |
Смещение | - |
Word(2) |
Тип переменных | - |
Word(2) |
Что описывают переменные | - |
Word(2) |
В самом начале любой вершины находятся координаты её размещения, поэтому, в формате вершин описание координат не указывается. В картах версии 2215 встречаются только три формата вершин:
Растительность |
||
Значение |
Размер |
|
Ноль | 0 |
Word(2) |
Смещение | 12 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Нормали | 3 |
Word(2) |
Фактор освещённости(?) | ? |
Word(2) |
Смещение | 16 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Тангенты | 6 |
Word(2) |
Корректор текс.коорд.Х | 0/1 |
Word(2) |
Смещение | 20 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Би-тангенты | 7 |
Word(2) |
Корректор текс.коорд.Y | 0/1 |
Word(2) |
Смещение | 24 |
Word(2) |
Тип переменных | 7 |
Word(2) |
Координаты текстуры | 5 |
Word(2) |
Таким образом, суммарная длина одной вершины растительности равна 32 байтам.
Браш |
||
Значение |
Размер |
|
Ноль | 0 |
Word(2) |
Смещение | 12 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Нормали | 3 |
Word(2) |
Фактор освещённости(?) | ? |
Word(2) |
Смещение | 16 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Тангенты | 6 |
Word(2) |
Корректор текс.коорд.X | 0/1 |
Word(2) |
Смещение | 20 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Би-тангенты | 7 |
Word(2) |
Корректор текс.коорд.Y | 0/1 |
Word(2) |
Смещение | 24 |
Word(2) |
Тип переменных | 1 |
Word(2) |
Координаты текстуры | 5 |
Word(2) |
Ноль | 0 |
Word(2) |
Смещение | 32 |
Word(2) |
Тип переменных | 6 |
Word(2) |
Координаты лайтмапа | 261 |
Word(2) |
Суммарная длина одной вершины браша составляет 36 байт.
Энтитя |
||
Значение |
Размер |
|
Ноль | 0 |
Word(2) |
Смещение | 12 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Нормали | 3 |
Word(2) |
Фактор освещённости(?) | ? |
Word(2) |
Смещение | 16 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Тангенты | 6 |
Word(2) |
Корректор текс.коорд.X | 0/1 |
Word(2) |
Смещение | 20 |
Word(2) |
Тип переменных | 4 |
Word(2) |
Би-тангенты | 7 |
Word(2) |
Корректор текс.коорд.Y | 0/1 |
Word(2) |
Смещение | 24 |
Word(2) |
Тип переменных | 4 |
Word(2) |
??? | 10 |
Word(2) |
Ноль | 0 |
Word(2) |
Смещение | 28 |
Word(2) |
Тип переменных | 1 |
Word(2) |
Координаты текстуры | 5 |
Word(2) |
Суммарная длина одной вершины энтити составляет 36 байт.
Исходя из этого, получаем, например, такой вид вершины:
Браш |
|||
Значение |
Смещение |
Размер |
|
Координата X | 30.76 |
0 |
DWord(4) |
Координата Z | 0.2 |
4 |
DWord(4) |
Координата Y | 51.4 |
8 |
DWord(4) |
Нормаль по X | 127 |
12 |
Byte(1) |
Нормаль по Z | 255 |
13 |
Byte(1) |
Нормаль по Y | 127 |
14 |
Byte(1) |
Фактор освещенности(?) | 1 |
15 |
Byte(1) |
Тангент по Х | 127 |
16 |
Byte(1) |
Тангент по Z | 255 |
17 |
Byte(1) |
Тангент по Y | 255 |
18 |
Byte(1) |
Корректор текс.коорд.Х | 0 |
19 |
Byte(1) |
Би-тангент по X | 0 |
20 |
Byte(1) |
Би-тангент по Z | 127 |
21 |
Byte(1) |
Би-тангент по Y | 127 |
22 |
Byte(1) |
Корректор текс.коорд.Y | 0 |
23 |
Byte(1) |
Координата текстуры X | 3.1802 |
24 |
Single(4) |
Координата текстуры Y | 2.2143 |
28 |
Single(4) |
Координата лайтмапа X | 0.4023 |
32 |
ShortSingle(2) |
Координата лайтмапа Y | 0.000097 |
34 |
ShortSingle(2) |
Типы переменных
Код типа |
Значение |
1 |
DWord(4) + DWord(4) |
4 |
Byte(1) + Byte(1) + Byte(1) + Byte(1) |
6 |
Word(2)/32768 + Word(2)/32768 |
7 |
(Byte(1)-128)/128 + (Byte(1)-128)/128 + (Byte(1)-128)/128 + (Byte(1)-128)/128 |
С ходу, возможно, трудно въехать в структуру данных, но когда начнёте ковырять файл, сразу всё поймёте - ничего сложного нет.
Описание индексов
Значение |
Размер |
|
Код блока | 10 |
Word(2) |
Сжатие данных (0 - нет, 32768 - да) | 0 |
Word(2) |
Размер блока (в байтах) | - |
DWord(4) |
Количество блоков описания индексов | - |
DWord(4) |
Блок описания индексов | - |
- |
Блок описания индексов
Значение |
Размер |
|
Количество индексов в блоке | - |
DWord(4) |
Индексы | - |
DWord(4) |
Индекс: Word(2) .
Количество индексов должно быть всегда кратно трём, потому что по индексам строятся треугольники.
Описание синхронизации
(что они синхронизируют, для учёных до сих пор остаётся загадкой):
Значение |
Размер |
|
Код блока | 11 |
Word(2) |
Сжатие данных (0 - нет, 32768 - да) | 0 |
Word(2) |
Размер блока (в байтах) | - |
DWord(4) |
Количество блоков синхронизации | - |
DWord(4) |
Блоки синхронизации | - |
- |
Блок синхронизации
Значение |
Размер |
|
??? | 0 |
DWord(4) |
??? | 0 |
DWord(4) |
??? | 0 |
DWord(4) |
??? | 0 |
DWord(4) |
Количество единиц синхронизации | - |
DWord(4) |
Единицы синхронизации | - |
- |
Единица синхронизации
Значение |
Размер |
|
??? | - |
DWord(4) |
??? | - |
Word(2) |
??? | - |
Word(2) |
Ссылки
Утилиты так или иначе связанные с импортом\экспортом geom:
- Geometry Decompiler 2 src от Neo (stable)
- Geometry Decompiler 2 src от Neo (unstable new)
- X-RAY Tools src от bardak
- xrFSL src 18/06/08 от Neo][
- Level Editor SRC от batya
- Level Editor 0.0.2 Stable Build от batya
- STALKER MAX Factory 0.1 от Neo][, Haron, GSC
- Geometry Decompiler от kasper (3dsmax 7,8)
- Geometry Decompiler 2 от Neo (3dsmax 9)
- X-RAY Tools update 2.0 от bardak
- X-RAY Tools от bardak