Claude Chappe' Curse - A C Game
Logo Institut d'Informatique Claude Chappe Logo Université de Le Mans Logo Raeptor Production
 
Loading...
Searching...
No Matches
model.h
Go to the documentation of this file.
1#ifndef MODEL_H
2#define MODEL_H
3
4#include <io/shader.h>
5
6
7/*
8 * To ensure MTL files are loaded correctly, the following rules must be followed:
9 * - The MTL file must be in the same directory as the OBJ file.
10 * - The MTL file must have the same name as the OBJ file.
11 * - The MTL file must have the extension ".mtl".
12 * - The MTL file must not contain this regex string: "(-s \d* \d* \d* *)*(-bm \d*\.*\d* )*"
13 */
14
58
64
65
90
106
113typedef struct ModelObjectData ModelObjectData;
118 u32 *materialsLength; //The numbers of faces before switching material
121};
122
123
130typedef struct ModelKeyframe {
131 union {
132 vec3 value;
133 versor r_value;
134 };
137
156
163typedef struct ModelAnimation ModelAnimation;
170
177typedef struct ModelData ModelData;
186
204
205
215typedef struct Model {
218} Model;
219
227typedef struct TexturedMesh {
232
240typedef struct Mesh {
243} Mesh;
244
245
259void create_textured_plane(TexturedMesh *texturedMesh, const char *texture);
260
268void create_screen_plane(Mesh *mesh);
269
282void render_model(mat4 modelMatrix, Shader activeShader, Model *model);
283
// end of ModelHandling
285
286
288
289#endif
#define f32
Alias for float (32-bit floating-point).
Definition aliases.h:55
#define u32
Alias for uint32_t (unsigned 32-bit integer).
Definition aliases.h:19
u32 VAO
Alias for unsigned int representing a Vertex Array Object.
Definition aliases.h:79
#define u8
Alias for uint8_t (unsigned 8-bit integer).
Definition aliases.h:7
Structure representing a mesh.
Definition mesh.class.c:25
u8 length
Definition model.h:242
VAO VAO
Definition model.h:241
Structure representing a 3D model.
Definition model.class.c:27
u8 flags
Definition model.h:217
ModelData * data
Definition model.h:216
Structure representing a textured mesh.
Definition textured_mesh.class.c:26
VAO VAO
Definition model.h:228
TextureMap texture
Definition model.h:229
u8 length
Definition model.h:230
u32 TextureMap
Alias for u32 representing a texture map.
Definition memory.h:25
unsigned int Shader
Represents an unsigned integer used as a shader identifier.
Definition memory.h:26
void create_textured_plane(TexturedMesh *texturedMesh, const char *texture)
Creates a textured plane.
Definition model.c:44
float Vertex[VERTEX_ATTRIBUTE_COUNT]
Array of VERTEX_ATTRIBUTE_COUNT floats representing a vertex.
Definition model.h:63
void create_screen_plane(Mesh *mesh)
Creates a screen plane.
Definition model.c:111
MaterialProperties
Enum representing different material properties.
Definition model.h:73
ModelFlags
Enum representing flags for a model.
Definition model.h:193
VertexAttribute
Enumeration of vertex attributes used in 3D models.
Definition model.h:33
void render_model(mat4 modelMatrix, Shader activeShader, Model *model)
Renders a 3D model using the specified shader and transformation matrix.
Definition model.c:143
@ ANISOTROPY_ROTATION_MATERIAL_PROPERTY
Definition model.h:87
@ REFLECTION_MATERIAL_PROPERTY
Definition model.h:85
@ PARALLAX_MATERIAL_PROPERTY
Definition model.h:78
@ EMISSION_MATERIAL_PROPERTY
Definition model.h:77
@ MATERIAL_PROPERTY_COUNT
Definition model.h:88
@ METALLIC_MATERIAL_PROPERTY
Definition model.h:81
@ CLEARCOAT_ROUGHNESS_MATERIAL_PROPERTY
Definition model.h:83
@ NORMAL_MATERIAL_PROPERTY
Definition model.h:84
@ ANISOTROPY_MATERIAL_PROPERTY
Definition model.h:86
@ SPECULAR_MATERIAL_PROPERTY
Definition model.h:75
@ ROUGHNESS_MATERIAL_PROPERTY
Definition model.h:79
@ AMBIENT_MATERIAL_PROPERTY
Definition model.h:76
@ DIFFUSE_MATERIAL_PROPERTY
Definition model.h:74
@ SHEEN_MATERIAL_PROPERTY
Definition model.h:80
@ CLEARCOAT_THICKNESS_MATERIAL_PROPERTY
Definition model.h:82
@ MODEL_FLAG_UNUSED6
Definition model.h:201
@ MODEL_FLAG_NONE
Definition model.h:194
@ MODEL_FLAG_UNUSED2
Definition model.h:197
@ MODEL_FLAG_UNUSED1
Definition model.h:196
@ MODEL_FLAG_UNUSED4
Definition model.h:199
@ MODEL_FLAG_UNUSED7
Definition model.h:202
@ MODEL_FLAG_UNUSED5
Definition model.h:200
@ MODEL_FLAG_GLOW
Definition model.h:195
@ MODEL_FLAG_UNUSED3
Definition model.h:198
@ VERTEX_ATTRIBUTE_BONE_ID_3
Definition model.h:50
@ VERTEX_ATTRIBUTE_BONE_WEIGHT_1
Definition model.h:52
@ VERTEX_ATTRIBUTE_TEXTURE_V
Definition model.h:41
@ VERTEX_ATTRIBUTE_BITANGENT_X
Definition model.h:45
@ VERTEX_ATTRIBUTE_TEXTURE_U
Definition model.h:40
@ VERTEX_ATTRIBUTE_NORMAL_X
Definition model.h:37
@ VERTEX_ATTRIBUTE_BITANGENT_Z
Definition model.h:47
@ VERTEX_ATTRIBUTE_TANGENT_X
Definition model.h:42
@ VERTEX_ATTRIBUTE_NORMAL_Y
Definition model.h:38
@ VERTEX_ATTRIBUTE_BONE_ID_1
Definition model.h:48
@ VERTEX_ATTRIBUTE_POSITION_Y
Definition model.h:35
@ VERTEX_ATTRIBUTE_BONE_WEIGHT_3
Definition model.h:54
@ VERTEX_ATTRIBUTE_BONE_WEIGHT_4
Definition model.h:55
@ VERTEX_ATTRIBUTE_POSITION_Z
Definition model.h:36
@ VERTEX_ATTRIBUTE_BONE_ID_2
Definition model.h:49
@ VERTEX_ATTRIBUTE_BITANGENT_Y
Definition model.h:46
@ VERTEX_ATTRIBUTE_TANGENT_Y
Definition model.h:43
@ VERTEX_ATTRIBUTE_BONE_WEIGHT_2
Definition model.h:53
@ VERTEX_ATTRIBUTE_BONE_ID_4
Definition model.h:51
@ VERTEX_ATTRIBUTE_NORMAL_Z
Definition model.h:39
@ VERTEX_ATTRIBUTE_TANGENT_Z
Definition model.h:44
@ VERTEX_ATTRIBUTE_POSITION_X
Definition model.h:34
@ VERTEX_ATTRIBUTE_COUNT
Definition model.h:56
Header file for model loading functions.
Structure representing a bone in a 3D model.
Definition model.h:144
mat4 transform
Definition model.h:147
ModelKeyframe * scaleKeyframes
Definition model.h:152
char name[128]
Definition model.h:145
mat4 offsetMatrix
Definition model.h:146
ModelKeyframe * translationKeyframes
Definition model.h:148
u32 rotationKeyframesCount
Definition model.h:151
u32 translationKeyframesCount
Definition model.h:149
u32 scaleKeyframesCount
Definition model.h:153
ModelKeyframe * rotationKeyframes
Definition model.h:150
u32 index
Definition model.h:154
Structure representing a material with various properties.
Definition model.h:97
vec3 flatColors[MATERIAL_PROPERTY_COUNT]
Definition model.h:99
f32 specularExp
Definition model.h:101
f32 opacity
Definition model.h:102
char name[128]
Definition model.h:98
u8 illumFlag
Definition model.h:104
TextureMap textureMaps[MATERIAL_PROPERTY_COUNT]
Definition model.h:100
f32 opticalDensity
Definition model.h:103
Structure representing the data of a 3D model animation.
Definition model.h:164
u32 length
Definition model.h:166
char name[128]
Definition model.h:165
Bone * targets
Definition model.h:167
u32 targetsCount
Definition model.h:168
Structure representing the data of a 3D model.
Definition model.h:178
u32 length
Definition model.h:182
ModelAnimation * animations
Definition model.h:183
u8 animationsCount
Definition model.h:184
Material * materials
Definition model.h:179
u32 materialsCount
Definition model.h:180
ModelObjectData * objects
Definition model.h:181
Structure representing the data of a 3D model keyframe.
Definition model.h:130
vec3 value
Definition model.h:132
versor r_value
Definition model.h:133
f32 time
Definition model.h:135
Structure representing the data of a 3D model object.
Definition model.h:114
Vertex * facesVertex
Definition model.h:115
u32 length
Definition model.h:116
VAO VAO
Definition model.h:120
Material ** materials
Definition model.h:117
u32 materialsCount
Definition model.h:119
u32 * materialsLength
Definition model.h:118