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 892 of file gltf.cpp.

893{
894 pmin= Point(FLT_MAX, FLT_MAX, FLT_MAX);
895 pmax= Point(-FLT_MAX, -FLT_MAX, -FLT_MAX);
896 for(unsigned node_id= 0; node_id < nodes.size(); node_id++)
897 {
898 const GLTFNode& node= nodes[node_id];
899 const GLTFMesh& mesh= meshes[node.mesh_index];
900 for(unsigned primitive_id= 0; primitive_id < mesh.primitives.size(); primitive_id++)
901 {
902 const GLTFPrimitives& primitives= mesh.primitives[primitive_id];
903 for(unsigned i= 0; i < primitives.positions.size(); i++)
904 {
905 //~ Point p= node.model(Point(primitives.positions[i]));
906 Point p= Point(primitives.positions[i]);
907 pmin= min(pmin, p);
908 pmax= max(pmax, p);
909 }
910 }
911 }
912}
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 875 of file gltf.cpp.

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

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: