## object

object — Object manipulation

## Functions

void | g3d_object_free ()
gdouble | g3d_object_radius ()
gboolean | g3d_object_scale ()
gboolean | g3d_object_transform ()
gboolean | g3d_object_transform_normals ()
G3DObject * | g3d_object_duplicate ()
gboolean | g3d_object_optimize ()
gboolean | g3d_object_smooth ()
gboolean | g3d_object_merge ()

## Types and Values

| G3DObject
| G3DTransformation

## Includes

    #include <g3d/object.h>

## Description

Objects are parts of a model. In most file formats vertices and faces are grouped in some way into objects. Objects can be hierarchical, so what a model contains is basically an object tree.

## Functions

### g3d_object_free ()

    void
    g3d_object_free (G3DObject *object);

Frees all memory allocated for that object.

#### Parameters

object | the object to free |

### g3d_object_radius ()

    gdouble
    g3d_object_radius (G3DObject *object);

Calculates the radius of the object. This is the maximum from the center to a vertex.

#### Parameters

object | the object to measure |

#### Returns

the radius of the given object

### g3d_object_scale ()

    gboolean
    g3d_object_scale (G3DObject *object,
                      G3DFloat scale);

Resizes the object by the factor `scale` .

#### Parameters

object | the object to scale |
scale | scale factor |

#### Returns

TRUE on success, FALSE else

### g3d_object_transform ()

    gboolean
    g3d_object_transform (G3DObject *object,
                          G3DMatrix *matrix);

Multiplies all vertices of the object with the transformation matrix.

#### Parameters

object | the object to transform |
matrix | the transformation matrix |

#### Returns

TRUE on success, FALSE else

### g3d_object_transform_normals ()

    gboolean
    g3d_object_transform_normals (G3DObject *object,
                                  G3DMatrix *matrix);

Multiplies all normals of the object with the transformation matrix.

#### Parameters

object | the object to transform |
matrix | the transformation matrix |

#### Returns

TRUE on success, FALSE else

### g3d_object_duplicate ()

    G3DObject *
    g3d_object_duplicate (G3DObject *object);

Duplicates an object with all vertices, faces and materials.

#### Parameters

object | the object to duplicate |

#### Returns

the new clone object

### g3d_object_optimize ()

    gboolean
    g3d_object_optimize (G3DObject *object);

Puts all vertex and face information into special arrays for faster rendering. It is deprecated and should not be used.

#### Parameters

object | the object to optimize |

#### Returns

TRUE on success, FALSE else

### g3d_object_smooth ()

    gboolean
    g3d_object_smooth (G3DObject *object);

FIXME: unimplemented.

#### Parameters

object | the object to smooth |

#### Returns

TRUE on success, FALSE else

### g3d_object_merge ()

    gboolean
    g3d_object_merge (G3DObject *o1,
                      G3DObject *o2);

Merges both objects into `o1` . FIXME: needs cleanup

#### Parameters

o1 | first and target object |
o2 | second object |

#### Returns

TRUE on success, FALSE else

## Types and Values

### G3DObject

    typedef struct {
    	gchar *name;

    	GSList *materials;
    	GSList *faces;
    	GSList *objects;

    	/* transformation, may be NULL */
    	G3DTransformation *transformation;

    	/* don't render this object */
    	gboolean hide;

    	/* vertices */
    	guint32 vertex_count;
    	G3DVector *vertex_data;
    } G3DObject;

A three-dimensional object.

#### Members

gchar *`name`; | name of object |
GSList *`materials`; | list of materials |
GSList *`faces`; | list of faces |
GSList *`objects`; | list of sub-objects |
G3DTransformation *`transformation`; | optional transformation |
gboolean `hide`; | flag to disable object rendering |
guint32 `vertex_count`; | number of vertices |
G3DVector *`vertex_data`; | vertex vector data |

### G3DTransformation

    typedef struct {
    	G3DMatrix matrix[16];
    	guint32 flags;
    } G3DTransformation;

A three-dimensional matrix transformation object.

#### Members

G3DMatrix `matrix`[16]; | the transformation matrix |
guint32 `flags`; | flags |