You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2101 lines
68 KiB
2101 lines
68 KiB
15 years ago
|
<?xml version="1.0" ?>
|
||
|
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
|
||
|
<!ENTITY kappname "&kpovmodeler;">
|
||
|
<!ENTITY package "kdegraphics">
|
||
|
<!ENTITY Povray "<application>POV-Ray</application>">
|
||
|
<!ENTITY % addindex "IGNORE">
|
||
|
<!ENTITY % English "INCLUDE">
|
||
|
]>
|
||
|
|
||
|
<book lang="&language;">
|
||
|
|
||
|
<bookinfo>
|
||
|
<title>The &kpovmodeler; Handbook</title>
|
||
|
|
||
|
<authorgroup>
|
||
|
<author>
|
||
|
<firstname>Lauri</firstname>
|
||
|
<surname>Watts</surname>
|
||
|
<affiliation>
|
||
|
<address><email>lauri@kde.org</email></address>
|
||
|
</affiliation>
|
||
|
</author>
|
||
|
|
||
|
<author>
|
||
|
<firstname>Andreas</firstname>
|
||
|
<surname>Zehender</surname>
|
||
|
<affiliation>
|
||
|
<address><email>zehender@kde.org</email></address>
|
||
|
</affiliation>
|
||
|
</author>
|
||
|
|
||
|
<author>
|
||
|
<firstname>Olivier</firstname>
|
||
|
<surname>Saraja</surname>
|
||
|
<affiliation>
|
||
|
<address><email>olivier@linuxgraphic.org</email></address>
|
||
|
</affiliation>
|
||
|
</author>
|
||
|
|
||
|
<!-- TRANS:ROLES_OF_TRANSLATORS -->
|
||
|
</authorgroup>
|
||
|
|
||
|
<legalnotice>&FDLNotice;</legalnotice>
|
||
|
|
||
|
<date>2002-09-07</date>
|
||
|
<releaseinfo>1.00.00</releaseinfo>
|
||
|
|
||
|
<abstract>
|
||
|
<para>
|
||
|
&kpovmodeler; is a graphical 3D modeler, which can generate scenes for
|
||
|
&Povray;
|
||
|
</para>
|
||
|
</abstract>
|
||
|
|
||
|
<keywordset>
|
||
|
<keyword>KDE</keyword>
|
||
|
<keyword>KPovModeler</keyword>
|
||
|
</keywordset>
|
||
|
|
||
|
</bookinfo>
|
||
|
|
||
|
<chapter id="introduction">
|
||
|
<title>Introduction</title>
|
||
|
|
||
|
<para>&kpovmodeler; is a 3D modeling application to generate &Povray;
|
||
|
scenes.</para>
|
||
|
|
||
|
<para>While it is not necessary to fully understand the &Povray;
|
||
|
application in order to make good use of &kpovmodeler;, it is highly
|
||
|
recommended that you read and try to understand the &Povray;
|
||
|
documentation.</para>
|
||
|
|
||
|
<para>To find out more about &Povray; go to
|
||
|
<ulink url="http://www.povray.org">www.povray.org</ulink>.</para>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="the-interface">
|
||
|
<title>The &kpovmodeler; Interface</title>
|
||
|
|
||
|
<para>When you start &kpovmodeler;, the default layout is as
|
||
|
follows:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<screeninfo>The default view layout</screeninfo>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="defaultviewlayout.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The default view layout</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
<para><link linkend="menu-reference">Menubars (1)</link></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para>Toolbars (2)</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><link linkend="the-object-tree">The object tree (3)</link></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><link linkend="the-properties-view">The object properties
|
||
|
view (4)</link></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><link linkend="the-wireframe-views">The wireframe and camera views (5)</link></para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect1 id="the-object-tree">
|
||
|
<title>The Object Tree</title>
|
||
|
|
||
|
<para>The object tree displays the objects inside the scene and their hierarchy.</para>
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="objecttree.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The object tree</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<sect2 id="object-tree-selecting-object">
|
||
|
<title>Selecting Objects</title>
|
||
|
<para>In the object tree you can select objects. Once you select an object, its attributes
|
||
|
are displayed in the
|
||
|
<link linkend="the-properties-view">properties view</link> and rendered yellow in the
|
||
|
<link linkend="the-wireframe-views">wireframe views</link>.</para>
|
||
|
|
||
|
<para>You can select multiple objects. However, you cannot select a child of an already
|
||
|
selected object, because all children are selected indirectly with the parent.</para>
|
||
|
|
||
|
<para>If only one object is selected, it is referred to as <quote>the active object</quote> from now on.</para>
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="object-tree-add-objects">
|
||
|
<title>Adding new Objects</title>
|
||
|
|
||
|
<para>To add a new object to the object tree, select the object where you want to
|
||
|
insert the new object and either click the icon in the toolbar or choose a menu entry
|
||
|
in the <guimenu>Insert</guimenu> menu.</para>
|
||
|
|
||
|
<para>There are three possible positions for new objects:</para>
|
||
|
<itemizedlist>
|
||
|
<listitem><para>As the first child of the active object</para></listitem>
|
||
|
<listitem><para>As the last child of the active object</para></listitem>
|
||
|
<listitem><para>As a sibling of the active object</para></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>If there is more than one position possible, the following popup menu prompts
|
||
|
you to select the correct position:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="insertaspopup.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The insert position popup</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="object-tree-remove-objects">
|
||
|
<title>Removing Objects</title>
|
||
|
<para>To remove objects, select them and select <guimenuitem>Delete</guimenuitem> from
|
||
|
either the <guimenu>Edit</guimenu> menu or the &RMB; context menu.</para>
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="object-tree-move-objects">
|
||
|
<title>Moving Objects</title>
|
||
|
<para>To move objects, drag and drop the selected objects on to the object tree.</para>
|
||
|
<para>You can cut the object and insert it at the new position as well.</para>
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="the-properties-view">
|
||
|
<title>The Properties View</title>
|
||
|
|
||
|
<para>The properties view displays the attributes of the active object.</para>
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="objectpropertiesview.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The properties view</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>If you changed some properties, click the <guibutton>Apply</guibutton> button to
|
||
|
make the changes permanent. If you entered invalid data, a message box will show up with
|
||
|
an error description. You can then adjust the properties and press
|
||
|
<guibutton>Apply</guibutton> again, or revert your changes with the
|
||
|
<guibutton>Cancel</guibutton> button.</para>
|
||
|
<para>If you set the path to your &Povray; user documentation in the
|
||
|
<link linkend="configure-povray-tab">settings dialog</link>, you can open the
|
||
|
&Povray; reference page for the displayed object with the <guibutton>Help</guibutton>
|
||
|
button.
|
||
|
</para>
|
||
|
|
||
|
<note><para>You need the &Povray; 3.1g or 3.5 HTML user documentation in order to use this feature.
|
||
|
If your distribution does not contain this documentation you can download it
|
||
|
<ulink url="ftp://ftp.povray.org/pub/povray/Old-Versions/Official-3.1g/Docs/povhtml.zip">here</ulink>.
|
||
|
The &Povray; 3.5 package contains the html user documentation.</para>
|
||
|
</note>
|
||
|
|
||
|
<para>If you edit a texture or a part of a texture, you can preview it inside the properties view.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="texturepreview.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The properties view, texture preview</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Press the <guibutton>Preview</guibutton> button inside the properties view and a
|
||
|
small sample scene with the selected texture will be rendered. By default the whole texture
|
||
|
will be rendered, even if not the top item is selected. If you want to render only a part of
|
||
|
the texture (for example a texture inside a texture map and not the whole texture map), check the
|
||
|
<guilabel>local</guilabel> check box.</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="the-wireframe-views">
|
||
|
<title>The Wireframe Views</title>
|
||
|
|
||
|
<sect2 id="orthographic-views">
|
||
|
<title>The Orthographic Views</title>
|
||
|
|
||
|
<para>The orthographic wireframe views show the scene as an orthographic
|
||
|
projection on one of the coordinate planes.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="topview.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The top wireframe view</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>There are six types of orthographic wireframes views:</para>
|
||
|
<itemizedlist>
|
||
|
<listitem><para>Top</para></listitem>
|
||
|
<listitem><para>Bottom</para></listitem>
|
||
|
<listitem><para>Left</para></listitem>
|
||
|
<listitem><para>Right</para></listitem>
|
||
|
<listitem><para>Front</para></listitem>
|
||
|
<listitem><para>Back</para></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>Each type renders the scene from a different perspective.</para>
|
||
|
|
||
|
<sect3 id="graphical-change">
|
||
|
<title>Graphical Attribute Changes</title>
|
||
|
<para>In the orthographic views you can change object attribute
|
||
|
properties graphically with the mouse.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="controlpoints.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The control points of the camera object</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The above screenshot shows the control points of the camera.
|
||
|
You can drag the control points around to change the camera's position and direction.</para>
|
||
|
|
||
|
<para>If a transformation is selected, the control points are removed and a small cross is
|
||
|
displayed in the wireframe view. The cross marks the center for scaling and rotation,
|
||
|
as well as the position for translations. You can change the transformation with the mouse
|
||
|
by dragging inside the whole view.</para>
|
||
|
|
||
|
<para>Some objects like the bicubic patch support selection and modification of multiple
|
||
|
control points.</para>
|
||
|
|
||
|
<informaltable>
|
||
|
<tgroup cols="2"><tbody>
|
||
|
<row>
|
||
|
<entry>&LMB;</entry>
|
||
|
<entry>Selects one control point and deselects all others</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry><keycombo
|
||
|
action="click">&Ctrl;<mousebutton>Left</mousebutton></keycombo>
|
||
|
Mouse Button</entry>
|
||
|
<entry>Selects or deselects one control point</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry><keycombo
|
||
|
action="click">&Shift;<mousebutton>Left</mousebutton></keycombo>
|
||
|
Mouse Button</entry>
|
||
|
<entry>Drag a rectangle. All control points inside the rectangle are
|
||
|
selected, the others deselected</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry><keycombo
|
||
|
action="click">&Shift;&Ctrl;<keycap>Left</keycap></keycombo> Mouse Button</entry>
|
||
|
<entry>Drag a rectangle. All control points inside the rectangle are selected</entry>
|
||
|
</row>
|
||
|
</tbody></tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="display-window-selection">
|
||
|
<title>Display Window Selection</title>
|
||
|
<para>You can zoom and translate the view to change the display window.</para>
|
||
|
<informaltable>
|
||
|
<tgroup cols="2"><tbody>
|
||
|
<row>
|
||
|
<entry>&MMB;</entry>
|
||
|
<entry>Translates the view</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry><mousebutton>wheel</mousebutton></entry>
|
||
|
<entry>Zooms the view around the mouse position</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry><keycap>Left</keycap>, <keycap>Right</keycap>, <keycap>Up</keycap>, <keycap>Down</keycap> </entry>
|
||
|
<entry>Translates the view</entry>
|
||
|
</row>
|
||
|
<row>
|
||
|
<entry><keycombo action="simul"><keycap>Ctrl</keycap><keycap>Left</keycap></keycombo>,
|
||
|
<keycombo action="simul"><keycap>Ctrl</keycap><keycap>Right</keycap></keycombo></entry>
|
||
|
<entry>Zooms the view</entry>
|
||
|
</row>
|
||
|
</tbody></tgroup>
|
||
|
</informaltable>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="camera-view">
|
||
|
<title>The Camera View</title>
|
||
|
|
||
|
<para>The camera view displays the scene from the camera's point of view.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="cameraview.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The camera view</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The blue box displays the field of view when the scene is rendered.</para>
|
||
|
|
||
|
<para>You cannot change control points in the camera view.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="visibility-levels">
|
||
|
<title>Visibility Levels</title>
|
||
|
|
||
|
<para>By default all objects are displayed in the wireframe views.</para>
|
||
|
<para>Each object with a wire frame has a visibility level.
|
||
|
You can specify a visibility level relative to the parent's visibility level
|
||
|
or an absolute value. Objects are only displayed if they are selected or their visibility
|
||
|
level is smaller or equal the chosen scene visibility level in the
|
||
|
toolbar.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="view-layouts">
|
||
|
<title>View Layouts</title>
|
||
|
|
||
|
<para>&kpovmodeler; comes with a default view layout: The object tree and
|
||
|
the object properties view to the left and four graphical views to the right.</para>
|
||
|
|
||
|
<para>If you don't like the default layout, or need another layout, you can freely
|
||
|
configure it. You can even save multiple view layouts and switch between them
|
||
|
on the fly.</para>
|
||
|
|
||
|
<sect2 id="change-the-view-layout">
|
||
|
<title>Modifying the View Layout</title>
|
||
|
|
||
|
<para>You can move the existing views by dragging the handle on top of the
|
||
|
views around.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="dockwidget.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The dock widget handle</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>To dock a widget above or below an existing view, drag the handle to
|
||
|
the top or bottom of a view. A rectangle will indicate the new position.</para>
|
||
|
<para>To create a new column, drag the handle to the right or left side
|
||
|
of another view. The view will then dock to the left or right side of the
|
||
|
view and span the full height.</para>
|
||
|
<para>If you want multiple views sharing the same space, drag the handle to
|
||
|
the center of another view. You can then switch between the views by
|
||
|
clicking the corresponding tab on top of the views.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="dockwidgettab.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The tabbed view layout</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The last layout possibility are floating views: views that
|
||
|
are not docked into the main view. To undock a view, drag the handle to the
|
||
|
desktop or press the little arrow in the view handle that points to the
|
||
|
top left side.</para>
|
||
|
|
||
|
<para>To close a view, click the little cross in the handle. To prevent closing,
|
||
|
click the little box between the arrow and the cross.</para>
|
||
|
|
||
|
<para>You can add additional views to the main window. The <guimenu>View</guimenu>
|
||
|
menu contains entries for each type of view. New views will be created floating,
|
||
|
which you can dock wherever you like.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="save-a-view-layout">
|
||
|
<title>Saving a View Layout</title>
|
||
|
|
||
|
<para>You can save the current view layout with
|
||
|
<menuchoice>
|
||
|
<guimenu>View</guimenu>
|
||
|
<guimenuitem>Save View Layout...</guimenuitem>
|
||
|
</menuchoice> A dialog opens that lets you select an existing layout
|
||
|
or create a new one.</para>
|
||
|
|
||
|
<para>You can then fine-tune your view layout in the
|
||
|
<link linkend="configure-view-layout-tab">settings dialog</link>.
|
||
|
|
||
|
</para>
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="switching-between-view-layout">
|
||
|
<title>Switching between View Layouts</title>
|
||
|
<para>You can switch to a saved view layout by selecting the entry in the
|
||
|
<menuchoice><guimenu>View</guimenu><guimenuitem>View Layout</guimenuitem></menuchoice>
|
||
|
menu.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="povray-interaction">
|
||
|
<title>&Povray; Interaction</title>
|
||
|
|
||
|
<sect1 id="rendering-the-scene">
|
||
|
<title>Rendering the Scene</title>
|
||
|
|
||
|
<para>Once you have created a scene, you will want to render it. &kpovmodeler;
|
||
|
uses &Povray; 3.1g to render the scene, so you need a correct installation of &Povray;.
|
||
|
At the time of writing &Povray; 3.5 was released. This version is not supported in
|
||
|
the &kpovmodeler; 1.0 version.</para>
|
||
|
<para>Go to <ulink url="http://www.povray.org">www.povray.org</ulink>
|
||
|
to get a version of &Povray; and for installation instructions.</para>
|
||
|
|
||
|
<para>To render the current scene, press the render icon
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="rendericon.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render icon</phrase></textobject>
|
||
|
</inlinemediaobject>
|
||
|
in the toolbar, or select the
|
||
|
<menuchoice><guimenu>View</guimenu><guimenuitem>Render</guimenuitem></menuchoice>
|
||
|
menu entry.</para>
|
||
|
|
||
|
<sect2 id="render-modes">
|
||
|
<title>Render Modes</title>
|
||
|
|
||
|
<para>A render mode is similar to &Povray;s ini file entries. It specifies the image size
|
||
|
and quality levels for rendering. If you would like to render your scene with different
|
||
|
qualities and sizes, you can add as many render modes as you need, from quick previews
|
||
|
to fullscreen high quality images.</para>
|
||
|
|
||
|
<sect3 id="render-modes-configuration">
|
||
|
<title>Render Modes Configuration</title>
|
||
|
|
||
|
<para>When you press the render settings icon
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="rendersettingsicon.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render settings</phrase></textobject>
|
||
|
</inlinemediaobject>
|
||
|
in the toolbar or select the
|
||
|
<menuchoice><guimenu>View</guimenu><guimenuitem>Render Modes...</guimenuitem></menuchoice>
|
||
|
menu icon, the following dialog opens:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="rendermodesselection.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render modes selection dialog</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>This dialog shows the list of all available render modes.</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry><term><guibutton>Add</guibutton></term>
|
||
|
<listitem><para><action>Adds a default render mode to the list</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Remove</guibutton></term>
|
||
|
<listitem><para><action>Removes the selected render mode</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Edit</guibutton></term>
|
||
|
<listitem><para><action>Opens a dialog to edit the selected render mode</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Up</guibutton></term>
|
||
|
<listitem><para><action>Moves the selected render mode one position up</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Down</guibutton></term>
|
||
|
<listitem><para><action>Moves the selected render mode one position down</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
<para>The <guibutton>Edit</guibutton> Button opens the following
|
||
|
configuration dialog:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="rendermodesize.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render modes size tab</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Each render mode has a description. You can enter any description, but it should reflect
|
||
|
the render mode's properties.</para>
|
||
|
|
||
|
<para>In the <guilabel>Size</guilabel> tab you can enter the width and height of the rendered image. If
|
||
|
you want to render only a small part of the image, check the
|
||
|
<guilabel>Subselection</guilabel> check box and enter the part of the image
|
||
|
in the fields below.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="rendermodequality.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render modes quality tab</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>In the <guilabel>Quality</guilabel> tab you can select various quality levels
|
||
|
for the rendered image.</para>
|
||
|
|
||
|
<para>In the <guilabel>Quality</guilabel> combo box you can select the features
|
||
|
&Povray; uses while rendering. The possibilities range from a very simple coloring
|
||
|
and lighting model, to one which has complex diffuse inter-reflection lighting.
|
||
|
See the &Povray; user documentation
|
||
|
for a detailed description of the rendering features.</para>
|
||
|
|
||
|
<para>If an image is rendered with only one sample per pixel, various errors can occur.
|
||
|
These images often have moiré or stepped effects in curves and lines, and
|
||
|
details can get lost if they are smaller in appearance then one pixel.
|
||
|
This effect is called <quote>aliasing</quote>.</para>
|
||
|
|
||
|
<para>&Povray; uses a technique called <quote>anti-aliasing</quote> to reduce the impact
|
||
|
of these errors. In general images will look smoother with this feature.</para>
|
||
|
|
||
|
<para>If you enable anti-aliasing, &Povray; will calculate and combine more then one
|
||
|
sample per pixel. This is called <quote>super-sampling</quote>.</para>
|
||
|
|
||
|
<para>&Povray; supports two methods of super-sampling. The default
|
||
|
is an adaptive non-recursive method; <quote>adaptive</quote>
|
||
|
because the super-sampling
|
||
|
depends on the local neighborhood of the pixel. Not every
|
||
|
pixel is super-sampled with this method. The second method is an adaptive
|
||
|
recursive one; <quote>recursive</quote> because every pixel is divided and sub-divided
|
||
|
recursively, and <quote>adaptive</quote> because the recursion depth depends on the
|
||
|
computed color values.</para>
|
||
|
|
||
|
<para>When you select the first method, povray traces one ray per pixel. If the
|
||
|
difference between its color value and that of its neighbor exceeds the given threshold,
|
||
|
both pixels are super-sampled by tracing a fixed number of additional rays. If you set
|
||
|
the depth value to 4, a 4x4 grid of additional points will be calculated, a depth
|
||
|
value of 5 will result in 5x5 (25) samples per pixel.</para>
|
||
|
|
||
|
<para>The difference between two pixels is computed as follows: r<subscript>1</subscript>,
|
||
|
g<subscript>1</subscript> and b<subscript>1</subscript> are the
|
||
|
red, green and blue values of the first pixel; r<subscript>2</subscript>,
|
||
|
g<subscript>2</subscript> and b<subscript>2</subscript> are the red,
|
||
|
green and blue values of the second pixel. The difference is then:
|
||
|
</para>
|
||
|
<para>diff = abs(r<subscript>1</subscript>-r<subscript>2</subscript>)
|
||
|
+ abs(g<subscript>1</subscript>-g<subscript>2</subscript>)
|
||
|
+ abs(b<subscript>1</subscript>-b<subscript>2</subscript>)</para>
|
||
|
|
||
|
<para>The recursive method starts with 4 samples per pixel. If the resulting color values
|
||
|
differ more than the given threshold, the pixel is sub-divided into 4 sub pixels that are
|
||
|
separately traced and tested for further subdivision. You can specify the maximum
|
||
|
recursive depth with the depth value.</para>
|
||
|
|
||
|
<para>An additional method to reduce aliasing effects is to add noise to the
|
||
|
sampling process, called <quote>jittering</quote>. If you enable
|
||
|
jittering, &Povray; jitters the samples a tiny amount to reduce
|
||
|
regular patterns.</para>
|
||
|
|
||
|
<para>The last quality setting is radiosity. Radiosity is an experimental
|
||
|
&Povray; feature that computes inter-diffuse light reflection. Be patient
|
||
|
when rendering a scene with this feature.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="rendermodeoutput.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render modes output tab</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>In the last tab, you can configure whether or not the
|
||
|
alpha channel should be calculated by povray.
|
||
|
A pixel will then be transparent
|
||
|
if the corresponding ray did not hit a single object.</para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="choosing-a-render-mode">
|
||
|
<title>Choosing a render mode</title>
|
||
|
|
||
|
<para>You can select the render mode in the combo box in the rendering toolbar.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="rendermodestoolbar.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render modes toolbar</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="the-render-window">
|
||
|
<title>The Render Window</title>
|
||
|
|
||
|
<para>When you started to render a scene, this window will open:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="renderwindow.png" format="PNG"/></imageobject>
|
||
|
<textobject><phrase>The render window</phrase></textobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>It shows the rendered image, the progress and the current rendering
|
||
|
speed.</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry><term><guibutton>Stop</guibutton></term>
|
||
|
<listitem><para><action>Terminates &Povray;</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Suspend</guibutton></term>
|
||
|
<listitem><para><action>Suspends rendering</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Resume</guibutton></term>
|
||
|
<listitem><para><action>Resumes rendering</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Povray Output...</guibutton></term>
|
||
|
<listitem><para><action>Opens another window that displays the &Povray;
|
||
|
console output</action>. If &Povray; exits abnormally, you can find the reason
|
||
|
in that window.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Save...</guibutton></term>
|
||
|
<listitem><para><action>Lets you save the image when it is rendered.</action></para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry><term><guibutton>Close</guibutton></term>
|
||
|
<listitem><para><action>Closes the render window</action>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="exporting-and-importing-povray">
|
||
|
<title>Exporting and Importing</title>
|
||
|
|
||
|
<sect2 id="exporting-and-importing-a-whole-scene">
|
||
|
<title>Exporting and Importing a Whole Scene</title>
|
||
|
|
||
|
<para>You can export a scene to &Povray; with the
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Export Povray...</guimenuitem></menuchoice>
|
||
|
menu entry.</para>
|
||
|
<para>The file save dialog will allow you to choose a name and
|
||
|
location to save the file.</para>
|
||
|
<note><para>&kpovmodeler; will automatically add the
|
||
|
<literal role="extension">.pov</literal> extension.</para></note>
|
||
|
|
||
|
<para>To import a &Povray; scene select the
|
||
|
<menuchoice><guimenu>File</guimenu><guimenuitem>Import Povray...</guimenuitem></menuchoice>
|
||
|
menu item and choose a file in the file open dialog.</para>
|
||
|
|
||
|
<note><para>Not the full &Povray; syntax is supported by &kpovmodeler; at the moment.
|
||
|
If there are errors or warnings during importing, a dialog will show up that
|
||
|
lists all messages.</para></note>
|
||
|
|
||
|
<tip><para>If you want to import unsupported code to &kpovmodeler;, put
|
||
|
the source between the two special comments <quote>//*PMRawBegin</quote>
|
||
|
and <quote>//*PMRawEnd</quote>.</para></tip>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="exporting-and-importing-single-objects">
|
||
|
<title>Exporting and Importing single Objects</title>
|
||
|
|
||
|
<para>You can drag objects from the object tree to an editor
|
||
|
to export &Povray; code. This will insert the objects code into the current
|
||
|
text file in the editor. To import objects into the scene, simply select
|
||
|
the code in your editor and drag it on to the object tree.</para>
|
||
|
<para>You can use the copy and paste functionality of &kpovmodeler;
|
||
|
and your editor to exchange &Povray; code as well.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="customizing">
|
||
|
<title>Configuring &kpovmodeler;</title>
|
||
|
|
||
|
<sect1 id="configure-povray-tab">
|
||
|
<title>The <guilabel>Povray</guilabel> Tab</title>
|
||
|
|
||
|
<sect2 id="configure-povray-command">
|
||
|
<title><guilabel>Povray Command</guilabel></title>
|
||
|
|
||
|
<para>The povray command is called when &kpovmodeler; renders a scene. Common commands
|
||
|
are <quote>povray</quote> or <quote>x-povray</quote>.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="configure-povray-documentation">
|
||
|
<title><guilabel>Povray User Documentation</guilabel></title>
|
||
|
|
||
|
<para>If you press the <guibutton>Help</guibutton> button in the properties view, &kpovmodeler;
|
||
|
opens the &Povray; user documentation for the displayed object. Set here the path to your documentation
|
||
|
and your documentation version. Supported versions are 3.1g and 3.5.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="configure-povray-library-paths">
|
||
|
<title><guilabel>Library Paths</guilabel></title>
|
||
|
|
||
|
<para>&Povray; searches for external files (height field data as example) in the &Povray; library paths.
|
||
|
If you refer to files not in the scene's folder, you have to add the folder to the list. If a file
|
||
|
exists in multiple library paths, that one in the first path is used.</para>
|
||
|
<para>You can change the order with the <guibutton>Up</guibutton> and
|
||
|
<guibutton>Down</guibutton> buttons.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="configure-graphical-view-tab">
|
||
|
<title>The <guilabel>Graphical view</guilabel> Tab</title>
|
||
|
|
||
|
<sect2 id="configure-colors">
|
||
|
<title><guilabel>Colors</guilabel></title>
|
||
|
|
||
|
<para>The color tab lets you configure the used colors for the graphical views.</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Background:</guilabel></term>
|
||
|
<listitem><para>The background color.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Wire frame:</guilabel></term>
|
||
|
<listitem><para>The colors for wire frames. The second color is used if the object
|
||
|
is selected.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Control points:</guilabel></term>
|
||
|
<listitem><para>The color for control points. The second color is used if the control point
|
||
|
is selected.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Axes:</guilabel></term>
|
||
|
<listitem><para>The colors for the x-, y- and z-axis.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Field of view:</guilabel></term>
|
||
|
<listitem><para>The color for the field of view rectangle in the camera view
|
||
|
and the view type labels.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="configure-grid">
|
||
|
<title>The Grid</title>
|
||
|
|
||
|
<para>This page lets you configure the grid in the wire frame views.</para>
|
||
|
|
||
|
<sect3 id="configure-displayed-grid">
|
||
|
<title><guilabel>Displayed Grid</guilabel></title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Color:</guilabel></term>
|
||
|
<listitem><para>The grid color.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Distance:</guilabel></term>
|
||
|
<listitem><para>The minimal distance of two grid lines.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="configure-control-point-grid">
|
||
|
<title><guilabel>Control Point Grid</guilabel></title>
|
||
|
|
||
|
<para>You can snap control points to the grid with the context menu in
|
||
|
the wireframe views. You can configure the grid for translations, scales and rotations
|
||
|
separately here.</para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="configure-detail-levels">
|
||
|
<title><guilabel>Objects</guilabel></title>
|
||
|
|
||
|
<sect3 id="configure-object-subdivisions">
|
||
|
<title><guilabel>Subdivisions</guilabel></title>
|
||
|
|
||
|
<para>You can configure the detail levels for various objects here.</para>
|
||
|
|
||
|
<para>Higher values lead to a finer wireframe and therefore to a better approximation for
|
||
|
the displayed objects, but slow down rendering. For some objects like the sphere you can
|
||
|
configure the detail level for two directions separately.</para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="configure-object-sizes">
|
||
|
<title><guilabel>Sizes</guilabel></title>
|
||
|
|
||
|
<para>Lets you configure the sizes in which infinite objects are displayed in
|
||
|
the wireframe views.</para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
<sect3 id="configure-camera-views">
|
||
|
<title><guilabel>Camera Views</guilabel></title>
|
||
|
|
||
|
<para>If you check the <guilabel>High detail for enhanced projections</guilabel> check box,
|
||
|
all wire frame lines are subdivided further if the camera uses an enhanced projection. Enhanced
|
||
|
projections are all projections except the perspective and orthographic projections. This feature
|
||
|
greatly improves the approximation of these projections but slows down rendering.</para>
|
||
|
|
||
|
</sect3>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="configure-dialog-view-tab">
|
||
|
<title>The <guilabel>Properties view</guilabel> Tab</title>
|
||
|
|
||
|
<sect2 id="configure-texture-preview">
|
||
|
<title><guilabel>Texture Preview</guilabel></title>
|
||
|
|
||
|
<para>This page lets you configure the texture preview in the properties view.</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Size:</guilabel></term>
|
||
|
<listitem><para>The preview image size.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Gamma:</guilabel></term>
|
||
|
<listitem><para>The gamma correction.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Rendered Objects</guilabel></term>
|
||
|
<listitem><para>Defines the small sample scene. At least one
|
||
|
object has to be selected.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Wall</guilabel></term>
|
||
|
<listitem><para>If the <guilabel>Enable wall</guilabel> check box is checked, a
|
||
|
wall will be rendered behind the objects. The wall is textured with a checker pattern with the
|
||
|
two configurable colors.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Floor</guilabel></term>
|
||
|
<listitem><para>If the <guilabel>Enable floor</guilabel> check box is checked, a
|
||
|
floor will be rendered below the objects. The floor is textured with a checker pattern with the
|
||
|
two configurable colors.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Anti-Aliasing</guilabel></term>
|
||
|
<listitem><para>If the <guilabel>Enable antialiasing</guilabel> check box is checked,
|
||
|
the non-recursive antialiasing method will be used for rendering the scene. You can configure the
|
||
|
depth and threshold values. See <link linkend="render-modes-configuration">render modes section</link>
|
||
|
for a detailed description of the parameters.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="configure-view-layout-tab">
|
||
|
<title>The <guilabel>View Layout</guilabel> Tab</title>
|
||
|
|
||
|
<para>In this page you can fine-tune existing view layouts or manually
|
||
|
create new ones. See section <link linkend="view-layouts">View Layouts</link>
|
||
|
how to create and save view layouts.</para>
|
||
|
|
||
|
<sect2 id="configure-default-layout">
|
||
|
<title>The default View Layout</title>
|
||
|
|
||
|
<para>The combo box <guilabel>Default view layout:</guilabel>
|
||
|
lists all available view layouts. &kpovmodeler; uses the selected
|
||
|
view layout at program start.</para>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="configure-list-of-view-layouts">
|
||
|
<title>List of View Layouts</title>
|
||
|
|
||
|
<para>The list <guilabel>Available View Layouts</guilabel>
|
||
|
shows all available view layouts. You can add a new layout with the
|
||
|
<guibutton>Add</guibutton> button and remove the selected layout
|
||
|
with the <guibutton>Remove</guibutton> button.</para>
|
||
|
<para>The selected view layout is displayed in the box
|
||
|
<guilabel>View Layout</guilabel></para>
|
||
|
</sect2>
|
||
|
|
||
|
<sect2 id="configure-view-layout-details">
|
||
|
<title>View Layout Details</title>
|
||
|
|
||
|
<para>Each view layout is identified by its name. The name has to
|
||
|
be unique and must not be empty.</para>
|
||
|
|
||
|
<para>The list below the name displays all views for the selected
|
||
|
view layout. You can add new views with the
|
||
|
<guibutton>Add</guibutton> button and remove the selected view
|
||
|
with the <guibutton>Remove</guibutton> button.</para>
|
||
|
|
||
|
<para>The attributes of the views are:</para>
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Type:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The view type. See <link linkend="the-interface">The &kpovmodeler; Interface</link>
|
||
|
for a description of each view type.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>3D view type:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The projection for wire frame views. You can choose one of the six
|
||
|
orthographic projections or the camera mode.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Dock position:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The position of the view. <guilabel>New Column</guilabel> will
|
||
|
create a new column to the right side of the previous views,
|
||
|
<guilabel>Below</guilabel> will dock the view below the previous view,
|
||
|
<guilabel>Tabbed</guilabel> will create a tabbed view together with the previous one
|
||
|
and <guilabel>Floating</guilabel> will not dock the view into the main
|
||
|
window but create a separate window.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Column width:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The width of the column in percent of the main view width.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>View height:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The view height in percent of the main view height.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Width:</guilabel> and <guilabel>Height:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The size in pixels for floating views.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guilabel>Position x:</guilabel> and <guilabel>y:</guilabel></term>
|
||
|
<listitem>
|
||
|
<para>The position on the desktop for floating views.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect2>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="basic-tutorial">
|
||
|
<title>Basic Tutorial: Creating your first Scene</title>
|
||
|
|
||
|
<para>OK, that's it. You have just installed &Povray; and &kpovmodeler;,
|
||
|
and now you already want to start without much knowledge of any of the two
|
||
|
softwares. Here we go now: If you follow the steps of this tutorial,
|
||
|
you'll be able to set the ultimate simple scene, very widespread among
|
||
|
the newbies: A sphere over a plane.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="tutorial01-final-render.png" format="PNG"/>
|
||
|
</imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>At any time you can render your scene using one of the following methods:</para>
|
||
|
|
||
|
<para>Using the menu:
|
||
|
<menuchoice><guimenu>Display</guimenu><guimenuitem>Render</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmrender.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon</para>
|
||
|
|
||
|
<para>But you should carefully consider the following warnings before complaining
|
||
|
if all you get is a black screen. If this is the very first time you use a 3D software,
|
||
|
you should be aware of these golden rules:</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem><para>If you set no camera, no rules apply to the render engine which can't
|
||
|
render a proper picture, ending in a black picture.</para></listitem>
|
||
|
<listitem><para>If you set no light system, all your scene is in the dark,
|
||
|
ending in a black picture.</para></listitem>
|
||
|
<listitem><para>The objects for which no material has been set won't show on the
|
||
|
rendered picture, ever.</para></listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-1">
|
||
|
<title>Step 1: Start &kpovmodeler;</title>
|
||
|
|
||
|
<para>If you got everything installed fine, once &kpovmodeler;
|
||
|
is loaded, you discover the following default windows setting:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="defaultviewlayout.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Take a few minutes to explore the menus and icons available.
|
||
|
If you have time, please read the documentation in order to get a
|
||
|
fair idea of what you can expect from this piece of software.</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<listitem>
|
||
|
<para><link linkend="menu-reference">Menubars (1)</link></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para>Toolbars (2)</para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><link linkend="the-object-tree">The object tree (3)</link></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><link linkend="the-properties-view">The object properties
|
||
|
view (4)</link></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para><link linkend="the-wireframe-views">The wireframe and camera views (5)</link></para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>You will have to use each of them intensively from now on, so always keep them
|
||
|
and their use in mind.</para>
|
||
|
|
||
|
<para>&kpovmodeler; starts with a simple scene. In order to follow this tutorial
|
||
|
you first have to remove all objects from the object tree. Select the scene
|
||
|
and choose the <menuchoice><guimenu>Edit</guimenu><guimenuitem>Delete</guimenuitem></menuchoice> menu
|
||
|
entry. You should now have an empty scene.</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-2">
|
||
|
<title>Step 2: Setting the Camera</title>
|
||
|
|
||
|
<para>First of all, we will set a camera. In order to do so, two convenient ways are available:</para>
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guimenuitem>Camera</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmcamera.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon</para>
|
||
|
|
||
|
<para>The wireframe view shows how the camera is set regarding the whole scene we are creating.
|
||
|
In particular, we can now see something in the fourth wire frame view (right, bottom):
|
||
|
This is the view of the scene from the camera point of view.
|
||
|
This is what will be seen when you render the scene.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="tutorial01-camera-graphic.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The object tree now shows a new entry, reading <quote>camera</quote>. If you click on it,
|
||
|
it affects the content of the object properties view, where various parameters
|
||
|
pertaining to the camera can be found.
|
||
|
Referring to the &Povray;'s documentation to learn more about these could be helpful.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject>
|
||
|
<imageobject><imagedata fileref="tutorial01-camera-dialog.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>We will change nothing to the basic settings of the camera,
|
||
|
this will be the scope of later tutorials, but please note that in the graphic view,
|
||
|
the camera has control points that let you control the point to which the camera points.
|
||
|
You just have to left-click on one handle and move it to an appropriate location.</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-3">
|
||
|
<title>Step 3: Setting a Light</title>
|
||
|
|
||
|
<para>The same way we have set a camera, we will now set a light system:</para>
|
||
|
<para>Using the menu:
|
||
|
<menuchoice><guimenu>Insert</guimenu><guimenuitem>Light</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmlight.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon</para>
|
||
|
|
||
|
<para>A new entry features now in the object tree. If you click on the light entry,
|
||
|
you see that the properties view changes in order to show the parameters available
|
||
|
to the lighting system. We will change some parameters in order to set the
|
||
|
light higher above the horizon (<guilabel>y</guilabel>=3), slightly on the right
|
||
|
(<guilabel>x</guilabel>=1) and in the foreground (<guilabel>z</guilabel>=1).
|
||
|
We can also rename the light system (<guilabel>Name</guilabel>=<quote>Main Light</quote>).
|
||
|
Change the values in the object properties view as follows:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-light-dialog.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Once you press the <guilabel>Apply</guilabel> button (or hit Enter),
|
||
|
the wire frame view and the object tree immediately
|
||
|
change in order to comply to these settings, and here is what now should see the camera.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-light-graphic.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-4">
|
||
|
<title>Step 4: Creating the Ground</title>
|
||
|
<para>There are many ways to create a ground for our scene.
|
||
|
One method could have been to insert a box object
|
||
|
(<menuchoice><guimenu>Insert</guimenu><guisubmenu>Finite Solid Primitives</guisubmenu>
|
||
|
<guimenuitem>Box</guimenuitem></menuchoice>)
|
||
|
and resize x to 100, y to 0 and z to 100, for example, but it's a cumbersome way to do this task.</para>
|
||
|
|
||
|
<para>In fact, &kpovmodeler; offers you a convenient feature: You can create
|
||
|
a infinite plane that will feature the ground:</para>
|
||
|
|
||
|
<para>Using the menu:
|
||
|
<menuchoice><guimenu>Insert</guimenu><guisubmenu>Infinite Solid Primitives</guisubmenu>
|
||
|
<guimenuitem>Plane</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject><imageobject><imagedata fileref="cr22-action-pmplane.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon.</para>
|
||
|
|
||
|
<para>Take a good custom: Having the plane selected in the object tree, please change its name
|
||
|
in something that is convenient to you and then press the <guilabel>Apply</guilabel> button (or hit Enter).
|
||
|
The object tree will update the name of the entry.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-plane-dialog.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The wire frame view also shows the plane now, even if it looks finite by now.
|
||
|
But don't worry, it will spread up to the horizon line when you'll render the scene!</para>
|
||
|
|
||
|
<para>If you pay attention to the object tree, you will notice that the ground entry
|
||
|
can be expanded if you click on the <quote>plus</quote> icon standing just before the object.
|
||
|
Once done, you see various settings parented to the object. In this case,
|
||
|
there isn't much yet, apart from the standard options to any newly created object:
|
||
|
Scale, rotate, and translate. Selecting each of these will change the settings
|
||
|
available in the object properties view.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject> <imageobject><imagedata fileref="tutorial01-plane-tree-expanded.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>In this scene, we will arbitrary translate the ground one unit lower than the horizon line,
|
||
|
just for you to tweak some of these parameters. Select translate, and adjust the parameters as follow:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-plane-tree-translate.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Your scene should now look like the following picture.</para>
|
||
|
<screenshot><mediaobject><imageobject><imagedata fileref="tutorial01-plane-graphic.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-5">
|
||
|
<title>Step 5: Setting a Material for the Ground</title>
|
||
|
|
||
|
<para>Please select the ground prior to adding any material properties to it.
|
||
|
Many possibilities await us, but we will stay close to something quite easy for now.</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Textures</guisubmenu>
|
||
|
<guimenuitem>Pigment</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmpigment.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="insertaspopup.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>In both cases, a popup window will prompt you to choose the way the object should be inserted.
|
||
|
Please choose <guilabel>First Child</guilabel>. The pigment now appears in the object tree.
|
||
|
You can change its name
|
||
|
in the properties view (<guilabel>Name</guilabel>=<quote>Ground Pigment</quote>), and click on the
|
||
|
<guibutton>Preview</guibutton> button
|
||
|
in order to see how the pigment looks like for now.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-ground-pigment.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Of course, the preview of the pigment shows nothing but a black matte material,
|
||
|
because we need to refine the pigment settings. Anyway, keep in mind you always
|
||
|
can preview the look and feel of your materials using the <guibutton>Preview</guibutton> button.
|
||
|
We will now define the pigment colors. Again, many possibilities await us,
|
||
|
but we will choose one of the most straightforward for now.</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Textures</guisubmenu>
|
||
|
<guimenuitem>Color List</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmcolorlist.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon</para>
|
||
|
|
||
|
<para>If no color shows on the box and the sphere of the preview,
|
||
|
click on the <guibutton>Apply</guibutton> button before calling for a preview.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-ground-color-list.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The ground material has been successfully set! If you render your picture now, using the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmrender.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> render icon, you should get the following result:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-ground-wrong-colors-render.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Of course, these colors are not the ones you could have expected.
|
||
|
We still have to see how we can customize them. In the case of the color list,
|
||
|
you have to define two new sets of attributes, called <guilabel>Solid Color</guilabel>.
|
||
|
In the Object Tree, make sure the color list entry is selected.
|
||
|
Then go through this two times (you can't do it more, anyway,
|
||
|
as the checkers color list can only afford the use of two solid colors):</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Textures</guisubmenu>
|
||
|
<guimenuitem>Solid Color</guimenuitem></menuchoice></para>
|
||
|
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmsolidcolor.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon.</para>
|
||
|
|
||
|
<para>One after another, in the object tree, select the two solid colors
|
||
|
and change their color attributes in the object properties view:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-ground-solid-color-1.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>...these attributes are for the first solid color (press <guibutton>Apply</guibutton>!),</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-ground-solid-color-2.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>... and these attributes are for the second (press <guibutton>Apply</guibutton> again!).</para>
|
||
|
|
||
|
<para>Of course, a new rendering of our scene will prove that everything has been
|
||
|
taken into account accordingly:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-ground-render.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-6">
|
||
|
<title>Step 6: Creating the Sphere</title>
|
||
|
|
||
|
<para>For this step, we should already be at ease, because we begin to understand
|
||
|
&kpovmodeler;'s general behavior. In the object tree, select the scene entry.
|
||
|
Creating the sphere is as easy as creating the ground:</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Finite Solid Primitives</guisubmenu>
|
||
|
<guimenuitem>Sphere</guimenuitem></menuchoice></para>
|
||
|
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmsphere.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="insertaspopup.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>As before, select <guilabel>First Child</guilabel> when asked for.</para>
|
||
|
|
||
|
<para>The object properties view offers you immediately to change its settings,
|
||
|
which we'll do right now. By setting the <guilabel>Radius</guilabel> value to 1
|
||
|
(don't forget to hit Enter or press <guibutton>Apply</guibutton>),
|
||
|
we make sure that the sphere will be in contact
|
||
|
with the ground. Otherwise, since we moved the ground one unit bottom,
|
||
|
the sphere will look like floating above the ground.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-sphere-dialog.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>Of course, a rendering now will give a strange result: As already seen before,
|
||
|
the sphere appears with a black matte material. We will set a proper material in the following step.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-sphere-render-nocolor.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-step-7">
|
||
|
<title>Step 7: Setting a Material for the Sphere</title>
|
||
|
|
||
|
<para>With the sphere selected, you can now set a material for it. As we already did for the ground,
|
||
|
let's give to the sphere a pigment color:</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Textures</guisubmenu>
|
||
|
<guimenuitem>Pigment</guimenuitem></menuchoice></para>
|
||
|
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject><imageobject><imagedata fileref="cr22-action-pmpigment.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon</para>
|
||
|
|
||
|
<para>Select <guilabel>First Child</guilabel> and rename to <quote>Sphere pigment</quote>, for example.
|
||
|
With the sphere pigment entry selected, insert a solid color and set the parameters as follow:</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Textures</guisubmenu>
|
||
|
<guimenuitem>Solid Color</guimenuitem></menuchoice></para>
|
||
|
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject><imageobject><imagedata fileref="cr22-action-pmsolidcolor.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-sphere-solid-color.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>You already can render the scene and get a first poor result:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-sphere-render-solidcolor.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>But there are more interesting effects to achieve if we take time to set some finish attributes:</para>
|
||
|
|
||
|
<para>Using the menu: <menuchoice><guimenu>Insert</guimenu><guisubmenu>Textures</guisubmenu>
|
||
|
<guimenuitem>Finish</guimenuitem></menuchoice></para>
|
||
|
<para>Using the toolbar: Click on the
|
||
|
<inlinemediaobject>
|
||
|
<imageobject><imagedata fileref="cr22-action-pmfinish.png" format="PNG"/></imageobject>
|
||
|
</inlinemediaobject> icon.</para>
|
||
|
|
||
|
<para>Then change the values according to the following snapshot and press
|
||
|
<guibutton>Apply</guibutton> or hit Enter.</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-sphere-finish-dialog.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
<para>The <guilabel>Specular</guilabel> and <guilabel>Reflection</guilabel>
|
||
|
parameters give particularly good visual effects,
|
||
|
perfect for glass or chrome-like effects, even if <guilabel>Metallic</guilabel>
|
||
|
hasn't been chosen at this step:</para>
|
||
|
|
||
|
<screenshot>
|
||
|
<mediaobject><imageobject><imagedata fileref="tutorial01-sphere-render-finish.png" format="PNG"/></imageobject>
|
||
|
</mediaobject>
|
||
|
</screenshot>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="basic-tutorial-conclusion">
|
||
|
<title>Conclusion</title>
|
||
|
|
||
|
<para>You should now have a fair glimpse of what is possible with kpovmodeler.
|
||
|
Hopefully, you are already skilled enough to do simple but beautiful things.</para>
|
||
|
|
||
|
</sect1>
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="concepts">
|
||
|
<title>Basic Concepts</title>
|
||
|
|
||
|
<sect1 id="what-is-raytracing">
|
||
|
<title>What is Raytracing?</title>
|
||
|
|
||
|
<para>Raytracing is a method of <link
|
||
|
linkend="gloss-rendering">rendering</link>, that is, creating a 2D
|
||
|
image out of a 3D scene or model.</para>
|
||
|
|
||
|
<para>When raytracing a scene, the renderer shoots a hypothetical ray
|
||
|
from the perspective of the viewer (that is, from the camera you are
|
||
|
rendering the scene from) through each pixel in the scene. It
|
||
|
calculates how this ray reflects and refracts from objects, the visual
|
||
|
effects of the light sources in the scene and how atmospheric effects such
|
||
|
as fog affect it. The scene is built up, pixel by pixel.</para>
|
||
|
|
||
|
<para>As you may imagine, without a camera, you cannot see anything -
|
||
|
the camera is your <quote>eye</quote> into the scene. Furthermore,
|
||
|
without any light, you still won't see anything - it would just be
|
||
|
dark. Obviously, any scene intended for raytracing must include
|
||
|
some light, an object of some kind and at least one camera.</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="objects-reference">
|
||
|
<title>Objects Reference</title>
|
||
|
|
||
|
<para>For a complete reference to all objects and attributes
|
||
|
see the &Povray; user documentation.</para>
|
||
|
</chapter>
|
||
|
|
||
|
|
||
|
<chapter id="menu-reference">
|
||
|
<title>Menu Reference</title>
|
||
|
|
||
|
<sect1 id="file-menu">
|
||
|
<title>The <guimenu>File</guimenu> Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>N</keycap></keycombo>
|
||
|
</shortcut>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>New</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Create a new scene.</action></para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Import Povray...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Import a &Povray; scene</action> created outside
|
||
|
&kpovmodeler;.</para>
|
||
|
<para>A normal file dialog will open, allowing you to choose your
|
||
|
file. Povray files usually have the extensions <literal
|
||
|
role="extension">*.pov</literal> or <literal
|
||
|
role="extension">*.inc</literal>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>O</keycap></keycombo>
|
||
|
</shortcut>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Open...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Open a file.</action> The standard file dialog will
|
||
|
allow you to choose a file you have previously created with
|
||
|
&kpovmodeler;</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guisubmenu>Open Recent</guisubmenu>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Open a file from a list of the files you have been
|
||
|
recently working on.</action></para>
|
||
|
<para>Whenever you open or create a new model, it is added to this
|
||
|
submenu, replacing the oldest entry in the list.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>S</keycap></keycombo></shortcut>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Save</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Save the currently active scene.</action></para>
|
||
|
<para>If you have already saved this model, it will be saved with the
|
||
|
same name. If it is a new file, you will be asked to name it and
|
||
|
choose a location to save it.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Save As...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Save the currently active scene with a new
|
||
|
name.</action></para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Export Povray...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Export the scene as a &Povray; file.</action></para>
|
||
|
<para>The file save dialog will allow you to choose a name and
|
||
|
location to save the file.</para>
|
||
|
<note><para>&kpovmodeler; will automatically add the
|
||
|
<literal role="extension">.pov</literal> extension.</para></note>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Revert</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Revert the scene to the state it was in the last time
|
||
|
you saved it.</action> Changes you have made since the last save will
|
||
|
be lost.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>P</keycap></keycombo></shortcut>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Print...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para>Printing is not implemented yet.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>W</keycap></keycombo></shortcut>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Close</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Close the current scene</action> without closing
|
||
|
&kpovmodeler;</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>Q</keycap></keycombo></shortcut>
|
||
|
<guimenu>File</guimenu>
|
||
|
<guimenuitem>Quit</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Quit</action> &kpovmodeler;. If you have any unsaved
|
||
|
changes, you will be given a chance to save them.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="edit-menu">
|
||
|
<title>The <guimenu>Edit</guimenu> Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut>
|
||
|
<keycombo action="simul">&Ctrl;<keycap>Z</keycap></keycombo>
|
||
|
</shortcut>
|
||
|
<guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Undo</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Undo the last action you performed.</action></para>
|
||
|
<para>This menu item is not available unless you have unsaved changes
|
||
|
to the current scene.</para><!-- FIXME: is the number of items in the -->
|
||
|
<!-- undo history configurable? -->
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut><keycombo action="simul">
|
||
|
&Ctrl;&Shift;<keycap>Z</keycap></keycombo></shortcut>
|
||
|
<guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Redo</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Redo the last action you undid.</action> This menu item
|
||
|
is not available unless you have used
|
||
|
<menuchoice><guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Undo</guimenuitem></menuchoice>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut><keycombo action="simul">
|
||
|
&Ctrl;<keycap>X</keycap></keycombo></shortcut>
|
||
|
<guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Cut</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Cut</action> the currently selected object(s) from the scene,
|
||
|
and store them on the clipboard.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut><keycombo action="simul">
|
||
|
&Ctrl;<keycap>C</keycap></keycombo></shortcut>
|
||
|
<guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Copy</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Copy</action> the currently selected object(s), and
|
||
|
store them on the clipboard.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice><shortcut><keycombo action="simul">
|
||
|
&Ctrl;<keycap>V</keycap></keycombo></shortcut>
|
||
|
<guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Paste</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Paste</action> the contents of the clipboard.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Edit</guimenu>
|
||
|
<guimenuitem>Delete</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem>
|
||
|
<para><action>Delete</action> the currently selected object(s) from
|
||
|
the scene.</para>
|
||
|
<!-- FIXME: Shouldn't this be bound to the delete key? -->
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="view-menu">
|
||
|
<title>The <guimenu>View</guimenu> Menu</title>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Object Tree</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new <link linkend="the-object-tree">Object Tree</link>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Properties View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new <link linkend="the-properties-view">Object Properties View</link>.
|
||
|
</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Top View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="orthographic-views">Orthographic Wireframe View</link>
|
||
|
from the top perspective.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Bottom View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="orthographic-views">Orthographic Wireframe View</link>
|
||
|
from the bottom perspective.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Left View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="orthographic-views">Orthographic Wireframe View</link>
|
||
|
from the left perspective.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Right View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="orthographic-views">Orthographic Wireframe View</link>
|
||
|
from the right perspective.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Front View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="orthographic-views">Orthographic Wireframe View</link>
|
||
|
from the front perspective.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Back View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="orthographic-views">Orthographic Wireframe View</link>
|
||
|
from the back perspective.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>New Camera View</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para><action>Create</action> a new
|
||
|
<link linkend="camera-view">Camera View</link>.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>View Layouts</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para>Contains a list of all available view layouts. Switch to the
|
||
|
selected layout.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>Save View Layout...</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para>Save the current view layout. A dialog opens to choose a
|
||
|
name for a new layout or to overwrite an existing one.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>Render Modes...</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para>Open the
|
||
|
<link linkend="render-modes-configuration">render modes configuration</link>
|
||
|
dialog.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>Render</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para>Render the scene.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>Render Window</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para>Show the &Povray; render window.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><guimenu>View</guimenu>
|
||
|
<guimenuitem>Redisplay</guimenuitem>
|
||
|
</term>
|
||
|
<listitem>
|
||
|
<para>Redisplay the wire frame views.</para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="insert-menu">
|
||
|
<title>The <guimenu>Insert</guimenu> Menu</title>
|
||
|
|
||
|
<para>Creation actions for all supported &Povray; objects.</para>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
<sect1 id="settings-menu">
|
||
|
<title>The <guimenu>Settings</guimenu> Menu</title>
|
||
|
<para>This menu provides options for configuring &kpovmodeler;, changing its
|
||
|
appearance, shortcuts and standard behavior.</para>
|
||
|
|
||
|
<variablelist>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu>
|
||
|
<guimenuitem>Show Statusbar</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para><action>Toggles the statusbar on/off.</action></para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu>
|
||
|
<guimenuitem>Show Path</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para><action>Show/hide the path in the caption.</action></para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu>
|
||
|
<guimenuitem>Save settings</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para><action>Saves the current settings.</action></para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu>
|
||
|
<guimenuitem>Configure Key Bindings...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para><action>Opens a dialog for changing the key bindings.</action>
|
||
|
Using this option you can change the standard key shortcut for &kpovmodeler;'s commands
|
||
|
or create new ones.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu>
|
||
|
<guimenuitem>Configure Toolbars...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para><action>Opens a dialog for configuring the toolbar.</action> You
|
||
|
can add and remove toolbuttons for &kpovmodeler;'s commands with this
|
||
|
option.</para></listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
<varlistentry>
|
||
|
<term><menuchoice>
|
||
|
<guimenu>Settings</guimenu>
|
||
|
<guimenuitem>Configure KPovModeler...</guimenuitem>
|
||
|
</menuchoice></term>
|
||
|
<listitem><para><action>Opens a dialog to configure &kpovmodeler;.</action></para>
|
||
|
</listitem>
|
||
|
</varlistentry>
|
||
|
|
||
|
</variablelist>
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
|
||
|
<sect1 id="help-menu">
|
||
|
<title>The <guimenu>Help</guimenu> Menu</title>
|
||
|
|
||
|
&help.menu.documentation;
|
||
|
|
||
|
</sect1>
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<chapter id="credits-and-licenses">
|
||
|
<title>Credits and Licenses</title>
|
||
|
|
||
|
<para>&kpovmodeler; copyright 2001,2002 the &kpovmodeler;
|
||
|
authors.</para>
|
||
|
|
||
|
<itemizedlist>
|
||
|
<title>Authors</title>
|
||
|
<listitem>
|
||
|
<para>Andreas Zehender <email>zehender@kde.org</email></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para>Luis Passos Carvalho
|
||
|
<email>lpassos@mail.telepac.pt</email></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para>Phillippe Van Hecke
|
||
|
<email>lephiloux@tiscalinet.be</email></para>
|
||
|
</listitem>
|
||
|
<listitem>
|
||
|
<para>Leonardo Skorianez <email>skorianez@bol.com.br</email></para>
|
||
|
</listitem>
|
||
|
</itemizedlist>
|
||
|
|
||
|
<para>Documentation copyright 2002 Lauri Watts
|
||
|
<email>lauri@kde.org</email></para>
|
||
|
<para>Documentation copyright 2002 Andreas Zehender
|
||
|
<email>zehender@kde.org</email></para>
|
||
|
<para>Documentation copyright 2002 Olivier Saraja
|
||
|
<email>olivier@linuxgraphic.org</email></para>
|
||
|
|
||
|
<!-- TRANS:CREDIT_FOR_TRANSLATORS -->
|
||
|
|
||
|
&underFDL;
|
||
|
&underGPL;
|
||
|
|
||
|
</chapter>
|
||
|
|
||
|
<glossary id="glossary">
|
||
|
<title>Glossary</title>
|
||
|
|
||
|
<glossentry id="gloss-bump-map">
|
||
|
<glossterm>Bump Map</glossterm>
|
||
|
<glossdef>
|
||
|
<para>A bump map is a way to simulate a rough surface, without having
|
||
|
to model every single <quote>bump</quote> on the surface, and without
|
||
|
changing the underlying geometric shape of the object itself.</para>
|
||
|
<para>It is common to use the same file as both a bump map and a <link
|
||
|
linkend="gloss-texture-map">texture map</link>.</para>
|
||
|
</glossdef>
|
||
|
</glossentry>
|
||
|
|
||
|
<glossentry id="gloss-primitives">
|
||
|
<glossterm>Primitives</glossterm>
|
||
|
<glossdef>
|
||
|
<para>Primitives are the basic geometric shapes that you can use as
|
||
|
<quote>building blocks</quote>. Most complex 3d models are created
|
||
|
from many dozens, or even hundreds, of these primitives, which are
|
||
|
then edited and manipulated to give a more realistic
|
||
|
appearance.</para>
|
||
|
</glossdef>
|
||
|
</glossentry>
|
||
|
|
||
|
<glossentry id="gloss-rendering">
|
||
|
<glossterm>Rendering</glossterm>
|
||
|
<glossdef>
|
||
|
<para>Not yet written</para>
|
||
|
</glossdef>
|
||
|
</glossentry>
|
||
|
|
||
|
<glossentry id="gloss-texture-map">
|
||
|
<glossterm>Texture Map</glossterm>
|
||
|
<glossdef>
|
||
|
<para>A texture map is a way of applying color to the surface of an
|
||
|
object on a pixel by pixel basis, by applying an image file as a color
|
||
|
map.</para>
|
||
|
<para>It is common to use the same image file as a <link
|
||
|
linkend="gloss-bump-map">bump map</link>.</para>
|
||
|
</glossdef>
|
||
|
</glossentry>
|
||
|
|
||
|
|
||
|
|
||
|
</glossary>
|
||
|
|
||
|
&documentation.index;
|
||
|
|
||
|
<appendix id="installation">
|
||
|
<title>Installation</title>
|
||
|
|
||
|
&install.intro.documentation;
|
||
|
&install.compile.documentation;
|
||
|
|
||
|
</appendix>
|
||
|
|
||
|
</book>
|
||
|
|
||
|
<!--
|
||
|
Local Variables:
|
||
|
mode: sgml
|
||
|
sgml-minimize-attributes:nil
|
||
|
sgml-general-insert-case:lower
|
||
|
sgml-indent-step:0
|
||
|
sgml-indent-data:nil
|
||
|
End:
|
||
|
|
||
|
// vim:ts=2:sw=2:tw=78:noet
|
||
|
-->
|