![]() |
Показать все 7 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Трудности парсинга (https://hlfx.ru/forum/showthread.php?threadid=3927)
Трудности парсинга
Попробую объяснить суть проблемы. Есть последовательность байтов, выгрызенная из структа.
Последовательность, например, такая (в десятичном представлении):
1 | typedef struct mds_node_raw { |
2 | mde_node type; // type of node |
3 | mds_sphere sphere; // bounding sphere of node |
4 | ushort num; // number of polys |
5 | ushort polys[]; // polygon list |
6 | } mds_node_raw; |
get_indices(Bin) -> |
[I || <<I:16/little>> <= Bin]. |
Товарищи! Абстрактные задачи в сферическом ваккууме безусловно способствуют развитию абстрактного мышления, но в данном случае, нам всё-таки надо получить вполне конкретный результат, правда?
Так почему бы не рассказать, что такое MDS?
Если это формат от Raven, так его структуры давно уже открыты.
Добавлено 23-05-2013 в 21:40:
ЗЫ. polygon list is variable sized. Ну просто напоминаю
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Думается, это не индексы, а адресация по куску данных, определяющих полигоны. То есть по последовательности вот таких чувачков:
1 | typedef struct mds_pgon { |
2 | ushort index; // absolute index of pgon |
3 | ushort data; // color or tmap indice |
4 | ubyte type; // bit field |
5 | ubyte num; // number of verts |
6 | ushort norm; // index of normal of pgon (in object space) |
7 | float d; // plane equation coefficient to go with normal |
8 | ushort verts[]; // vertex indices, then light indices, then uv |
9 | // indices, optionally |
10 | } mds_pgon; |
Ну оно на манер халфовского формата устроено: там raw-вертексы.
short - vertex index
short - normal index
short - U * multiplier
short - V * multiplier
short == 0 - end of array
судя по каменту.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Это действительно оказалась адресация. Теперь всё читается:
Как говорится:
Ну логично, у каждого полигона в принципе может быть произвольное кол-во вершин, т.е. там не трианглы, как я понял. Так что мой камент про организацию raw-vertex тоже к месту.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 01:46. | Показать все 7 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024