face3LIBG3D LibraryfaceFace manipulationSynopsis
#include <g3d/face.h>
#define G3D_FLAG_MAT_TWOSIDE
#define G3D_FLAG_FAC_NORMALS
#define G3D_FLAG_FAC_TEXMAP
G3DFace;
gboolean g3d_face_get_normal (G3DFace *face,
G3DObject *object,
G3DFloat *nx,
G3DFloat *ny,
G3DFloat *nz);
void g3d_face_free (G3DFace *face);
Description
A face is plane bordered by at least 3 vertices.DetailsG3D_FLAG_MAT_TWOSIDEG3D_FLAG_MAT_TWOSIDE#define G3D_FLAG_MAT_TWOSIDE (1L << 0)
Faces using this material should be rendered two-sided as the direction
is unknown.G3D_FLAG_FAC_NORMALSG3D_FLAG_FAC_NORMALS#define G3D_FLAG_FAC_NORMALS (1L << 0)
The face has custom normals.G3D_FLAG_FAC_TEXMAPG3D_FLAG_FAC_TEXMAP#define G3D_FLAG_FAC_TEXMAP (1L << 1)
The face has a texture map and texture coordinates.G3DFaceG3DFacetypedef struct {
guint32 vertex_count;
guint32 *vertex_indices;
G3DMaterial *material;
guint32 flags;
G3DVector *normals;
G3DImage *tex_image;
guint32 tex_vertex_count;
G3DVector *tex_vertex_data;
} G3DFace;
An object representing a surface.guint32 vertex_count; number of vertices
guint32 *vertex_indices; indices of vertices in G3DObjectG3DMaterial *material; material to use for surface
guint32 flags; flags
G3DVector *normals; optional normal array (one vector - 3 G3DVector values - for each
vertex)
G3DImage *tex_image; optional texture image
guint32 tex_vertex_count; number of texture vertices, should be 0 or match
vertex_count
G3DVector *tex_vertex_data; array of texture vertices
g3d_face_get_normal ()g3d_face_get_normalgboolean g3d_face_get_normal (G3DFace *face,
G3DObject *object,
G3DFloat *nx,
G3DFloat *ny,
G3DFloat *nz);
calculates the normal of a face.face : face to calculate normal of
object : object containing vertices of face
nx : x component of resulting normal
ny : y component of resulting normal
nz : z component of resulting normal
Returns : TRUE on success, FALSE else
g3d_face_free ()g3d_face_freevoid g3d_face_free (G3DFace *face);
Frees all memory allocated for this face.face : the face to free