Moduły Raytracing
oraz RaytracingGui
zapewniają kilka metod zapisania zawartości sceny jako dane povray lub luxrender.
Najbardziej przydatne polecenia to Raytracing.getPartAsPovray()
oraz Raytracing.getPartAsLux()
do renderowania obiektu Część programu FreeCAD Part do definicji povray lub luxrender oraz RaytracingGui.povViewCamera()
i RaytracinGui.luxViewCamera()
do uzyskania bieżącego punktu widoku okna widoku 3D do formatu povray lub luxrender.
Oto sposób zapisania pliku povray z pythona, zakładając, że dokument zawiera obiekt "Box":
import Raytracing,RaytracingGui
OutFile = open('C:/Users/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
I to samo dla luxrender:
import Raytracing,RaytracingGui
OutFile = open('C:/Users/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
Oprócz standardowych obiektów widoku povray i luxrender, które zapewniają widok istniejącego obiektu typu Part i mogą być wstawiane odpowiednio do projektów povray i luxrender, istnieje trzeci obiekt o nazwie RaySegment, który może być wstawiony zarówno do projektów povray, jak i luxrender. Obiekt RaySegment nie jest powiązany z żadnym obiektem FreeCAD i może zawierać własny kod povray lub luxrender, który chcesz wstawić do swojego projektu raytracingowego. Można go również użyć, na przykład, do wyeksportowania obiektów FreeCAD w określony sposób, jeśli nie odpowiada Ci sposób domyślny. Możesz utworzyć i używać tego obiektu z poziomu konsoli Pythona w następujący sposób:
myRaytracingProject = FreeCAD.ActiveDocument.PovProject
myCustomRenderObject = FreeCAD.ActiveDocument.addObject("Raytracing::RaySegment","myRenderObject")
myRaytracingProject.addObject(myCustomRenderObject)
myCustomRenderObject.Result = "// Hello from python!"