› Hijerarhija čvorova
Čvorovi su imenovani entiteti koji u određenoj sceni imaju mjesto i orijentaciju o odnosu na svoje roditelje. Počevši od korijenskog noda scene, svaki čvor ima 0 do x čvorova djece, pa se prema tome stvara hijerarhija. Čvorovi formiraju bazu na kojoj se gradi scena, čvor se može odnositi na 0 do x scena, može se referencirati preko kosti ili mreže, te može biti animiran prema nekoj sekvenci animacije. U DirectX-u takvi čvorovi nazivaju se "frame-ovima", u nekim sustavima nazivaju se "objektima", a kod Assimpa se nazivaju "aiNode-ovima".
Čvor se može odnositi na jednu ili više mreža. Mreže se ne spremaju unutar čvora, nego se koristi niz aiMesh unutar strukture aiScene. Čvor se na mreže referencira preko njihovog indeksa niza. To znači da se više čvorova može referencirati na istu mrežu, što omogućuje jednostavan oblik instanciranja mreže.
Većina datotečnih formata ne podržava složene scene, ali neki kompeksniji formati, poput .3ds, .x, ili .collada mogu sadržati kompleksniju hijerarhiju čvorova i mreža. Za rješavanje tog problema, preporučljivo je koristiti rekurzivnu funkciju za filtriranje:
void CopyNodesWithMeshes( aiNode node, SceneObject targetParent, Matrix4x4 accTransform)
{
SceneObject parent;
Matrix4x4 transform;
// ako čvor ima mrežu/e, create kreiraj novi objekt scene za njega
if( node.mNumMeshes > 0)
{
SceneObject newObject = new SceneObject;
targetParent.addChild( newObject);
// kopiraj mreže
CopyMeshes( node, newObject);
// novi objekt je roditelj za sve čvorove djecu
parent = newObject;
transform.SetUnity();
} else
{
// ako čvor nema mrežu, preskoči ga, ali zadrži transformaciju
parent = targetParent;
transform = node.mTransformation * accTransform;
}
// nastavi za sve čvorove djecu
for( all node.mChildren)
CopyNodesWithMeshes( node.mChildren[a], parent, transform);
}
Ova funkcija kopira čvor u scenu ako čvor ima djece. Kreira se novi objekt scene za uvozni čvor, a sve mreže čvora se također kopiraju. Ako čvor nema djece, ne kreira se nikakav objekt. Potencijalni objekti djeca će se dodati u stari targetParent. Ova funkcija također radi odlično kod filtriranja čvorova kostiju - čvorova koji formiraju hijerarhiju kosti za drugi čvor/mrežu, ali nemaju nikakvu vlastitu mrežu.