//of the node unsigned short numFaces; // number of faces
};

Здесь plane - это индекс разбивающей плоскости в массиве плоскостей. Величины frontChild и backChild представляют собой индексы переднего и заднего поддеревьев (узлов) данного узла. Отрицательное значение соответствующей величины означает, что ссылка идет на лист дерева и номер листа определяется как ~(index+I), так что первое отрицательное значение ссылается на нулевой лист.

Далее идет ограничивающее тело (ААВВ) для данного узла, причем для задания координат используются 16-битовые целочисленные величины.

После этого идут номер первой грани (firstFace) и количество граней (nuinFaces) в массиве граней.

Блок листьев (leaf lump) - содержит описание всех листьев дерева в виде массива следующих структур:

am.1
struct Quake2BspLeaf // bsp node leaf (stored in
// the leaves lump)
{
long brushOr; // OR'ed brushes
unsigned short cluster; // -1 (OxFFFF) if
//no visibility information
unsigned short area;
short mins [3]; // bbox min value as shorts
short maxs [3]; // bbox max values as shorts
unsigned short firstLeafFace; // index of 1st leaf
// face in the leaf // face table
unsigned short numLeafFaces; // # of leaf faces
unsigned short firstLeafBrush; unsigned short numLeafBrushes;
};

Список всех граней, содержащихся в данном листе, содержится в массиве граней листьев (face leaf lump) начиная с firstLeafFace и содержит пит-LeafFaces значений. Поле cluster содержит номер кластера, которому принадлежит данный лист.

Блок граней листьев (face leaf lump). Для доступа к граням из листьев дерева в данном блоке содержатся индексы всех граней для каждого листа. Этот массив состоит из 16-битовых беззнаковых значений.

Блок информации по текстурированию (texture information lump)

содержит информацию по текстурированию для каждой из граней сцены в виде массива следующих структур:

struct Quake2TexInfо // texture coordinates


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