<html>
<head>
   <title>ppModeler</title>
</head>
<body>

<h1>
ppModeler</h1>
<b>ppModeler</b> is a 3d object/scene modeler. <b>ppModeler</b> is a tool
that allows to create simple 3d animated objects for the games. Vertices,
edges, faces, textures and objects are dynamicaly allocated, so there is
no limits of the number of objects, and their complexity; the only limits
are related to available memory, video card and displaying rate. <b>ppModeler</b>
is in pre-alpha version, so it is not yet stable.
<br><b>Save your work frequently !</b><P>

<OL>
<li> <a HREF="#principles">Principles</a>.
  <ol>
  <li><a HREF="#info_area">Managing the view(s)</a>.
  <li><a HREF="#selecting">Selecting objects</a>.
  <li><a HREF="#view_point">Moving the view point</a>.
  </ol>
<li><a HREF="#tool_boxes">Tool Boxes</a>.
  <ol>
  <li><a HREF="#camera">Camera</a>.
  <li><a HREF="#lights">Lights</a>.
  <li><a HREF="#objects">Objects</a>.
  <li><a HREF="#obj_edit">Object Editing</a>.
  <li><a HREF="#faces">Faces</a>.
  <li><a HREF="#vertices">Vertices</a>.
  <li><a HREF="#animations">Animations</a>.
  <ol>
    <li><a HREF="#skeleton">Editing skeleton</a>.
    <li><a HREF="#sequences">Editing sequences</a>.
    <li><a HREF="#keyframes">Editing keyframes</a>.
  </ol>
  </ol>
<li><a HREF="#menu">Menu</a>.
  <ol>
  <li><a HREF="#file_menu">File</a>.
  <li><a HREF="#edit_menu">Edit</a>.
  <li><a HREF="#view_menu">Views</a>.
  <li><a HREF="#effect_menu">Effect</a>.
  <li><a HREF="#object_menu">Object</a>.
  <li><a HREF="#option_menu">Options</a>.
  <li><a HREF="#help_menu">Help</a>.
  </ol>
<li> <a HREF="#tutorials">Tutorials</a>.
</OL>
<p>
You can found a features list at <a HREF="features.html">Features</a>.
<hr>
<h2><a NAME="principles">Principles</a></h2>
<img SRC="window.jpg">
<p>The main window as it is shown on the picture consists of 7 major parts:
top menu, tool boxes, functions, drawing mode, drawing area,
object list, and help and progress bars. The certain parts can be modified
by the user , for example dividing drawing area into few editor windows
(up to 4).
<br>Top Menu containes: 
<UL>
  <LI> <B>File</B>: Saving, exporting, importing and exit.
  <LI> <B>Edit</B>: Copy, cut and past and positioning objects
  <LI> <B>View</B>: Selecting 1, 2, 4 views of the scene.
  <LI> <B>Effect</B>: Action on objects.
  <LI> <B>Object</B>: Creating new objects, like blob objects or 
       heightfiled objects or...
  <LI> <B>Option</B>: Setting the configuration of ppModeler
  <LI> <B>Help</B>: Help on ppModeler and the About window.
</UL>

The main tool boxes are located on the top-left side. This menu containes the
buttons that allow the user to switch from one tool boxe to another one.....
Each tool boxe is dedicated to a primitive componenent. An object is composed 
of vertices, edges, faces. A scene is made of objects, lights and a camera. 
So, there is a tool boxe for working on vertices and edges, one for working 
on faces, one for creating and positioning objects, one for modify objects, 
one for managing lights, and one for placing the camera. A last special 
tool boxe is dedicated to object animation.
<br>The help bar is located on the bottom, it containes the progress status
that is used for a long operations.The bottom left area is dedicated to
the possible tools and states of the selected tool boxe. This area changes
according to the current tool boxe.
<br>The big black area on the right is the drawing part.
<br>&nbsp;
<table>
<tr VALIGN=TOP>
<td><img SRC="repere.gif" ></td>

<td>On the bottom of the drawing area, the world coordinates is drawn.
ppModeler uses a left hand coordinate system. That means, when the x axis
(associated to the thumb) points to the right, the y axis to the top, the
z axis points into the screen.&nbsp;</td>
</tr>
</table>

<table>
<tr VALIGN=TOP>
<td><a NAME="draw_camera"></a><img SRC="drawcam.gif" ></td>

<td>The white star is a light, the white arrow is the camera. The box is
the camera origin. The arrow shows to the camera direction. The camera
is set so that the y axis is vertical from the camera point of view.&nbsp;</td>
</tr>
</table>

<h2>
<a NAME="info_area"></a> Managing the view(s)</h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="params.gif" ></td>
<td></td>
<td><a NAME="viewcfg"><img SRC="viewcfg.gif" ></a></td>
</tr>
<tr VALIGN=TOP>
<td>configuration of the last view and <br>
    information area.</td>
<td></td>
<td>configuration of the view, with the 'o' shortkey.</td>

</tr>
</table>
Draw mode :
<dl>
<li>
wire, all :&nbsp; all the edges of objects are visible. 
If the tool <img SRC="i_vertex.gif" >
(work on the vertices) is selected, all vertices are surrounded by a small
boxes&nbsp; (usefull to find vertices). If the drawing mode is set to iso
view, the bounding sphere is drawn.<br>
<img SRC="wirevw.gif"> A sphere in <B>wire, all</B> mode.
</li>

<li>
wire, visible : all the edges that belongs to the visible faces are drawn,
and the faces are not filled.<br>
<img SRC="visvw.gif"> A sphere in <B>wire, visible</B> mode.
</li>

<li>
wire, hidden : only visible edges of objects are drawn.<br>
<img SRC="visvw.gif"> A sphere in <B>wire, hidden</B> mode.
</li>

<li>
flat shadded : flat shadded faces are drawn.<br>
<img SRC="flatvw.gif"> A sphere in <B>flat shadded</B> mode.
</li>

<li>
textured : draw the objects with all the material properties.<br>
<img SRC="txtvw.gif"> A sphere in <B>textured</B> mode.
</li>
</dl>
Iso view : if set, the drawing mode is iso view, otherwise, it is perspective.
The difference between the two mode is explain in the following picture :<br>
<img SRC="pers-iso.gif"><br>
In perspective view, the size on screen of the object is related to the 
distance between the view point and the object. Far object are small, near 
object are big. This is more or less the way a model of a normal camera.
But, it is usefull to view the object with a size not related to its 
distance from the view point. That the purpose of the iso view. Most of 
the time, when modeling object, the iso view is selected.

<p>Light at user : if set, when the drawing mode is flat or textured, the
scene is lighted by one virtual light placed at the viewer position. Otherwise,
the scene is lighted by the scene defined lights.&nbsp;
<p>Zoom : Set the zoom mode. This parameter is not active in flat and 
texture draw mode.
<p>&nbsp;Blue texte : Information depending on the current action.
<p>&nbsp;</td>

<h2>
<a NAME="selecting">Selecting objects</a></h2>
<img SRC="selectob.gif" ><img SRC="selectvi.gif" >
<p>Objects can be selected by placing the tool in the
<a href="#objects">selecting
mode</a> or using the object list. A left click on a name toggle the selection
of the corresponding object. A right click changes it's visibility. A green
circle on the right of the object name is for visible objects, a red one
for unvisible objects. The "A" key selects all the objects. The "N" key
unselects all the objects.<p>
In <a HREF="#animations">animation mode</a>, 
the object list displays the skeleton, showing
the name of each bone.<br>

<IMG SRC="objhand.gif"><P>
Each object have a selection handle in its center (light blue square).
The selected objects have a selection handle, placed in the barycenter of the
selected objects, and an action handle. The selection handle is used to move the
objects and the action handle is used to rotate and scale the selected objects.

<h2><a NAME="view_point">Moving the view point</a></h2>

Moving the view point is done with the keyboard. 
<ul>
<li><B>o</B> : open the the <a HREF="#viewcfg">configure view window</a></li>
<li><B>x</B> : the x axis points inside the screen</li>
<li><B>y</B> : the y axis points inside the screen</li>
<li><B>z</B> : the z axis points inside the screen</li>
<li><B>c</B> : view the scene from the camera</li>
<li><B>f</B> : flip the view</li>
<li><B>v</B> : view toward the selected part</li>
<li><B>w</B> : center the view</li>
<li><B>-</B> : the view goes backward</li>
<li><B>+</B> : the view goes forward</li>
<li><B>up, down, left, right, page up, page down</B> : 
  rotation of the view around the centre of the selected part.</li>
</ul>


<h1><a NAME="tool_boxes">Tool Boxes</a></h1>

The tool boxes allow to select on which type of component the user will work.
<table>
<tr VALIGN=TOP>
<td><img SRC="main.gif" ></td>

<td><img SRC="i_vertex.gif" > : Woking on 
         <a HREF="#vertices">vertices and edges</a>
<p><img SRC="i_face.gif" > : Woking on <a HREF="#faces">faces</a>
<p><img SRC="i_object.gif" > : Creating <a HREF="#objects">objects</a>
<p><img SRC="i_toolbo.gif" > : Working with  <a HREF="#obj_edit">objects</a>
<p><img SRC="i_anim.gif" > : Creating  <a HREF="#animations">animations</a>
<p><img SRC="i_camera.gif" > : Placing the <a HREF="#camera">camera</a>
<p><img SRC="i_light.gif" > : Working on <a HREF="#lights">lights</a>
<p>&nbsp;</td>
</tr>
</table>


<h2>
<img SRC="i_camera.gif" > <a NAME="camera">Camera</a></h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="camera.gif" ></td>

<td><img SRC="i_mv_cam.gif" > : <b>Move</b> camera origin and direction.<br>
Move the <a href="#draw_camera">camera
origin</a>, by dragging white org box. The <a href="#info_area">info area</a>
specifies the location of the center. Pressing "Enter" allows the user
to enter numerical coordinates.
<p><img SRC="i_cam_to.gif" > : <b>To selected objects</b>.<br>
When pressed, the camera points to the center
of the selected objects.
<p>&nbsp;</td>
</tr>
</table>

<h2>
<img SRC="i_light.gif" > <a NAME="lights">Lights</a></h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="light.gif" ></td>

<td><img SRC="i_mv_lt.gif" > : <b>Moves</b>.<br>
Moves <a href="#draw_camera">lights</a>,
by dragging white org cross. The <a href="#info_area">info area</a> specifies
the location of the light.
<p><img SRC="i_light.gif" > : <b>Add</b>.<br>
When the user press the left mouse button,
a new light is added.
<p><img SRC="i_del_lt.gif" > : <b>Delete</b>.<br>
Removes a light when the user click on it.
<p>&nbsp;</td>
</tr>
</table>

<h2>
<img SRC="i_object.gif" >&nbsp;<a NAME="objects">Objects</a></h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="object.gif" ></td>

<td><img SRC="i_select.gif" > : <b>Select objects</b>.<br> 
A left click on an object
handle selects the object. The selected objects are drawn in yellow, the
non-selected objects in blue. If the "Shift" key is pressed while clicking,
the object is added to the selection list. A right click changes the current
action to move selected objects.
<p><img SRC="i_move.gif" > : <b>Move selected objects</b>.<br> 
The selected object are moved by dragging the selection handle.
Press "Enter" to enter numerical translation. 
A left click changes the current action to Select objects.
<p><img SRC="i_rotobj.gif" > : <b>Rotate selected objects</b>.<br>
The selected objects are rotated by dragging the action handle.
 Press "Enter" to enter numerical rotation. 
A left click switch to Select objects.
<p><img SRC="i_scale.gif" > : <b>Scale selected objects</b>.<br>
Press "Enter" to
enter numerical scale factors. A left click change the current action to
Select objects.
<p><img SRC="i_dup.gif" > : <b>Duplicate selected objects</b>.<br>
Look at <a href="duplicate.html">the duplicate paragraph</a>
<p><img SRC="i_delete.gif" > : <b>Delete the selected Objects</b>.<br>
<p><img SRC="i_color.gif" > : Change the <b><a href="#obj_material">material
properties</a></b> of the selected objects
<p><img SRC="i_cube.gif" > : <b>Add a cube</b>.<br> 
The number of subdivision along each axes can be defined. 
The cube size 10x10x10. The following 
window allow to configure the subdivisions. The result is shown on 
the right.<br>
<img SRC="cube.gif" > <img SRC="cubevw.gif" >
<p><img SRC="i_cylind.gif" > : <b>Add a cylinder</b>.<br>
The number of slices is aked in a window. The height is 10, the diameter is 
also 10.The following pictures show the result with 2 slices.<br>
<img SRC="cylinder.gif" >
<p><img SRC="i_sphere.gif" > : <b>Add a sphere</b>.<br>
Adds of sphere of diameter 10 at the origin.
The number of longitude circles is defined by the current spline resolution
(Options menu). The number of lattitude  circles is half of this number.
The following picture show the result with the default spline value, 12.<br>
<img SRC="sphere.gif" >
<p><img SRC="i_polygo.gif" > : 
<b>Add a 2d <a href="polyedit.html">polygon</a></b>.<br><b>ppModeler</b> 
enter in 2d polygon mode. The tool boxes now contians only one
tool boxe (<img SRC="i_polygo.gif" >), and when the editing is finished, 
a 2d polygon is added, either one or two sided. The polygon is defined 
in the (xy) plane.
</b>
<p><img SRC="i_patch.gif" > : <b>Enter in patch editing mode</b>.<br>
No done yet.
<p><img SRC="i_grid.gif" > : <b>Add a grid</b>
Add a flat grid on the (xy) plane. The number of step along the both 
axis is asked before adding the grid. The following pictures is the 
result of adding a grid of 5x8.<br>
<img SRC="grid.gif" >
<p><img SRC="i_pyrami.gif" > : <b>Add a pyramid</b>.<br>
The base, on the (xy) plane, is defined by a 2d 
<a href="polyedit.html">polygon</a>. The height of the pyramid is 10.
<p><img SRC="i_rotate.gif" > : <b>Add a revolve object</b>.<br>
<p>&nbsp;The profile is define by an open <a href="polyedit.html">2d polygon</a>.
The revolve object can be of two types :
<UL>
  <LI> like a torus, defined by a closed polygon.
  <LI> like a revolve object, defined by an open polygon and an axis.
</UL>
For example, the following pictures give the defined polygon and the 
resulting object.<br>
For a closed polygon :<br>
<IMG SRC="lath_cl1.gif"> -> <IMG SRC="lath_cl2.gif"><P>
and for an open polygon :<br>
<IMG SRC="lath_op1.gif"> -> <IMG SRC="lath_op2.gif"><P>
For a closed polygon, the object is build by rotating the polygon 
around the y axis, and the number of step is defined by the spline 
resolution.<br>
For an open polygon, the rotation is made arround the axe defined by 
the first and last point of the polygon.
<p><img SRC="i_extrud.gif" > : <b>Add a sweep object</b>.<br>
An object is defined by moving a closed 2d polygon along a 3d curved.
Let's look at an example :<br>
First, the user defined a contour : <img SRC="sweep1.gif" align="middle">.<br>
Then, the extrude path : <img SRC="sweep2.gif" align="middle">.<br>
The resulting object is : <img SRC="sweep3.gif" align="middle"><p>
<p><img SRC="i_merge.gif" > : <b>Merge</b>.<br>
Merges selected object into one. The name of the new object is aked.
<p><img SRC="i_umerge.gif" > : <b>Unmerge</b>.<br>
Unmerges the selected ojects. Works only on merge objects, created 
with the merge tool.
</td>
</tr>
</table>
<p>

Some other types of object can be reach via the Object menu :
<dl>
<li>
<a href="#blob">blob</a></li>

<li>
<a href="#heightfield">heighfield</a></li>

<li>
<a href="#l-system">plant, defined by l-system</a></li>

<li>
2d polygon draw on an image</li>

<li><a href="math.html">matematical surface</a> defined by z = f(x, y)</li>

</dl>


<h2><img SRC="i_toolbo.gif" > <a NAME="obj_edit">Object Editing</a></h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="objtool.gif" ></td>

<td><img SRC="i_select.gif" > : Select objects. The same functionality
than the select tool in object mode, look at the <a href="#objects">objects
paragraph</a>.
<p><img SRC="i_sym_xy.gif" > : <b>Symmetry</b> the (xy) plane.<br>
A symmetry is done around the plane define by the x and y axis and the 
barycenter handle (of the selected objects).<p>
<p><img SRC="i_sym_yz.gif" > : <b>Symmetry</b> the (yz) plane.<br>
A symmetry is done around the plane define by the y and z axis and the 
barycenter handle.<p>
<p><img SRC="i_sym_xz.gif" > : <b>Symmetry</b> the (xz) plane.<br>
A symmetry is done around the plane define by the x and z axis and the 
barycenter handle.<p>
<p><img SRC="i_simply.gif" > : <b><a NAME="simplify">Simplify</a></b>.<br>
Merges all coplanar faces, if the resulting
face is convex and if the faces material are compatible.<br>
For example, the trinagular faces in the left picture bellow are merged into
one twelve edges face of the right picture bellow.<br>
Before symplify : <img SRC="simplify1.gif" aligne="middle">
 After symplify : <img SRC="simplify2.gif" aligne="middle">
<p><img SRC="i_trigul.gif" > : <b>Triangulate</b> the selected objects.<br>
All the faces are separetated into triangules. This function adds no vertex.<p>
<p><img SRC="i_rot_xy.gif" > : <b>Rotate</b> the selected objects of 45 degrees
around the z axe.<br>
The selected objects are rotated of 45 degrees aound the axis define by the 
z direction and the barycenter handle.<br>
For example :<br>
the 2 objects : <img SRC="rotate1.gif" align="middle"> become 
<img SRC="rotate2.gif" align="middle">.
<p>
<p><img SRC="i_rot_yz.gif" > : <b>Rotate</b> the selected objects of 45 degrees
around the x axe.<br>
Same as above for the x axis.<p>
<p><img SRC="i_rot_xz.gif" > : <b>Rotate</b> the selected objects of 45 degrees
around the y axe.<br>
Same as above for the y axis.<p>
<p><img SRC="i_fc_rnd.gif" > : <b>Perturb</b>.<br>
Moves each face a random amount along its
normal. The maximum translation length is asked before proceeding.<br>
For example, the sphere <img SRC="orgsphr.gif" align="middle"> 
is tranformed into <img SRC="rndsphr.gif" align="middle">.
<p><img SRC="i_stickf.gif" > : <b>Stick</b>.<br>
Moves one object so that one of its faces is stick on on faces of an other
object. Two objects have to be selected.<br>
For example :<br>
First, the user select the green face of the cube : 
<img SRC="stick1.gif" align="middle">.<br>
The, he/she select the green faces of the sphere : 
<img SRC="stick2.gif" align="middle">.<br>
The result is the center of the sphere selected face is placed on the center
of the cube selected face : 
<img SRC="stick3.gif" align="middle">.<p>
<p><img SRC="i_smooth.gif" > : <b>Smooth</b>.<br>
Smoothes the selected objects. <p>
<p><img SRC="i_placut.gif" > : <b>Cut with a plane</b>.<br>
This tool opens the 
<a HREF="facesel.html">plane selection tool</a>.<br>
An example :<br>
Cutting the cylinder <img SRC="plancut1.gif" align="middle"> with the (xy) plane
result in the object <img SRC="plancut2.gif" align="middle">.<p>
<p><img SRC="i_miror.gif" > : <b>Miror</b>.<br>
Builds an object that is composed of itself and a mirored part of itself.
The original object is not deleted.<br>
This tool opens the <a HREF="miror.html"> miror tool</a>.<br>
For example, the square base of the pyramid (following picture) 
is selected, by selecting three
of its vertices (the green ones). The red vertex is automatiquely selected
because it is in the miror plane.<br>
<img SRC="miror1.gif" ><br>
The result is the diamond of the following picture. The original 
pyramid has been deleted in this picture.<br>
<img SRC="miror2.gif" ><p>
<p><img SRC="i_deform.gif" > : <b>Deform</b>.<br>
Deforms the selected object. 
Opens the <a HREF="deform.html">deform tool</a>.


<p><img SRC="i_polcut.gif" > : <b>Cut with a polygon</b>.<br>
Not done yet.<p>
<p><img SRC="i_edit.gif" > : <b>Edit</b>.<br>
If the object is build with part (for example, lathe, extrude, 
heightfield objects), ppModeler retruns in a mode such that the user 
can edit this parts.
</td>
</tr>
</table>


<h2>
<img SRC="i_face.gif" > <a NAME="faces">Faces</a></h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="face.gif" ></td>

<td><img SRC="i_select.gif" > : <b>Select</b> faces.<br>
A left click on a face select
the face. The selected faces are drawn in green, the non-selected faces
in yellow. If the "Shift" key is pressed when clicing, the face is added
to the selection list.
<p><img SRC="i_selrec.gif" > : <b>Select</b> faces by rectangles.<br>
The users draws a rectangle on the drawing area. If the view mode is
<i>wire, all</i> all the faces totaly inside this rectangle are selected. 
For the others view mode, only the visible faces totaly inside the
rectangle are slected.<p>
<p><img SRC="i_color.gif" > : <b>Material properties</b>.<br>
Changes the <a href="#obj_material">material
properties</a> of the selected faces
<p><img SRC="i_delete.gif" > : <b>Delete</b> the selected Faces.<br>
Deletes the selected faces. 
<p><img SRC="i_fc_mdp.gif" > : <b>Split middle</b>.<br>
For each selected faces, this tool
adds a vertex in the middle of the face, then creates triangles 
from this vertex to each adjacent (that defines an edge) 
vertices of the face.<br>
<img SRC="warning.gif" align="middle"> 
This tool can produce strange result on concave faces.<br>
An example :<br>
The face <img SRC="splitfm1.gif" align="middle"> becomes 
<img SRC="splitfm2.gif" align="middle">.
<p><img SRC="i_fc_sml.gif" > : <b>Add small faces</b>.<br>
Adds a small face in middle of selected faces. The size of the small copy 
of the face is asked (in %). Then the small face is added, and the 
gap between the small and original face is filled with square faces.<br> 
<img SRC="warning.gif" align="middle"> 
This tool can produce strange result on concave faces.<br>
An example :<br>
The face <img SRC="splitfs1.gif" align="middle"> becomes 
<img SRC="splitfs2.gif" align="middle">.
<p><img SRC="i_fc_spl.gif" > : <b>Split</b> faces along an edge.<br>
Not done yet.
<p><img SRC="i_add_pl.gif" > : <b>Add polygons</b>.<br>
look chapter <a href="facepoly.html">Split
a face in polygons</a>
<p><img SRC="i_fc_flp.gif" > : <b>Flip</b>.<br>
Flips the selected faces normals. So, if the selected faces are visible 
from one point of view, after using this tool, they will be visible 
from the opposite point of view.
<p><img SRC="i_fc_ext.gif" > : <b>Extrude</b>.<br>
Extrudes the selected faces. The horizontal movement of the mouse 
(while the left button is pushed) defines the size of the extrusion.
When the operation is finished, <b>ppModeler</b> returns to the select 
faces tool.<br>
An example :<br>
The faces <img SRC="extruf1.gif" align="middle"> become 
<img SRC="extruf2.gif" align="middle">.
<p><img SRC="i_fc_scl.gif" > : <b>Scale</b>.<br>
Scales the selected faces. The horizontal movement of the mouse 
(while the left button is pushed) defines the scale factor. 
All the vertices of the face are moved toward or from the 
computed barycenter of this vertices by a distance proportional to
the distance from the vertex to the barycenter and the scale factor.
By Pressing "Enter", he user can enter the scale factor numericaly.<br>
An example :<br>
The face <img SRC="scalef1.gif" align="middle"> becomes 
<img SRC="scalef2.gif" align="middle">.
<p><img SRC="i_fc_rot.gif" > : <b>Rotate</b>.<br>
Rotates the selected faces.
The movement of the mouse (while the left button is pushed) 
defines the 2 angles of rotation. <br>
An example :<br>
The face <img SRC="rotface1.gif" align="middle"> becomes 
<img SRC="rotface2.gif" align="middle">.
<p><img SRC="i_tocovx.gif" > : <b>To convex</b>.<br>
Transforms the selected faces in plane, convex faces.<p>
An example :<br>
The face <img SRC="concface1.gif" align="middle"> becomes 
<img SRC="concface2.gif" align="middle">.
<p><img SRC="i_fc_vtx.gif" > : <b>Select the vertices</b> of the 
selected faces.<br>
Selects the vertices of the selected faces
and switch to <a href="#vertices">vertex edit mode</a>.<br>
An example :<br>
The selected face is <img SRC="facevertex1.gif" align="middle"> 
and the tool boxe is <img SRC="i_face.gif" align="middle">.<br>
When the tool is used, the selected vertices are 
<img SRC="facevertex2.gif" align="middle">
and the tool boxe is <img SRC="i_vertex.gif" align="middle">.
<p>&nbsp;</td>
</tr>
</table>


<h2>
<img SRC="i_vertex.gif" >&nbsp;<a NAME="vertices"></a>Vertices</h2>

<table>
<tr VALIGN=TOP>
<td><img SRC="vertex.gif" ></td>

<td><img SRC="i_select.gif" > : <b>Select</b> vertices.<br>
Selects vertices. A left click on a vertex
select it. The selected vertices are drawn in green. If the drawing mode
is "wire, all" then the non-selected vertices are drawn in yellow, otherwise,
the non-selected vertices are not drawn. If the "Shift" key is pressed
when clicking, the vertex is added to the selection list. Press "Enter"
to select a vertex by its number.<br>
A right-click change <b>ppModeler</b> to the vertex move tool.
<p><img SRC="i_selrec.gif" > : <b>Select</b> vertices by rectangle.<br>
Selects vertices that are inside a rectangle.
<p><img SRC="i_mv_pt.gif" > : <b>Move</b> vertices.<br>
Grabs the selected vertices. When the user click on a selected vertex,
the selected vertices follow the movement of the mouse until the user 
release the button. The vertices don't move along the view z axis.<br>
A right-click change <b>ppModeler</b> to the select vertex tool.

<p><img SRC="i_grabpt.gif" > :<b>Magnetic move</b> of vertices.<br>
Grabs the selected vertices and vertices in a given distance of them.
When the user select this tool, <b>ppModeler</b> first ask for the radius
of influence <i>r</i>. All the vertices with a distance less 
than the radius <i>r</i> from one of the selected vertices will follow the
selected vertices movement. Let <i>r'</i> be the distance from a vertex 
to a selected vertex. The movement of this vertex will be <i>1-(r'/r)</i> 
the movement of the gabbed vertex.<br> 
<br>
The selected vertex at (0,0,10) <img SRC="vtxmove1.gif" align="middle">
is moved to (0,0,15):
<ul> 
<li> with the move vertex tool <img SRC="vtxmove2.gif" align="middle">
<li> with grab vertex tool and a radius of 10 
<img SRC="vtxmove3.gif" align="middle">
</ul>
<p><img SRC="i_add_pt.gif" > : <b>Add</b> vertex.<br>
Adds a vertex on an edge. When the user click near an edge, 
a vertex is added on this edge.
<p><img SRC="i_del_pt.gif" > : <b>Del</b> vertex.<br>
Deletes the selected vertices. The selected vertices are deleted.
The vertices are moved to the nearest vertex and then are supressed.<br>
For example, when the setelected vertex <img SRC="vtxdel1.gif" align="middle">
is deleted, the object becomes <img SRC="vtxdel2.gif" align="middle">.
<p><img SRC="i_mergev.gif" > : <b>Merge</b> selected vertices.<br>
Merges the selected vertices.<br>
<img SRC="warning.gif" align="middle"> 
This tool can produce strange result.<br>

<p><img SRC="i_nearvx.gif" > : <b>Collapse</b> vertices.<br>
This tool is for cleaning the selected object. Some tools (like the bevel tools)
can create unwanted vertices, too near from other vertices to be distinctable.
When the <b>Collapse</b> tool is selected, <b>ppModeler</b> asks for 
a distance <i>d</i>. Then, for each vertices connected by an edge, 
<b>ppModeler</b> computes the distance <i>d'</i> between these two 
vertices and, if <i> d' < d</i> then the two vertices are merged.

<p><img SRC="i_edgcut.gif" > : <b>Cut</b> an egde in equals parts.<br>
Cuts a selected egde in equals parts. An edge is selected if its two vertices 
are selected. The number of parts is aked to the user.<br>
For example, cutting the selected edge <img SRC="edgcut1.gif" align = "middle">
in 3 parts gives <img SRC="edgcut2.gif" align = "middle">.

<p><img SRC="i_adedge.gif" > : <b>Add</b> an edge.<br>
Splits a face in two faces. The two first selected vertices must bellong to
a common face. This face is then divided in two faces by adding an edge 
which is joining the two selected vertices.<br>
For example, adding an edge between the two selected vertices 
<img SRC="edgadd1.gif" align = "middle"> gives 
<img SRC="edgadd2.gif" align = "middle">.

<p><img SRC="i_rmedge.gif" > : <b>Remove</b> an edge.<br>
Removes a selected edge. An edge is selected if its two vertices 
are selected. When this tools is activated, the edge is removed.
There is no test to ensure a proper face. After removing an edge, 
the object can contains non-planar faces, and/or concave faces.<br>

For example, when the selected edge <img SRC="edgrm1.gif" align = "middle">
is removed, the resulting face is concave 
<img SRC="edgrm2.gif" align = "middle">.

<p><img SRC="i_vxf_mv.gif" > : <b>Move</b> selected vertices on a plane.<br>
First, <b>ppModeler</b> asks for a plane 
(see <a HREF="facesel.html">Selection of a plane</a>). Then, each 
selected vertex can only moved in a plane defined by the normal to 
the selected plane and the vertex position.

<p><img SRC="i_vxn_mv.gif" > : <b>Move</b> selected vertices along 
a plane normal.<br>
First, <b>ppModeler</b> asks for a plane 
(see <a HREF="facesel.html">Selection of a plane</a>). TheAn, each 
selected vertex can only moved along the normal of the selected plane.

<p><img SRC="i_normal.gif" > : <b>Edit</b> normals.<br>
All the normals of the selected oject are drawn in green. The user can
then click on the end of a normal and move it as wanted.<br>
As example, this is how the normals of a sphere looks like :<br>
<img src="normal.gif">

<p><img SRC="i_fc_bvl.gif" > : <b>Edge Bevel</b>.<br>
A bevel is a way of smoothing an angle of the selected oject.
The bevel is done on the selected edge. This tool can create
unsee vertices, near the existing vertices. 
Please, use the collapse tool to ensure a proper object.<br>
An example :<br>
the selected edge <img src="ebevel1.gif" align="middle"> is cut to give
<img src="ebevel2.gif" align="middle">.

<p><img SRC="i_pt_bvl.gif" > : <b>Vertex Bevel</b>.<br>
The bevel is done on all the selected vertices.<br>
An example :<br>
the selected vertex <img src="vbevel1.gif" align="middle"> is cut to give
<img src="vbevel2.gif" align="middle">.

<p><img SRC="i_ptscal.gif" > : <b>Scale</b> vertices.<br>
Moves the selected vertices toward or away from their barycenter.
The vertices don't have to be on the same face. The horizontal position
of the mouse after pressing the left button defines the diplacement.
On the left, the vertices move away from their barycenter, on the 
right they move toward it.<br>
An example :<br>
the selected vertices <img src="vscale1.gif" align="middle"> are moved away
their barycenter and give 
<img src="vscale2.gif" align="middle">.
</td>
</tr>
</table>


<h2>
<img SRC="i_anim.gif" > <a NAME="animations">Animations</a></h2>
The animation system in <b>ppModeler</b> is based on skeleton, and a 
skeleton can only be attached to a single object. Use the merge object 
tool if you want to apply animation on multiple objects.<br>
First, the user defines the skeleton itself (a hierarchy of bones).
Then, he/she defines the type of articulation between the bones 
(rotation/translation). 
The vertices are, by default, attached to the root bone. So, the user have
to attached the vertices to the bones, so that the object will deform
properly when moving the bones. A vertex can be attached to multiple bone, 
with a weight. This weight give the influence of a given 
bone on the vertex.<br>
Once the skeleton is defined, the user can create sequences. A sequence
is a single movement, for example, a step or a jump. A sequence a time 
indexed 
serie of keyframes. A keyframe is simply a given position of the skeleton, 
which is related to a given position of the object.<br>
During the skeleton defintion, the object list displays the skeleton hierachy.
During the defintion of sequences, the object list display the sequence list.
During the sequence edition, the object list display the keyframe list.<p>
A bone is displayed as a square diamond, with two local axis <i>x</i> and 
<i>y</i>. The purpule handle is used to select and move the bone. The 
two yellow handles to set the bone orientation.
<br><img src="boneview.gif">
<br>A bone.
<p>
For example, this is a simple skeleton and the associated hierarchy :
<table>
<tr VALIGN=TOP>
<td><img SRC="boneman1.gif" ></td>
<td><img SRC="boneman2.gif" ></td>
</tr>
</table>

<h3><A NAME="skeleton">Editing Skeleton</a></h3>
<table>
<tr VALIGN=TOP>
<td><img SRC="bone.gif" ></td>

<td>
<p><img SRC="i_select.gif" > : <b>Select</b> bones.<br>
Selects bones. There is only one bone selected at a time. The selected bone
is displayed in green. Its father is displayed in yellow, and the others bones
are displayed in blue. A bone can be selected by a click on its selection 
handle, or by a click on the bone hierarchy.<br>
A right click toggle <b>ppModeler</b> in the move bone tool.

<p><img SRC="i_boneed.gif" > : <b>Move</b> bones.<br>
Edits the bone position and direction. The purple handle is used to move the
selected bone. The two yellow handles are used for setting the bone length
and direction. The <b>r</b> key rotates the selected bone around its axis.<br>
A right click toggle <b>ppModeler</b> in the select bone tool.

<p><img SRC="i_bonead.gif" > : <b>Add</b> bones.<br>
Adds a new bone. The father of the added bone is the selected one.
The user draws a line that define the bone main axis.
Then <b>ppModeler</b> asks for the bone's name.

<p><img SRC="i_bonerm.gif" > : <b>Del</b> bones.<br>
Removes the selected bone.

<p><img SRC="i_articu.gif" > : <b>Define</b> bone properties.<br>
Defines the selected bone properties. <b>ppModeler</b> opens the 
following window.<br>
<img src="joindef.gif"><br>
The three radio button in the top define the type of articulation between
the selected bone and its father. The three possible articulations are :
<ul>
<li> <b>None</b> : The bone is not articualted.
<li> <b>Rotation</b> : The bone can rotate around its top point. The constaints
  are defined bellow, in degrees. The z axis is the bone axis.
<li> <b>Translation</b> : The bone can change its length.
</ul>

<p><img SRC="i_bonewt.gif" > : <b>Weights</b> vertices.<br>
This tool allow to define quickly the weights of a group a vertices.
<b>ppModeler</b> switches to the 
<a HREF="vtxweight.html">select vertex by rectangle</a> mode. 
Then, an array with the bones names and the associated weights is
displayed. The user can set the weight of the selected vertices in this array.

<p><img SRC="i_bonatt.gif" > : <b>Attach</b> vertices to bones.<br>
Each time the user click on a vertex, this vertex is added to the list 
of vertices attached to selected bone if it is not, otherwise the vertex is 
removed from the attached vertices list. The vertices attached to 
the selected bone (<i>i.e.</i> with a weight greater than 0) are
marked with yellow boxes.<br>
<b>ppModeler</b> computes a default value for the weight, and the vertices
selected by the user are not detacched from the others bones.

<p><img SRC="i_weight.gif" > : <b>Weight</b> bones.<br>
Defines the weights of the vertices attached to the selected bone.
Each time the user click on an attached vertex <b>ppModeler</b> asks 
for the weights of the vertex. The answers is modified so that the 
sum of the weigths for this vertex remains one.

<p><img SRC="i_anim.gif" > : <b>Animation</b> mode.<br>
Activates the <a HREF="#sequences">sequences edit tool</a>.

<p><img SRC="i_edtpos.gif" > : <b>View</b> bones.<br>
Tests the skeleton. <b>ppModeler</b> switches to 
<a HREF="bonemove.html">position edit</a> tool. When the user comes back to
the Editing skeleton tool boxe, the skeleton returns to its initial state.
<p><img SRC="i_load.gif" > : <b>Load</b> bones and sequences.<br>
Not done yet.
<p><img SRC="i_save.gif" > : <b>Save</b> bones and sequences.<br>
Not done yet.

</td>
</tr>
</table>

<h3><A NAME="sequences">Editing Sequences</a></h3>
A sequence is a single movement. The list of the defined sequences
are shown in the object list area. <br>
<img SRC="sequence2.gif" ><br>
A sequence is a list of keyframe.
<table>
<tr VALIGN=TOP>
<td><img SRC="sequence1.gif" ></td>

<td>
<img src="i_select.gif"> : <b>Choose</b> a sequence.<br>
By clicking on a sequence of the object list, the user can select a sequence.

<p><img src="i_keyfrm.gif"> : <b>New</b> sequence.<br>
Adds a new sequence. The name of the sequence is asked and then <b>ppModeler</b>
swithes to the <a HREF="#keyframes"> editing keyframes tool boxe</a>.

<p><img src="i_delete.gif"> : <b>Delete</b> a sequence.<br>
Deletes the selected sequence.

<p><img src="i_edit.gif"> : <b>Edit</b> sequence.<br>
Edits the selected sequence. <b>ppModeler</b>
swithes to the <a HREF="#keyframes"> editing keyframes tool boxe</a>.

<p>Dup : <b>Dup</b> a sequence.<br>
Duplicates the selected sequence.

<b>ppModeler</b>
swithes to the <a HREF="#keyframes"> editing keyframes tool boxe</a>.
<p><img src="i_ok.gif"> : <b>End</b> of sequence editing.<br>
Go back to the <a HREF="#skeleton">edit skeleton tool</a>.
</td>
</tr>
</table>


<h3><A NAME="keyframes">Editing Keyframes</a></h3>
A keyframe is the position of the skeleton at a defined time.<br>
<img src="keyframe1.gif"><br>
The object list area displays the keyframes with the associated time. 
The keyframe in yellow is the selected keyframe. 
The name of the sequence is displayed in green.
A right click on a keyframe allows the user to change the keyframe time.
<table>
<tr VALIGN=TOP>
<td><img SRC="anim.gif" ></td>
<td>
<p><img src="i_select.gif"> : <b>Select</b> a keyframe.<br>
Selects the current keyframe in the object list area.

<p><img src="i_keyadd.gif"> : <b>Add</b> a keyframe.<br>
Adds a new keyframe. 
<b>ppModeler</b> switches to 
<a HREF="bonemove.html">position edit</a> tool. The position is set as the 
selected keyframe.
The time of this keyframe is aked when the position editing is finished.

<p><img src="i_edit.gif"> : <b>Edit</b> a keyframe.<br>
Edits the selected keyframe.

<p><img src="i_delete.gif"> : <b>Del</b> a keyframe.<br>
Deletes the selected keyframe.

<p><img src="i_play.gif"> : <b>Play</b> the sequence.<br>
Plays the sequence, in loop.

<p><img src="i_cut.gif"> : <b>Cut</b> a keyframe.<br>
Cuts the selected keyframe into the clipboard.

<p>Cpy : <b>Copy</b> a keyframe.
Copies the selected keyframe into the clipboard.

<p><img src="i_past.gif"> : <b>Paste</b> a keyframe.<br>
Copy the keyframe from the clipboard into the sequence.

<p><img src="i_ok.gif"> : <b>Quit</b> the keyframes editing.<br>
</td>
</tr>
</table>



<h1><A NAME="menu">Menu</a></h1>
<h2><A NAME="file_menu">File menu</a></h2>
The file menu is composed of :
<ul>
<li> <b>New</b><br>
  Reset the current scene to an empty one.
<li> <b>Load</b><br>
  Loads a 3de file.
<li> <b>Save</b><br>
  Saves the current scene, with the current name. If there isn't alredy a name
  for the scene, the name is asked before.
<li> <b>Save as...</b><br>
  Saves the current scene with a new name.
<li> <b>Save incremental</b><br>
  Saves with a new name. If the current name is not finishing with 2 digits,
  '00' is added at the end of the name. Otherwise, the two digits number is
  incremented and the file is saved with this new name.
<li> <b>Export to POV</b><br>
  Exports the scene to 
  <a HREF="http://www.povray.org"><b>P</b>ersistence <b>O</b>f 
   <b>V</b>ision (tm)</a> file format.
<li> <b>Export to BMRT</b><br>
  Export the scene to <a HREF="http://www.bmrt.org/bmrt.html"><b>B</b>lue 
  <b>M</b>oon <b>R</b>endering <b>T</b>ools</a> file format. Not done yet.
<li> <b>Export to Text</b><br>
  Export the selected object to a readable format. Debugg purpose.
<li> <b>Export to 3do</b><br>
  Export selected object to the <a HREF="3do.html">3do</a> file format.
<li> <b>Export to C code</b><br>
  Export the selected object to a C structure.
<li> <b>Import from 3ds</b><br>
  Import objects from a 3ds file. The objects are added in the current scene.
<li> <b>Import from 3do</b><br>
  Import 3do file object. The object is added in the current scene.
<li> <b>Import from raw</b><br>
  Import raw file object. The objects are added in the current scene.
<li> <b>Import from Vrml</b><br>
  Import wrl file object. The objects are added in the current scene.
<li> <b>Import from lwo</b><br>
<li> <b>Import from md2</b><br>
<li> <b>Import from dxf</b><br>
<li> <b>Quit</b><br>
</ul>

<h2><A NAME="edit_menu">Edit menu</a></h2>
The edit menu is composed of :
<ul>
<li> <b>Undo</b><br>
  <b>ppModeler</b> can undo the last 5 actions. When the user asks for undo, 
  <b>ppModeler</b> opens the following window :<br>
  <img src="undo.gif"><br>
  The selected level of undo is the state where the user want to go back.
  Selecting on level bellow the top will undo the last action. 
  Selecting "undo all" will undo the last five actions.
<li> <b>Move</b><br>
  Move the selected objects. <b>ppModeler</b> asks for the move parameters
  in the following window :<br>
  <img src="move.gif">
<li> <b>Rotate</b><br>
  Rotate the selected objects around the world axis. 
  <b>ppModeler</b> asks for the rotate parameters
  in the following window :<br>
  <img src="rotate.gif">
<li> <b>Scale x, y, z</b><br>
  Scale along the three axis in different proportions.
  <b>ppModeler</b> asks for the scale parameters
  in the following window :<br>
  <img src="scalexyz.gif">
<li> <b>Scale</b><br>
  Scale the selected objects.
<li> <b>Invert faces</b><br>
  Invert all the normals of the selected objects.
<li> <b>Cut</b><br>
  Copy the selected objects into the clipboard and delete them from the scene.
<li> <b>Copy</b><br>
  Copy the selected objects into the clipboard.
<li> <b>Paste</b><br>
  Copy the selected objects from the clipboard into the scene.
<li> <b>Delete</b><br>
  Delets the selected objects.
<li> <b>Calculator</b><br>
  Enters a mathematical fomrmula, and sees the result. For the possible functions, looks <a HREF="math.html">mathematic surfaces</a>.
</ul>


<h2><A NAME="view_menu">Views menu</a></h2>
The views menu is composed of :
<ul>
<li> <b>1 view</b><br>
 <img src="view1.jpg">
<li> <b>2 vertical views</b><br>
<img src="view2v.jpg">
<li> <b>2 horizontal views</b><br>
<img src="view2h.jpg">
<li> <b>4 views</b><br>
<img src="view4.jpg">
</ul>

<h2><A NAME="effect_menu">Effect menu</a></h2>
The effect menu is composed of :
<ul>
<li> <b>Simplify</b><br>
  The same effect than the <a HREF="#simplify">simplify</a> tool in the 
  object tools boxes.  
<li> <b>Decimation</b><br>
<img SRC="decimw.gif" ><br>
Decimate the last selected object. 
The window shows the original object and the decimated object. A right click
on one of the drawing area opens the following window :<br>
<img src="viewdraw.gif"><br>
This window allows the user to choose the drawing mode.<br>
In order to decimate the object, the user enters a number of wanted vertices
in the decimated model and presses Enter. The operation can be quite long.
The result is shown at the end of the process.
<li> <b>Reinit. objects</b><br>
  Recomputes normals, edges, bounding sphere of the selected objects.
<li> <b>Vertex to grid</b><br>
  Rounds all the vertices to the near grid point. The grid can be set in
  the <a HREF="#option_menu">options</a> menu.
<li> <b>Object physical properties</b><br>
<img SRC="physic.gif" ><br>
This window gives the physical properties of the last selected object.
the properties are :&nbsp;
  <ul>
  <li>the mass, computed for a uniform density of one,&nbsp;</li>
  <li>the center of mass,&nbsp;</li>
  <li>the inertia tensor with origin at center of mass.&nbsp;</li>
  </ul>

<li> <b>Test speed</b><br>
  Opens a quick display window and display the scene in all the possible 
  angles (the step between angles is asked before). 
  Press "Esc" key to stop the test. Then show some frame rate statistics.<br>
  <img src="speed.jpg">
<li> <b>Ray tracing</b><br>
  <img src="raytrace.jpg"><br>
  Computes a raytraced image of the scene, from the camera point of view.
  The image size, the background are specify in the window. The field of view
  is the ditance from the camera to the projection plane and the recursion 
  level is the maximum depth plus one of the reflected rays.
</ul>

<h2><A NAME="object_menu">Object menu</a></h2>
The object menu is composed of :
<ul>
<li> <b>Blob</b><br>
  Look at <a HREF="blob.html">Blob Object chapter</a>.
<li> <b>Height filed</b><br>
  Look at <a HREF="heightfield.html">Heightfield Object chapter</a>.
<li> <b>Plant</b><br>
  Look at <a HREF="plant.html">Plant Object chapter</a>.
<li> <b>Textured polygon</b><br>
  Look at <a HREF="txtpoly.html">Textured polygon chapter</a>.
<li> <b>Architecture plan</b><br>
  Not done yet.
<li> <b>Mathematical surface</b><br>
  Look at <a HREF="math.html">Mathematical Surface chapter</a>.
</ul>

<h2><A NAME="option_menu">Options menu</a></h2>
The options menu is composed of :
<ul>
<li> <b>Spline resolution</b><br>
  Defines the spline resolution. Tis resolution is used by the sphere
  creation, the cylinder creation and the spline mode for 2d and 3d polygons.
<li> <b>Statistics</b><br>
<img src="stat.gif"><br>
Gives some statistics about the scene and the objects. This window also
allows the user to change the object's names.
<li> <b>Configure</b><br>
  Not Finished yet. The only configuration is the background color in the 
  texturing mode.
<li> <b>midmap on/off</b><br>
  Toggles midmap on/off.
<li> <b>Grid</b><br>
Defines the grid steps for each axis. A 0 value means no grid at all.
<li> <b>Texture list</b><br>
  Look at the chapter <a HREF="texturelst.html">Texture management</a>.
</ul>

<h2><A NAME="help_menu">Help menu</a></h2>
The help menu is composed of :
<ul>
<li> <b>Help</b><br>
 Not done yet.
<li> <b>About</b><br>
<img src="about.jpg"><br>
 Gives the compile time. Usufull for debugging.
</ul>


<hr>
<h1><a NAME="tutorials">Tutorials</a></h1>



</body>
</html>
