gKit2 light
gltf.h
Go to the documentation of this file.
1 
3 
4 #ifndef _GLTF_MESH_H
5 #define _GLTF_MESH_H
6 
7 #include <vector>
8 
9 #include "vec.h"
10 #include "color.h"
11 #include "mesh.h"
12 #include "image_io.h"
13 
14 
16 Mesh read_gltf_mesh( const char *filename );
17 
19 struct GLTFCamera
20 {
21  float fov;
22  float aspect;
23  float znear;
24  float zfar;
25 
26  Transform view;
27  Transform projection;
28 };
29 
31 std::vector<GLTFCamera> read_gltf_cameras( const char *filename );
32 
34 struct GLTFLight
35 {
36  Point position;
37  Color emission;
38  float intensity;
39 
40  // \todo transform et les autres parametres...
41 };
42 
44 std::vector<GLTFLight> read_gltf_lights( const char *filename );
45 
59 {
62  float metallic;
63  float roughness;
64  float transmission;
65  float ior;
66  float specular;
68  float thickness;
69  float attenuation_distance;
70  Color attenuation_color;
71  // \todo coating
72 
81  int thickness_texture;
82 
83  GLTFMaterial( ) :
84  color(White()), emission(), metallic(), roughness(0.8), transmission(), ior(), specular(), specular_color(), thickness(), attenuation_distance(), attenuation_color(),
86  transmission_texture(-1), specular_texture(-1), specular_color_texture(-1), thickness_texture(-1)
87  {}
88 };
89 
91 std::vector<GLTFMaterial> read_gltf_materials( const char *filename );
92 
94 std::vector<ImageData> read_gltf_images( const char *filename );
95 
96 
99 {
103 
104  Point pmin, pmax;
105 
106  // buffers...
107  std::vector<unsigned> indices;
108  std::vector<vec3> positions;
109  std::vector<vec2> texcoords;
110  std::vector<vec3> normals;
111 };
112 
114 struct GLTFMesh
115 {
116  std::vector<GLTFPrimitives> primitives;
117  Point pmin, pmax;
118 };
119 
122 {
123  std::vector<Transform> transforms;
125 };
126 
128 struct GLTFNode
129 {
132 };
133 
134 
148 struct GLTFScene
149 {
150  std::vector<GLTFMesh> meshes;
151  std::vector<GLTFNode> nodes;
152 
153  std::vector<GLTFMaterial> materials;
154  std::vector<GLTFLight> lights;
155  std::vector<GLTFCamera> cameras;
156 
157  void bounds( Point& pmin, Point& pmax) const;
158  std::vector<GLTFInstances> instances( ) const;
159 };
160 
162 GLTFScene read_gltf_scene( const char *filename );
163 
164 #endif
165 
representation d'un objet / maillage.
Definition: mesh.h:112
Point pmax
points extremes de l'englobant dans le repere objet
Definition: gltf.h:117
Mesh read_gltf_mesh(const char *filename)
charge un fichier .gltf et construit un mesh statique, sans animation.
Definition: gltf.cpp:19
int mesh_index
indice du maillage.
Definition: gltf.h:131
std::vector< ImageData > read_gltf_images(const char *filename)
charge un fichier .gltf et charge les images referencees par les matieres.
Definition: gltf.cpp:655
std::vector< GLTFMaterial > read_gltf_materials(const char *filename)
charge un fichier .gltf et renvoie les matieres.
Definition: gltf.cpp:624
int primitives_mode
triangles.
Definition: gltf.h:100
std::vector< Transform > transforms
transformation model de chaque instance
Definition: gltf.h:123
int material_index
indice de la matiere des primitives.
Definition: gltf.h:102
int primitives_index
indice unique.
Definition: gltf.h:101
Point pmax
points extremes de l'englobant dans le repere objet
Definition: gltf.h:104
GLTFScene read_gltf_scene(const char *filename)
charge un fichier .gltf et construit une scene statique, sans animation.
Definition: gltf.cpp:726
std::vector< GLTFPrimitives > primitives
groupes de triangles associes a une matiere.
Definition: gltf.h:116
int mesh_index
indice du maillage instancie.
Definition: gltf.h:124
std::vector< GLTFLight > read_gltf_lights(const char *filename)
charge un fichier .gltf et renvoie les sources de lumiere ponctuelles.
Definition: gltf.cpp:467
std::vector< GLTFCamera > read_gltf_cameras(const char *filename)
charge un fichier .gltf renvoie les cameras.
Definition: gltf.cpp:402
Transform model
transformation model pour dessiner le maillage.
Definition: gltf.h:130
description d'une camera.
Definition: gltf.h:20
instances d'un maillage.
Definition: gltf.h:122
description d'une source de lumiere.
Definition: gltf.h:35
description d'un maillage.
Definition: gltf.h:115
position et orientation d'un maillage dans la scene.
Definition: gltf.h:129
groupe de triangles d'un maillage. chaque groupe est associe a une matiere.
Definition: gltf.h:99
Color White()
utilitaire. renvoie une couleur blanche.
Definition: color.cpp:36
representation d'une couleur (rgba) transparente ou opaque.
Definition: color.h:14
float transmission
transmission, transparent ou pas (= 0)
Definition: gltf.h:64
int color_texture
indice de la texture ou -1. cf read_gltf_images() pour charger les textures dans le bon ordre....
Definition: gltf.h:73
float roughness
rugosite de la micro surface.
Definition: gltf.h:63
int metallic_roughness_texture
indice de la texture ou -1. les valeurs RGB representent les parametres du modele : B= metallic,...
Definition: gltf.h:74
int emission_texture
indice de la texture ou -1.
Definition: gltf.h:75
Color specular_color
modification de la reflexion speculaire des dielectriques ou pas (= 0)
Definition: gltf.h:67
Color emission
emission pour les sources de lumieres ou pas (= noir).
Definition: gltf.h:61
int normal_texture
indice de la texture ou -1.
Definition: gltf.h:77
float specular
modification de la reflexion speculaire des dielectriques ou pas (= 0)
Definition: gltf.h:66
int transmission_texture
indice de la texture ou -1.
Definition: gltf.h:78
float ior
indice de refraction des dielectriques ou pas (= 0)
Definition: gltf.h:65
float thickness
epaisseur des surfaces transparentes
Definition: gltf.h:68
int specular_color_texture
indice de la texture ou -1.
Definition: gltf.h:80
float metallic
metallic / dielectrique.
Definition: gltf.h:62
int specular_texture
indice de la texture ou -1.
Definition: gltf.h:79
Color color
base color.
Definition: gltf.h:60
int occlusion_texture
indice de la texture ou -1. //
Definition: gltf.h:76
void bounds(Point &pmin, Point &pmax) const
calcule les points extremes de la scene, utile pour regler un orbiter.
Definition: gltf.cpp:901
std::vector< GLTFMaterial > materials
matieres.
Definition: gltf.h:153
std::vector< GLTFLight > lights
lumieres.
Definition: gltf.h:154
std::vector< GLTFInstances > instances() const
regroupe les instances de chaque maillage.
Definition: gltf.cpp:884
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
std::vector< GLTFCamera > cameras
cameras.
Definition: gltf.h:155
representation d'un point 3d.
Definition: vec.h:21
representation d'une transformation, une matrice 4x4, organisee par ligne / row major.
Definition: mat.h:21