Raytracing Module

Introduction
The Raytracing Workbench is used to generate photorealistic images of your models by processing them with an external renderer.

The Raytracing Workbench works with templates, which are project files that define a scene for your 3D model. You can place lights and geometry such as ground planes, and it also contains placeholders for the position of the camera, and for the material information of the objects in the scene. The project can then be exported to a ready-to-render file, or be rendered directly within FreeCAD.

Currently, two renderers are supported: povray and luxrender. To be able to render from within FreeCAD, at least one of these programs must be installed and configured in your system. However, if no renderer is installed, you will still be able to export a project file to be rendered at another time.

A new Render Workbench has been in development to support multiple back-ends such as Lux Renderer and Yafaray. Information for using the development version can be viewed at Render project. For development status of the Render Module look into the Raytracing project.



Project tools
These are the main tools for exporting your 3D work to external renderers.
 * [[Image:Raytracing_New.png|32px]] New PovRay project: Insert new PovRay project in the document
 * [[Image:Raytracing_Lux.png|32px]] New LuxRender project: Insert new LuxRender project in the document
 * [[Image:Raytracing_InsertPart.png|32px]] Insert part: Insert a view of a Part in a raytracing project
 * [[Image:Raytracing_ResetCamera.png|32px]] Reset camera: Matches the camera position of a raytracing project to the current view
 * [[Image:Raytracing_ExportProject.png|32px]] Export project: Exports a raytracing project to a scene file for rendering in an external renderer
 * [[Image:Raytracing_Render.png|32px]] Render: Renders a raytracing project with an external renderer

Utilities
These are helper tools to perform specific tasks manually.
 * [[Image:Raytracing_Export.png|32px]] Export view to povray: Write the active 3D view with camera and all its content to a povray file
 * [[Image:Raytracing_Camera.png|32px]] Export camera to povray: Export the camera position of the active 3D view in POV-Ray format to a file
 * [[Image:Raytracing_Part.png|32px]] Export part to povray: Write the selected Part (object) as a povray file

Preferences

 * [[Image:Std_DlgParameter.png|32px]] Preferences: Preferences available in for the Raytracing tools.

Typical workflow

 * 1) Create or open a FreeCAD project, add some Part-based objects (meshes are currently not supported)
 * 2) Create a Raytracing project (luxrender or povray)
 * 3) Select the objects you wish to add to the raytracing project and add them to the project with the "Insert Part" tool
 * 4) Export or render directly

Creating a povray file manually
The utility tools described above allow you to export the current 3D view and all of its content to a Povray file. First, you must load or create your CAD data and position the 3D View orientation as you wish. Then choose "Utilities->Export View..." from the raytracing menu.



You will be asked for a location to save the resulting *.pov file. After that you can open it in Povray and render:

As usual in a renderer you can make big and nice pictures:

Outputting render files
The Raytracing and RaytracingGui modules provide several methods to write scene contents as povray or luxrender data. The most useful are Raytracing.getPartAsPovray and Raytracing.getPartAsLux to render a FreeCAD Part object into a povray or luxrender definition, and RaytracingGui.povViewCamera and RaytracinGui.luxViewCamera to get the current point of view of the FreeCAD 3D window into povray or luxrender format.

Here is how to write a povray file from python, assuming your document contains a "Box" object:

And the same for luxrender:

Creating a custom render object
Apart from standard povray and luxrender view objects that provide a view of an existing Part object, and that can be inserted in povray and luxrender projects respectively, a third object exist, called RaySegment, that can be inserted either in povray or luxrender projects. That RaySegment object is not linked to any of the FreeCAD objects, and can contain custom povray or luxrender code, that you might wish to insert into your raytracing project. You can also use it, for example, to output your FreeCAD objects a certain way, if you are not happy with the standard way. You can create and use it like this from the python console:

POVRay

 * http://www.spiritone.com/~english/cyclopedia/
 * http://www.povray.org/
 * http://en.wikipedia.org/wiki/POV-Ray

Luxrender

 * http://www.luxrender.net/

Future possible renderers to implement

 * http://www.yafaray.org/
 * http://www.mitsuba-renderer.org/
 * http://www.kerkythea.net/
 * http://www.artofillusion.org/

Exporting to Kerkythea
Although direct export to the Kerkythea XML-File-Format is not supported yet, you can export your Objects as Mesh-Files (.obj) and then import them in Kerkythea.
 * if using Kerkythea for Linux, remember to install the WINE-Package (needed by Kerkythea for Linux to run)
 * you can convert your models with the help of the mesh workbench to meshes and then export these meshes as .obj-files
 * If your mesh-export resulted in errors (flip of normals, holes ...) you may try your luck with netfabb studio basic
 * Free for personal use, available for Windows, Linux and Mac OSX.
 * It has standard repair tools which will repair you model in most cases.


 * another good program for mesh analysing/repairing is Meshlab
 * Open Source, available for Windows, Linux and Mac OSX.
 * It has standard repair tools which will repair you model in most cases (fill holes, re-orient normals, etc.)


 * you can use "make compound" and then "make single copy" or you can fuse solids to group them before converting to meshes
 * remember to set in Kerkythea an import-factor of 0.001 for obj-modeler, since Kerkythea expects the obj-file to be in m (but standard units-scheme in FreeCAD is mm)
 * Within WIndows 7 64-bit Kerkythea does not seem to be able to save these settings.
 * So remember to do that each time you start Kerkythea


 * if importing multiple objects in Kerkythea you can use the "File > Merge" command in Kerkythea

Links

 * Render project
 * Raytracing tutorial