Структура BSP: определить точки полигона.

Сообщения
156
Реакции
205
Помог
5 раз(а)
Привет, форумчане!
Работаю над структурой BSP файла и встретил одну сложность в определении полигона/стороны/face.

Я смог извлечь каждый из лампов(lump/кусок) бсп файла. Теперь хочу перевести имеющиеся полигоны в другую систему координат, для этого нужно создать треугольники на основании нормального вектора(перпендикулярного вектора к плоскости) и точек, формирующих треугольник. С вектором проблем нет, он задан в плоскости, к которой привязан полигон, но проблема с вершинами.

В бсп есть часть, зарезервированная под точки, но она не имеет привязок к конкретному полигону, так как представляет собой просто точку в пространстве:
typedef struct _VECTOR3D
{
float x, y, z;
} VECTOR3D;

typedef VECTOR3D BSPVERTEX;

Полигон в свою очередь имеет отсылку к плоскости, на которой находится, и к ребрам (surfedge), его формирующим, но ребра представлены только нумерацией:

typedef int32_t BSPSURFEDGE;

typedef struct _BSPFACE
{
uint16_t iPlane; // Plane the face is parallel to
uint16_t nPlaneSide; // Set if different normals orientation
uint32_t iFirstEdge; // Index of the first surfedge
uint16_t nEdges; // Number of consecutive surfedges
uint16_t iTextureInfo; // Index of the texture info structure
uint8_t nStyles[4]; // Specify lighting styles
uint32_t nLightmapOffset; // Offsets into the raw lightmap data
} BSPFACE;


Вопрос такой: как на основании имеющейся информации получить вершины для каждого полигона? Буду рад, если кто-то объяснит мне принцип работы.

Ниже ссылка на полную неофициальную документацию.

Структура
 

Garey

ninjaCow
Сообщения
422
Реакции
1,056
Помог
10 раз(а)
Вопрос для чего тебе это нужно? Может уже есть решение того что ты хочешь реализовать.
 
Сообщения
156
Реакции
205
Помог
5 раз(а)
Garey, сорри, не увидел сообщение. Хочу сделать импорт бсп в сторонний движок.
Уже вроде бы решил проблему, не очень внимательно документацию читал и не так с ребрами работал)
 
Сообщения
156
Реакции
205
Помог
5 раз(а)
karaulov, мне вчера удалось перевести треугольники из бсп в сторонний движок. Следующий шаг - многоугольники. И пока без текстур, но надеюсь получится.
 

Пользователи, просматривающие эту тему

Сейчас на форуме нет ни одного пользователя.
Сверху Снизу