Strahlverfolgungs API Beispiel

From FreeCAD Documentation
Revision as of 22:35, 14 December 2019 by Maker (talk | contribs) (Created page with "Die nützlichsten Befehle sind {{incode|Raytracing.getPartAsPovray()}} und {{incode|Raytracing.getPartAsLux()}}, um ein FreeCAD Part Objekt in eine Povray oder Luxrender Defin...")

Einleitung

The Raytracing and RaytracingGui modules provide several methods to write scene contents as povray or luxrender data.

Die nützlichsten Befehle sind Raytracing.getPartAsPovray() und Raytracing.getPartAsLux(), um ein FreeCAD Part Objekt in eine Povray oder Luxrender Definition und RaytracingGui zu rendern.povViewCamera() und RaytracinGui.luxViewCamera(), um den aktuellen Blickwinkel des 3D Ansichtsfensters in das Povray- oder Luxrender Format zu bringen.

Ausgabe von Renderdateien

Hier ist, wie man eine povray-Datei aus Python schreibt, vorausgesetzt, das Dokument enthält ein "Box"-Objekt:

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

Und das Gleiche für Luxrender:

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:

myRaytracingProject = FreeCAD.ActiveDocument.PovProject
myCustomRenderObject = FreeCAD.ActiveDocument.addObject("Raytracing::RaySegment","myRenderObject")
myRaytracingProject.addObject(myCustomRenderObject)
myCustomRenderObject.Result = "// Hello from python!"