| # Bezier 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 / Rendering / Saving Images |

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

| Load a "Dump-File". For now this is the only format supported. It was written by another application, written in TCL/TK and C++ which is not part of this distribution. So the objects cannot be edited (maybe this would be possible in a future version, which most propably will use another more sophisticated format, probably a xml-format...). Some dump-files are included in the beziers/ directory of this distribution.
| Start rendering. A progress bar will appear on the image display. When calculation finished succesfully the progress bar will disappear and the rendered image will be shown instead.
| Automatically restart calculation if a parameter has been changed (only restarts the relevant parts of the calculation while the start button always restarts the whole calculation).
| Abort rendering (only active while rendering) - hopefully you do not need this too often... :-)
| Save the image. Supported formats are: PNG (supports transparency), JPEG (doesn't support transparancy)

| 3D Parameters |

View-Point
Define the view point here. A little box on the right side of the image display shows the direction.

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

Distance
Normally (distance <= 0) the viewer is assumed to be infinetly far away, i.e. a parallel-perspective is used. Using a distance > 0 creates an diminishing point perspective.

| x-coordinate

Light-Point
Define the coordinates of the (single) source of light here. A little box on the bottom side of the image display shows the direction. The light is assumed to be infinetly far away, i.e. rays of light are all in parallel.

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

| Bezier Parameters |

Bezier

density | number of columns / rows a bezier-mesh has per 1 pixel distance of the most distant neighbouring corner points. If the density value is too small you might observe holes in the object. On the other hand a density which is unnecessarily high might cause an "out of memory" error and also increases the calculation time. The example below shows a typical result for a density which is too small:
scale | Scaling factor (1 means original size, 0.5 means half the original size, 2 means twice the original size)
splits | This is experimental! By this value one can define the maximum number of times a bezier-surface gets split up into 4 smaller surfaces. Using this feature might introduce instabilities into the object. It might even cause errors, due to surfaces getting very large because of such instabilities.
splits = 0 | splits = 1
min | If splits > 0 this value defines the minimum size a surface must have to be split up. The size is defined by the max. distance of two neighbouring corners of such a surface.

| Rendering Parameters |

Background
Background color.

| Red channel
| Green channel
| Blue channel
| Alpha channel (0 means background is fully transparent, 255 means color is fully opaque)

HSB-Filter
Color filter

| Hue offset
| Saturation factor
| Brightness factor

Focus-Depth-Filter
Parameters for a filter, which blurs all points depending on their distance to a z-coordinate of highest sharpness.

| Max. blur radius
| Relative z-position (0 = front, 1 = back) of the highest sharpness

Color-Shift-Filter
Parameters for a filter, which "shifts" colors of all points depeneding on their distance (given by their z-coordinates). This filter could be used to create the illusion of very big objects.

| Blue-shift coefficient (0 = no blue shift, 1 = max. blue shift)
| Brightness-shift coefficient (0 = no blue shift, 1 = max. blue shift)

Rendering
In this section special parameters for the used rendering algorithm could be defined.

thickness | Thickness of the visible surface (e.g. a value of 10 means that behind every visible pixel there are 9 solid pixels assumed). This value might an effect on shadows only! Only a thickness of 0 is not a good idea, because the object is invisible then :-)
ground | Ground light. This defines the amount of light which depends on the distance to the light point only (the closer a point is the brighter it will be). For the following image a high ground-light value (ground-light = 0.8) was used:
reflex | Reflexivity. The higher this value is, the stronger is the effect of reflected light. The following image was rendered with a low reflex-value (reflex = 0.2):
diffusion | This defines a max. distance over which one "enlighted" point distributes light to points which are shadowed by this point. With a small value for diffusion you might see unwanted edges. This image illustrates this behaviour for diffusion = 1:
gloss | This defines the gloss of the object. The following image was randered with a high value for gloss (gloss = 15):
min. Light | The minimum brightness of a point which belongs to the object. This image was create with a high min-light value of 0.8:
mirror | Mirroring coefficient used for mirrored images

Image-Files

texture | One or more images which are used as a textures for all(!) bezier surfaces. Unfortunately it is not possible to define special textures for some of the surfaces. But if you choose more than one texture file it is possible to define a policy how textures are choosen for all surfaces out of these textures. Textures could have transparent parts. The object will be transparent at these areas. But only if an area is fully transparent (alpha=0) you will see parts of the scene which are behind this surface (normally hidden) (because at the end a 3D scene is defined by a simple Z-buffer which holds exactly one distance for each point/pixel it is not possible to have more than one layer of visible objects shining through each other...)
front | An image which is used for the front side of a box or for the one "side" of a sphere surrounding the object. The objects surface mirrors this image.
left | An image which is used for the left side of a box urrounding the object. The objects surface mirrors this image.
top | An image which is used for the top side of a box urrounding the object. The objects surface mirrors this image.
back | An image which is used for the back side of a box urrounding the object. The objects surface mirrors this image.
right | An image which is used for the right side of a box urrounding the object. The objects surface mirrors this image.
bottom | An image which is used for the bottom side of a box urrounding the object. The objects surface mirrors this image.
background | An image which is used for the background (if this image has (semi-)transparent pixels the background color has still an effect)

Texture choosing policy

forward | Use the first texture for the first surface, the second for the second surface, ... start again at the first texture if there are more surface than textures (which is usally true).
backward | Use the last texture for the first surface, the second last for the second surface, ... start again at the last texture if there are more surface than textures (which is usally true).
random | For each surface choose a texture at random.

Mirroring Shape

box-shaped | The mirrored image is put on all six sides of an box surrounding the object
spherical | The mirrored image is put on a sphere surrounding the object

| View Parameters |

Zoom

| Zoom factor. This doesn't affect the actual size of the image (e.g. if it is saved on disk). It just effects the size of the displayed image!

| License |

Copyright (c) 2009, 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.