<Guide du Rootard GeeXLab/>

Hiérarchie des noeuds


Dernière mise à jour: 2018.06.06 par JeGX

>> Retour <<


La programmtion avec GeeXLab devient beaucoup plus facile dès lors que l'on comprend la hiérarchie des noeuds (ou node en anglais -- c'est ce terme que j'utiliserai par la suite). Dans GeeXLab chaque objet que vous créez dans une scene est un node. Il y a deux grands types de node:





Les resources comprennent les programmes GPU (essentiellement écrits en GLSL), les textures et les matériaux. Un matériau est une resource qui contient elle-même d'autres resources: un programme GPU et une ou plusieurs textures.

Le node object inclue tous les nodes que l'on peut rendre (ou dessiner) à l'écran. C'est là que réside la différence fondamentale avec les resources: une resource n'a pas de representation visuelle, elle ne pas pas être rendue toute seule. Par exemple, pour rendre une texture, il faut passer par un objet de type mesh (un quad par exemple) sur lequel on applique la texture. Même chose pour un programme GPU, il sert à rendre un objet mais ne peut se rendre lui-même.

Les objets sont les nodes que l'on peut dessiner à l'écran: les meshes, les modèles 3D, les particules, etc. La caméra est un peu particulière car c'est par elle que l'on voit la scène 2D ou 3D. Donc un peu difficile de se rendre elle-même. Si vous avez besoin de visualiser une caméra dans une scène 3D, vous utiliserez probablement un mesh ou mieux, une polyline (ou encore une des primitives simplifiées comme le cercle, une boîte ou une sphere), pour la dessiner.

Maintenant que nous avons une vision plus claire des nodes GeeXLab, il est facile de comprendre l'utilisation des différentes librairies de l'API Lua / Python de GeeXLab.


Dans une application GeeXLab, chaque node est concrétement matérialisé par un nombre entier unique: c'est l'identifiant du node, encore appellé un id. C'est cet identifiant qui nous permet de manipuler un node particulier. Et bien sur cet id peut être utilisé dans toutes les librairies qui ont du sens pour le node en question. Par exemple un ID créé par une des fonctions de la librairie gh_mesh peut être utilisé dans les fonctions de la librairie gh_object puisqu'un mesh est aussi un object. En revanche si sous passer un ID de mesh à une des fonctions de gh_texture, il ne se passera pas grand chose.

Regardons de plus près un petit exemple:


quad = gh_mesh.create_quad(2, 2)
name = gh_node.get_name(quad)

gh_mesh.create_quad créé un mesh de type quad. Ici, quad est l'ID du mesh. On utilise cet ID dans la fonction gh_node.get_name pour obtenir le nom du quad (tous les nodes de GeeXLab ont un nom par défaut).





Guide du Rootard GeeXLab | Téléchargements | Contact | Newsletter