Величина firstEdge является индексом первого ребра грани в массиве ребер граней, а величина numEdges содержит число последовательных индексов ребер в блоке ребер граней.

Величина texlnfo является индексом в массив текстурной информации граней.

Величина lightmapStyles хранит битовые флаги различных стилей освещения.

Для каждой грани в блоке карт освещения хранится соответствующая карта освещения, и смещение этой карты находится в поле lightmap Offset.

Блок ребер граней (face edge lump) хранит индексы (в виде 32-битовых целых) ребер для каждой грани. Поскольку одно и то же ребро обычно принадлежит сразу двум граням и имеет для каждой из них протиГпава 11. Пишем рендерер уровней Quake II

воположное направление, то для обозначения того, что ребро должно быть пройдено в обратном направлении, используется отрицательное значение индекса.

Блок плоскостей (plane lump) - это массив из структур, описывающих все разбивающие плоскости в BSP-дереве. Каждая такая плоскость описывается следующей структурой:

struct Quake2BspPlane // Quake 2 planes (stored in
// the planes lump)
{
Vector3D normal; // plane normal (A,B,C)
Float dist; // signed distance along normal
// (D in the plane // equation Ax+By+Cz-D=0) long type; // one of the PLANE_TYPE_*
// constants
};

Уравнение каждой плоскости имеет вид

Ax+By + Cz-D = 0. (11.1)

Блок внутренних узлов (node lump) - это массив структур, служащих для описания внутренних узлов BSP-дерева. При этом нулевому элементу массива соответствует корень дерева. Каждый внутренний узел дерева представлен следующей структурой: о

.л.

struct Quake2BspNode // internal Bsp tree node {
long plane; // index of plane that makes
// this node
long frontChild; // index of front child node long backChild; // index of back child node
short mins [3]; // short-based min value of bbox
short maxs [3]; // short-based max value
// of bbox
unsigned short firstFace; // index of the last face

⇐ Предыдущая| |Следующая ⇒