| # Bezier Editor GUI Help Page |

### Version

First of all: This is free software - see License.
Second: This is a beta version! Please do not expect it to be free of bugs...
Help me to improve the software by reporting bugs, possible improvements, etc. to: <rammelt@cs.tu-berlin.de>.

| Loading / Saving |

This part describes what are the minimum steps to create an image:

| Load a scene description in XML format (see ./xsd/E3DBezierMesh.xsd)
| Save a scene description in XML format (see ./xsd/E3DBezierMesh.xsd)

| Editing |

Select Needles / Bezier Meshes: | Select a needle, point or a mesh of several needles/points by clicking it with the left mouse button. You can select more objects when holding <Ctrl> pressed while clicking on not yet selected points/needles/meshes. Clicking on objects which are already selected while holding <Ctrl> pressed will deselect these objects. If you select meshes all needles/points contained by any of the selected meshes will be selected as well. Press "q" while selecting needles/points to select all needles/points which are in the same row of a mesh. Press "a" while selecting needles/points to select all needles/points which are in the same column of a mesh.
Add Bezier Meshes:
| On tab "TEMPLATES" select either point meshes () or bezier meshes () and create spheres, cylinders, rectangles and rings emplate Select (exactly) four needles (<Ctrl> + left mouse button) and press <Insert> to create a new bezier surface (the order in which the needles are selected matters - i.e. you must select the needles all around the new surface!)
Remove Needles / Bezier Surfaces: | Select needles and/or bezier/point meshes to delete them by <Delete>. If a point/needle is selected all point/meshes using that point/needle will be removed. Additionally all other points/needles not belonging to any other mesh will be removed.
Notice: | Since all points/needles of a mesh will be selected for a selected mesh, you cannot delete single meshes sharing points/needles with other meshes by selecting the mesh itself. Instead select one point/needle of the mesh that is not shared by ony other mesh and press <Delete>.
Rotate Needles (and Points): | Rotate the needle around its pinpoint by dragging it with the left mouse button. The orientation of the needle defines the normal vector in its pinpoint for all bezier surfaces containing this needle. All these surfaces get updated accordingly.
Notice I: | Selected needles (even if there is just one needle selected) do not rotate around their pinpoint anymore - instead they will rotate around the point grabbed with mouse!
Notice 2: | Deselected points are point-symmetrical, i.e. rotation has no effect. Selected points, on the other hand, will rotate around the point grabbed with mouse (just like needles and all other selected objects).
Translate Needles and Points: | Translate a needle/point in the x- and y-direction by dragging it with the right mouse button. Translate it in z-direction by dragging it with the middle mouse button (notice that you won't see any movement of the point/needle if you are using a parallel perspective)
Rotate Meshes: | Select meshes as described before. Then you can rotate the selected meshes by dragging them with the left mouse button.
Translate Meshes: | Select meshes as described before and drag them with the right mouse button (x-, y-direction) or the middle mouse button (z-direction). Again notice that you won't see any movement when moving along the z-axis using a parallel perspective.
Transform Meshes: | Select meshes as described before. Using the entries in menu "Edit->Transformations" you can mirror/rotate the selected objects.
Change the Orientation of Meshes: | Select meshes as described before. Using the entries in menu "Edit->Orientation" you can change the inner orientation of meshes, which affects the orientation of (individual) textures painted on those meshes.
Copy / Cut / Paste / Undo / Redo: | ...should all work as usual...

Scale:

| Scale selected (all objects if there is currently none selected).

| 3D / View Parameters |

View-Direction:
Define the view point here.

| x-coordinate.
| y-coordinate.
| z-coordinate.

You can change the view direction also by dragging (deselected) bezier surfaces with the left mouse-button.
You can also set the view-direction to the front-view (<Home>/<Pos1>), back-view (<End>), top-view (<UP>), bottom-view (<DOWN>), left-view (<LEFT>), right-view (<RIGHT>).
Translation:
Define the translations of the object along the x, y, and z-axis here.

| x-translation.
| y-translation.
| z-translation.

You can move the whole scene also by dragging (deselected) bezier surfaces with the right mouse-button.
Zoom:

| Zoom factor.

You can zoom/unzoom the whole scene also by dragging (deselected) bezier surfaces with the middle mouse-button (direction up/down).
Leight-Position:
Define the position of the (single) directed light source here.

| x-coordinate.
| y-coordinate.
| z-coordinate.

You can move the light also by dragging the light point (semi-transparent white circle) with the right mouse-button.
Image-Positions:
Define the translations of the background, side and top-image here

| x-translation of the side image.
| y-translations of the top image.
| z-translations of the background image.

Lense:

| Adjust the focal length of the lense. The smaller this value is the higher the spatial distortion will be. If the focal length is 0 a parallel perspective is used instead.

Texture-Files:
Define and enable/disable textures

Front/Back: | Front/back images are displayed on a square (1 x 1) and (partly) as a texture on all surfaces tagged with "_FRONT" / "_BACK".
Left/Right: | Side image are displayed on a square (1 x 1) and (partly) as a texture on all surfaces tagged with "_LEFT" / "_RIGHT".
Top/Bottom: | Top/bottom images areis displayed on a square (1 x 1) and (partly) as a texture on all surfaces tagged with "_TOP" / "_BOTTOM".

Detail Level

| Make only every Nth point/needle in each mesh editable. The points inbetween will be interpolated by the given interpolation function.

Point and Needle Size:

| Size of points and needle (1 = normal size). If the value is 0 no points and needles are shown anymore.

| Edit Parameters |

Edit Tags:

| Mark tags here (you can mark multiple tags by pressing <Ctrl> while clicking on tags).
| Get the tags from the first selected object (the tags found from that object will be marked in the tag list).
| Add the tags marked in the tag list to all selected objects.
| Remove the marked tags from all selected objects.
| Create a new tag with the given name.
| Delete the selected tags completely.

Select by Tags:

| Select bezier surfaces by selecting tags here (you can select multiple tags by pressing <Ctrl> while clicking on tags).
| Select all objects.
| Deselect all objects.
| Only those objects will be selected which are tagged by all selected tags.
| All objects will be selected which are tagged by any of the selected tags.

Color:

| Red channel.
| Green channel.
| Blue channel.
| Alpha channel (currently it is not possible to have tarnsparent objects).
| Get the color / alpha value from the first selected bezier surface.
| Set the color / alpha value to all selected bezier surfaces.

Material:

| Gloss value.
| Mirroring coefficient.
| Get the material values from the first selected mesh.
| Set the material values to all selected meshes.
| Remove the material information from all selected meshes.

Melting Radius:

| Radius defining a max. distance between two needles/points to be "melted" into one needle/point.
| All clusters of selected needles/points which have at most the given distance to each other will be removed and replaced by one single needle/point representing the whole cluster. After that multiple meshes could share the same points/needles.

Interpolation Radius and Function:

| Radius defining how many points/needles around a translated point/needle will be affected by that movement.
Notice: | Currently there is no "measuring stick" included, but as a hint you can used the radius of the little spheres representing points and the heads of needles which is 0.05.
| If the linear mode is turned on, a linear function will be used to define the movement of neighboring points within the radius (this is the default)
| If the quadratic mode is turned on, a quadratic function will be used to define the movement of neighboring points within the radius
| If the sigmoidal mode is turned on, a sigmoidal function will be used to define the movement of neighboring points within the radius
| If the constant offset mode is turned on, all points within the radius will be moved in the same way

Individual Texture:

| Get the associated texture file from the first selected mesh.
| Opens a file-dialog to choose an image file which should be used as a texture.
| Set the choosen texture to all selected meshes.
| Remove the texture from all selected meshes.
| Save texture file of the selected mesh.

Brushes:
Choose one of the brush shapes. Keep the space key pressed while moving the mouse on a mesh surface to paint on the texture of that mesh with the defined color (see above) and the defined opacity (see below). Press the "," (comma) key on a surface to get the color of the texture at that point ("Pipette").
Opacity:
Defines the opacity for painting on textures (see above).

| License |

Copyright (c) 2012, Patrick Rammelt
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

- Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.