## model

model — Model manipulation functions

## Functions

G3DModel * | g3d_model_new ()
G3DModel * | g3d_model_load ()
G3DModel * | g3d_model_load_full ()
gboolean | g3d_model_check ()
gboolean | g3d_model_center ()
gboolean | g3d_model_transform ()
void | g3d_model_clear ()
void | g3d_model_free ()
G3DObject * | g3d_model_get_object_by_name ()

## Types and Values

#define | G3D_MODEL_CENTER
#define | G3D_MODEL_NOCHECK
#define | G3D_MODEL_OPTIMIZE
#define | G3D_MODEL_SCALE
| G3DModel

## Includes

    #include <g3d/g3d.h>

## Description

A model is a group of objects. All information loaded from a file by libg3d is found in this model.

## Functions

### g3d_model_new ()

    G3DModel *
    g3d_model_new (void);

This functions allocates and initializes a new G3DModel.

#### Returns

a newly allocated G3DModel

### g3d_model_load ()

    G3DModel *
    g3d_model_load (G3DContext *context,
                    const gchar *filename);

Loads a model from a file. The model is checked, centered, resized, optimized.

#### Parameters

context | a valid context |
filename | the file name of the model to load |

#### Returns

the loaded model or NULL in case of an error

### g3d_model_load_full ()

    G3DModel *
    g3d_model_load_full (G3DContext *context,
                         const gchar *filename,
                         guint32 flags);

Loads a model from a file. Depending on `flags` the model is checked, centered, resized, optimized.

#### Parameters

context | a valid context |
filename | the file name of the model to load |
flags | object manipulation flags |

#### Returns

the loaded model or NULL in case of an error.

### g3d_model_check ()

    gboolean
    g3d_model_check (G3DModel *model);

Checks whether a model returned by plugin is valid.

#### Parameters

model | the model to check |

#### Returns

TRUE on success, FALSE on error

### g3d_model_center ()

    gboolean
    g3d_model_center (G3DModel *model);

Translates all object coordinates that the object center is at (0, 0, 0)

#### Parameters

model | the model to center |

#### Returns

TRUE on success, FALSE on error

### g3d_model_transform ()

    gboolean
    g3d_model_transform (G3DModel *model,
                         G3DMatrix *matrix);

Transform all toplevel objects in model with matrix.

#### Parameters

model | the model |
matrix | transformation matrix |

#### Returns

TRUE on success, FALSE else

### g3d_model_clear ()

    void
    g3d_model_clear (G3DModel *model);

Removes all objects from a model.

#### Parameters

model | the model to clear |

### g3d_model_free ()

    void
    g3d_model_free (G3DModel *model);

Frees all memory allocated for the model including all objects, materials and textures.

#### Parameters

model | the model to free |

### g3d_model_get_object_by_name ()

    G3DObject *
    g3d_model_get_object_by_name (G3DModel *model,
                                  const gchar *name);

Searches the object tree for an object with the given name.

#### Parameters

model | the model containing all objects |
name | the name of the requested object |

#### Returns

the requested object or NULL if non was found

## Types and Values

### G3D_MODEL_CENTER

    #define G3D_MODEL_CENTER          (1 << 1)

The model should be centered around the (0,0,0).

### G3D_MODEL_NOCHECK

    #define G3D_MODEL_NOCHECK         (1 << 3)

The common checks should be disabled. The checks include:

- faces have at least 3 indices
- face indices are <= number of vertices
- material of faces is not NULL

### G3D_MODEL_OPTIMIZE

    #define G3D_MODEL_OPTIMIZE        (1 << 2)

The model material/object/face lists should be serialized to some private arrays (deprecated).

### G3D_MODEL_SCALE

    #define G3D_MODEL_SCALE           (1 << 0)

The model should be scaled to a maximum extension of +/- 10.0.

### G3DModel

    typedef struct {
    	gchar *filename;
    	GSList *materials;
    	GSList *objects;
    } G3DModel;

A 3D model.

#### Members

gchar *`filename`; | file name or URI of loaded model, may be set by application |
GSList *`materials`; | list of materials (G3DMaterial) |
GSList *`objects`; | list of objects (G3DObject) |