gKit2 light
Loading...
Searching...
No Matches
GLTFScene Struct Reference

#include <gltf.h>

Public Member Functions

void bounds (Point &pmin, Point &pmax) const
 calcule les points extremes de la scene, utile pour regler un orbiter.
std::vector< GLTFInstancesinstances () const
 regroupe les instances de chaque maillage.

Public Attributes

std::vector< GLTFMeshmeshes
 ensemble de maillages.
std::vector< GLTFNodenodes
 noeuds / position et orientation des maillages dans la scene.
std::vector< GLTFMaterialmaterials
 matieres.
std::vector< GLTFLightlights
 lumieres.
std::vector< GLTFCameracameras
 cameras.

Detailed Description

representation d'une scene statique glTF.

resume du format glTF : https://github.com/KhronosGroup/glTF-Tutorials/blob/master/gltfTutorial/README.md

specification complete : https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html

parser gltf : https://github.com/jkuhlmann/cgltf

une scene est un ensemble de maillages places et orientes dans un repere. un GLTFNode permet de dessiner un maillage GLTFMesh a sa place. un maillage est un ensemble de groupes de triangles / primitives. cf GLTFPrimitives. un groupe de primitives est associe a une matiere. cf GLTFMaterial.

Definition at line 148 of file gltf.h.

Member Function Documentation

◆ bounds()

void GLTFScene::bounds ( Point & pmin,
Point & pmax ) const

calcule les points extremes de la scene, utile pour regler un orbiter.

Definition at line 891 of file gltf.cpp.

892{
893 pmin= Point(FLT_MAX, FLT_MAX, FLT_MAX);
894 pmax= Point(-FLT_MAX, -FLT_MAX, -FLT_MAX);
895 for(unsigned node_id= 0; node_id < nodes.size(); node_id++)
896 {
897 const GLTFNode& node= nodes[node_id];
898 const GLTFMesh& mesh= meshes[node.mesh_index];
899 for(unsigned primitive_id= 0; primitive_id < mesh.primitives.size(); primitive_id++)
900 {
901 const GLTFPrimitives& primitives= mesh.primitives[primitive_id];
902 for(unsigned i= 0; i < primitives.positions.size(); i++)
903 {
904 //~ Point p= node.model(Point(primitives.positions[i]));
905 Point p= Point(primitives.positions[i]);
906 pmin= min(pmin, p);
907 pmax= max(pmax, p);
908 }
909 }
910 }
911}
GLenum primitives() const
renvoie le type de primitives.
Definition mesh.h:345
int mesh_index
indice du maillage.
Definition gltf.h:131
Point max(const Point &a, const Point &b)
renvoie la plus grande composante de chaque point { max(a.x, b.x), max(a.y, b.y), max(a....
Definition vec.cpp:35
Point min(const Point &a, const Point &b)
renvoie la plus petite composante de chaque point { min(a.x, b.x), min(a.y, b.y), min(a....
Definition vec.cpp:30
std::vector< GLTFNode > nodes
noeuds / position et orientation des maillages dans la scene.
Definition gltf.h:151
std::vector< GLTFMesh > meshes
ensemble de maillages.
Definition gltf.h:150

◆ instances()

std::vector< GLTFInstances > GLTFScene::instances ( ) const

regroupe les instances de chaque maillage.

Definition at line 874 of file gltf.cpp.

875{
876 std::vector<GLTFInstances> instances(meshes.size());
877 for(unsigned i= 0; i < meshes.size(); i++)
878 instances[i].mesh_index= i;
879
880 for(unsigned i= 0; i < nodes.size(); i++)
881 {
882 int index= nodes[i].mesh_index;
883 assert(index < int(instances.size()));
884 instances[index].transforms.push_back( nodes[i].model );
885 }
886
887 return instances;
888}
std::vector< GLTFInstances > instances() const
regroupe les instances de chaque maillage.
Definition gltf.cpp:874

Member Data Documentation

◆ meshes

std::vector<GLTFMesh> GLTFScene::meshes

ensemble de maillages.

Definition at line 150 of file gltf.h.

◆ nodes

std::vector<GLTFNode> GLTFScene::nodes

noeuds / position et orientation des maillages dans la scene.

Definition at line 151 of file gltf.h.

◆ materials

std::vector<GLTFMaterial> GLTFScene::materials

matieres.

Definition at line 153 of file gltf.h.

◆ lights

std::vector<GLTFLight> GLTFScene::lights

lumieres.

Definition at line 154 of file gltf.h.

◆ cameras

std::vector<GLTFCamera> GLTFScene::cameras

cameras.

Definition at line 155 of file gltf.h.


The documentation for this struct was generated from the following files: