Difference between revisions of "Raytracing Module/de"

From FreeCAD Documentation
Jump to: navigation, search
(Created page with "==Links== * Render project * Raytracing tutorial")
(Updating to match new version of source page)
(11 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The Raytracing module is used to generate photorealistic images of your models by rendering them with an external renderer. The Raytracing workbench works with [[Raytracing Module#Templates|templates]], the same way as the [[Drawing Module|Drawing workbench]], by allowing you to create a Raytracing project in which you add views of your objects. The project can then be exported to a ready-to-render file, or be rendered directly.
+
<languages/>
 +
{{docnav|[[Points Workbench|Points Workbench]]|[[Reverse Engineering Workbench|Reverse Engineering Workbench]]|IconL=PointsWorkbench.svg|IconR=ReverseEngineeringWorkbench.svg}}
  
[[Image:Raytracing_example.jpg|1024px]]
+
[[Image:Workbench_Raytracing.svg|64px]]
 +
 
 +
<div class="mw-translate-fuzzy">
 +
Dieses Modul hat zum Ziel, die Inhalte Ihrer angezeigten Scene an eine externe [http://de.wikipedia.org/wiki/Bildsynthese Render-Software] zu schicken, um so eine Foto-Realistische Darstellung Ihrer Arbeit zu erzeugen. Das Raytracing-modul ist noch in einem frühen Entwicklungsstadium, daher stehen im Moment noch nicht viele Optionen zur Verfügung. Derzeit gibt es nur einen begrenzten Satz an Werkzeugen zum Export Part-Objekte als [http://de.wikipedia.org/wiki/POV-Ray POV-ray] -dateien. Diese Dateien können dann in POV-ray geladen werden und dort gerendert werden.
 +
</div>
  
Currenly, two renderers are supported: [http://en.wikipedia.org/wiki/POV-Ray povray] and [http://en.wikipedia.org/wiki/LuxRender luxrender]. To be able to render directly from FreeCAD, at least one of those renderers must be installed on your system, and its path must be configured in the FreeCAD Raytracing preferences. Without any renderer installed, though, you are still able to export a scene file that can be used in any of those renderers later, or on another machine.
+
The Raytracing Workbench works with [[Raytracing templates|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.
  
The raytracing workbench works with [[Raytracing Module#Templates|templates]], which are complete scene files for the given external renderer, including lights and possibly additional geometry such as ground planes. These scene files contain placeholders, where FreeCAD will insert the position of the camera, and geometry and materials information of each of the objects you insert in the project. That modified scene file is what is then exported to the external renderer.
+
Currently, two renderers are supported: [http://en.wikipedia.org/wiki/POV-Ray povray] and [http://en.wikipedia.org/wiki/LuxRender 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.
  
=== GUI Werkzeuge ===
+
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|Render project]]. For development status of the Render Module look into the [[Raytracing project|Raytracing project]].
  
{{Raytracing Tools/de|Raytracing Werkzeuge}}
+
{{TOCright}}
 +
[[Image:Raytracing_example.jpg|1024px]]
  
 +
<div class="mw-translate-fuzzy">
 
== Typical workflow ==  
 
== Typical workflow ==  
 
# Create or open a FreeCAD project, add some [[Part Module|Part-based]] objects (meshes are currently not supported)  
 
# Create or open a FreeCAD project, add some [[Part Module|Part-based]] objects (meshes are currently not supported)  
Line 16: Line 23:
 
# Select the objects you wish to add to the raytracing project and add them to the project with the "Insert Part" tool  
 
# Select the objects you wish to add to the raytracing project and add them to the project with the "Insert Part" tool  
 
# Export or render directly
 
# Export or render directly
 +
</div>
 +
 +
 +
[[Image:Raytracing_Workbench_workflow.svg|600px]]
 +
 +
 +
{{Caption|Workflow of the Raytracing Workbench; the workbench prepares a project file from a given template, and then calls an external program to produce the actual rendering of the scene. The external renderer can be used independently of FreeCAD.}}
 +
 +
=== GUI Werkzeuge ===
  
 +
===Project tools===
 +
 +
These are the main tools for exporting your 3D work to external renderers.
 +
* [[Image:Raytracing_New.png|32px]] [[Raytracing_New|New PovRay project]]: Insert new PovRay project in the document
 +
* [[Image:Raytracing_Lux.png|32px]] [[Raytracing_Lux|New LuxRender project]]: Insert new LuxRender project in the document
 +
* [[Image:Raytracing_InsertPart.png|32px]] [[Raytracing_InsertPart|Insert part]]: Insert a view of a Part in a raytracing project
 +
* [[Image:Raytracing_ResetCamera.png|32px]] [[Raytracing_ResetCamera|Reset camera]]: Matches the camera position of a raytracing project to the current view
 +
* [[Image:Raytracing_ExportProject.png|32px]] [[Raytracing_ExportProject|Export project]]: Exports a raytracing project to a scene file for rendering in an external renderer
 +
* [[Image:Raytracing_Render.png|32px]] [[Raytracing_Render|Render]]: Renders a raytracing project with an external renderer
 +
 +
===Utilities===
 +
 +
These are helper tools to perform specific tasks manually.
 +
* [[Image:Raytracing_Export.png|32px]] [[Raytracing_Export|Export view to povray]]: Write the active 3D view with camera and all its content to a povray file
 +
* [[Image:Raytracing_Camera.png|32px]] [[Raytracing_Camera|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]] [[Raytracing_Part|Export part to povray]]: Write the selected Part (object) as a povray file
 +
 +
== Preferences ==
 +
 +
* [[Image:Preferences-raytracing.svg|32px]] [[Raytracing_Preferences|Preferences]]: Preferences available in for the Raytracing tools.
 +
 +
== Tutorials ==
 +
* [[Raytracing_tutorial|Basic Raytracing tutorial]]
 +
* [[Tutorial FreeCAD POV ray|Intermediate Raytracing tutorial]]
 +
 +
<div class="mw-translate-fuzzy">
 
=== Exportieren einer Ansicht ===
 
=== Exportieren einer Ansicht ===
  
 
Der einfachste Weg ist, die aktuelle 3D-Ansicht mit allen Inhalten ine eine [http://www.povray.org/ Povray]-datei zu exportieren. Zuerst müssen Sie ihre CAD-Daten laden oder erstellen und deren Position und Orientierung in einer 3D-Ansicht wie gewünscht plazieren.
 
Der einfachste Weg ist, die aktuelle 3D-Ansicht mit allen Inhalten ine eine [http://www.povray.org/ Povray]-datei zu exportieren. Zuerst müssen Sie ihre CAD-Daten laden oder erstellen und deren Position und Orientierung in einer 3D-Ansicht wie gewünscht plazieren.
 
Dann wählen Sie "Ansicht nach PovRay exportieren" aus dem Raytracing Menu.
 
Dann wählen Sie "Ansicht nach PovRay exportieren" aus dem Raytracing Menu.
 +
</div>
  
 
[[Image:FreeCAD_Raytracing.jpg|center]]
 
[[Image:FreeCAD_Raytracing.jpg|center]]
  
You will be asked for a location to save the resulting *.pov file. After that you can open it in [http://www.povray.org/ Povray] and render:
+
Sie werden nach dem Ort gefragt, wo die resultierende *.pov Datei gespeichert werden soll. Diese kann dann anschließend mit [http://www.povray.org/ Povray] geöffnet und auch gerendert werden:
 
 
 
[[Image:Povray.jpg|center]]
 
[[Image:Povray.jpg|center]]
  
As usual in a renderer you can make big and nice pictures:
+
Üblicherweise kann man mit einem Renderer große und schöne Bilder erstellen:
 
+
[[Image:Scharniergreifer_render.jpg|center|800px]]
[[Image:Scharniergreifer_render.jpg|1024px]]
 
  
 
=== Scripting ===
 
=== Scripting ===
Line 36: Line 77:
 
Und so kann man diese Funktionen mittels Python nutzen:
 
Und so kann man diese Funktionen mittels Python nutzen:
  
=== Outputting render files ===
+
See the [[Raytracing API example|Raytracing API example]] for information on writing scenes programmatically.
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:
 
{{Code|code=
 
import Raytracing,RaytracingGui
 
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.pov','w')
 
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/ProjectStd.pov').read())
 
OutFile.write(RaytracingGui.povViewCamera())
 
OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
 
OutFile.close()
 
del OutFile
 
}}
 
And the same for luxrender:
 
{{Code|code=
 
import Raytracing,RaytracingGui
 
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.lxs','w')
 
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/LuxClassic.lxs').read())
 
OutFile.write(RaytracingGui.luxViewCamera())
 
OutFile.write(Raytracing.getPartAsLux('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
 
OutFile.close()
 
del OutFile
 
}}
 
=== 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:
 
{{Code|code=
 
myRaytracingProject = FreeCAD.ActiveDocument.PovProject
 
myCustomRenderObject = FreeCAD.ActiveDocument.addObject("Raytracing::RaySegment","myRenderObject")
 
myRaytracingProject.addObject(myCustomRenderObject)
 
myCustomRenderObject.Result = "// Hello from python!"
 
}}
 
 
=== Links ===
 
=== Links ===
  
Line 83: Line 95:
 
* http://www.kerkythea.net/
 
* http://www.kerkythea.net/
 
* http://www.artofillusion.org/
 
* http://www.artofillusion.org/
 
----
 
Currently there is a new Renderer Workbench 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 here [[Raytracing_project]]
 
 
== Templates ==
 
FreeCAD comes with a couple of default templates for povray and luxrender, but you can easily create your own. All you need to do is to create a scene file for the given renderer, then edit it manually with a text editor to insert special tags that FreeCAD will recognize and where it will insert its contents (camera and objects data)
 
 
=== Povray ===
 
Povray scene files (with extension .pov) can be created manually with a text editor (povray is made primarily to be used as a scripting language), but also with a wide range of 3D applications, such as [http://www.blender.org blender]. On the [http://www.povray.org/ povray website] you can find further information and a list of applications able to produce .pov files.
 
 
When you have a .pov file ready, you need to open it with a text editor, and do two operations:
 
# Strip out the camera information, because FreeCAD will place its own camera data. To do so, locate a text block like this: <tt>camera { ... }</tt>, which describes the camera parameters, and delete it (or put "//" in front of each line to comment them out).
 
# Insert the following line somewhere: <tt>//RaytracingContent</tt>. This is where FreeCAD will insert its contents (camera and objects data). You can, for example, put this line at the very end of the file.
 
 
Note that FreeCAD will also add some declarations, that you can use in your template, after the <tt>//RaytracingContent</tt> tag. These are:
 
* cam_location: the location of the camera
 
* cam_look_at: the location of the target point of the camera
 
* cam_sky: the up vector of the camera.
 
* cam_angle: the angle of the camera
 
 
If you want, for example, to place a lamp above the camera, you can use this:
 
{{Code|code=
 
light_source {
 
cam_location + cam_angle * 100
 
color rgb <10, 10, 10>
 
}
 
}}
 
=== Luxrender ===
 
Luxrender scene files (with extension.lxs) can either be single files, or a master .lxs file that includes world definition (.lxw), material definition (.lxm) and geometry definition (.lxo) files. You can work with both styles, but it is also easy to transform a group of 4 files in a single .lxs file, by copying the contents of each .lxw, .lxm and .lxo file and pasting it at the point where that file is inserted in the master .lxs file.
 
 
Luxrender scene files are hard to produce by hand, but are easy to produce with many 3D applications such as [http://www.blender.org blender]. On the [http://www.luxrender.net luxrender website], you'll find more information and plugins for the main 3D applications out there.
 
 
If you will work with separated .lxw, .lxm and .lxo files, beware that the final .lxs exported by FreeCAD might be at a different location than the template file, and therefore these files might not be found by Luxrender at render time. In this case you should or copy these files to the location of your final file, or edit their paths in the exported .lxs file.
 
 
If you are exporting a scene file from blender, and wish to merge everything into one single file, you will need to perform one step before exporting: By default, the luxrender exporter in blender exports all mesh geometry as separate .ply files, instead of placing the mesh geometry directly inside the .lxo file. To change that behaviour, you need to select each of your meshes in blender, go to the "mesh" tab and set the option "export as" to "luxrender mesh" for each one of them.
 
 
After you have your scene file ready, to turn it into a FreeCAD template, you need to perform the following steps:
 
# Locate the camera position, a single line that begins with <tt>LookAt</tt>, and delete it (or place a "#" at the beginning of the line to comment it out)
 
# At that place, insert the following line: <tt>#RaytracingCamera</tt>
 
# At a desired point, for example just after the end of the materials definition, before the geometry information, or at the very end, just before the final <tt>WorldEnd</tt> line, insert the following line: <tt>#RaytracingContent</tt>. That is where FreeCAD will insert its own objects.
 
 
Note that in luxrender, the objects stored in a scene file can define transformation matrixes, that perform location, rotation or scaling operations. These matrixes can stack and affect everything that come after them, so, by placing your <tt>#RaytracingContent</tt> tag at the end of the file, you might see your FreeCAD objects affected by a transformation matrix placed earlier in the template. To make sure that this doesn't happen, place your <tt>#RaytracingContent</tt> tag before any other geometry object present in the template. FreeCAD itself won't define any of those transformation matrixes.
 
  
 
== Exporting to Kerkythea ==
 
== Exporting to Kerkythea ==
Line 142: Line 110:
 
:Within WIndows 7 64-bit Kerkythea does not seem to be able to save these settings.
 
: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
 
: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
+
* if importing multiple objects in Kerkythea you can use the "File Merge" command in Kerkythea
  
 +
<div class="mw-translate-fuzzy">
 
==Links==
 
==Links==
 
* [[Render_project/de|Render project]]
 
* [[Render_project/de|Render project]]
 
* [[Raytracing_tutorial/de|Raytracing tutorial]]
 
* [[Raytracing_tutorial/de|Raytracing tutorial]]
 +
</div>
  
 +
<div class="mw-translate-fuzzy">
 +
{{docnav/de|[[Drawing Module/de|Drawing-Arbeitsbereich]]|[[Image Module/de|Image-Arbeitsbereich]]}}
 +
{{Raytracing Tools navi/de}}
 +
{{Userdocnavi/de}}
 +
[[Category:Workbenches/de]]
 +
</div>
  
{{docnav/de|[[Drawing Module/de|Der Arbeitsbereich Zeichnung]]|[[Image Module/de|Der Arbeitsbereich Bild]]}}
+
{{Raytracing Tools navi}}
 
+
{{Userdocnavi}}
[[Category:User Documentation/de]]
+
[[Category:Workbenches]]
{{clear}}
 
<languages/>
 

Revision as of 09:23, 3 May 2019

Other languages:
čeština • ‎Deutsch • ‎English • ‎español • ‎français • ‎hrvatski • ‎Bahasa Indonesia • ‎italiano • ‎日本語 • ‎한국어 • ‎polski • ‎português • ‎português do Brasil • ‎română • ‎русский • ‎svenska • ‎Türkçe • ‎українська • ‎中文 • ‎中文(中国大陆)‎ • ‎中文(台灣)‎

Workbench Raytracing.svg

Dieses Modul hat zum Ziel, die Inhalte Ihrer angezeigten Scene an eine externe Render-Software zu schicken, um so eine Foto-Realistische Darstellung Ihrer Arbeit zu erzeugen. Das Raytracing-modul ist noch in einem frühen Entwicklungsstadium, daher stehen im Moment noch nicht viele Optionen zur Verfügung. Derzeit gibt es nur einen begrenzten Satz an Werkzeugen zum Export Part-Objekte als POV-ray -dateien. Diese Dateien können dann in POV-ray geladen werden und dort gerendert werden.

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.

Raytracing example.jpg

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


Raytracing Workbench workflow.svg


Workflow of the Raytracing Workbench; the workbench prepares a project file from a given template, and then calls an external program to produce the actual rendering of the scene. The external renderer can be used independently of FreeCAD.


GUI Werkzeuge

Project tools

These are the main tools for exporting your 3D work to external renderers.

  • Raytracing New.png New PovRay project: Insert new PovRay project in the document
  • Raytracing Lux.png New LuxRender project: Insert new LuxRender project in the document
  • Raytracing InsertPart.png Insert part: Insert a view of a Part in a raytracing project
  • Raytracing ResetCamera.png Reset camera: Matches the camera position of a raytracing project to the current view
  • Raytracing ExportProject.png Export project: Exports a raytracing project to a scene file for rendering in an external renderer
  • Raytracing Render.png Render: Renders a raytracing project with an external renderer

Utilities

These are helper tools to perform specific tasks manually.

Preferences

  • Preferences-raytracing.svg Preferences: Preferences available in for the Raytracing tools.

Tutorials

Exportieren einer Ansicht

Der einfachste Weg ist, die aktuelle 3D-Ansicht mit allen Inhalten ine eine Povray-datei zu exportieren. Zuerst müssen Sie ihre CAD-Daten laden oder erstellen und deren Position und Orientierung in einer 3D-Ansicht wie gewünscht plazieren. Dann wählen Sie "Ansicht nach PovRay exportieren" aus dem Raytracing Menu.

FreeCAD Raytracing.jpg

Sie werden nach dem Ort gefragt, wo die resultierende *.pov Datei gespeichert werden soll. Diese kann dann anschließend mit Povray geöffnet und auch gerendert werden:

Povray.jpg

Üblicherweise kann man mit einem Renderer große und schöne Bilder erstellen:

Scharniergreifer render.jpg

Scripting

Und so kann man diese Funktionen mittels Python nutzen:

See the Raytracing API example for information on writing scenes programmatically.

Links

Über POV-Ray:

Luxrender

Future possible renderers to implement

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