Raytracing Workbench/fr: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
(Updating to match new version of source page)
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.
L'atelier '''Lancer de rayons (Raytracing)''' a pour but d'envoyer le contenu d'une scène vers un [http://fr.wikipedia.org/wiki/Moteur_de_rendu_3D moteur de rendu] externe, afin de produire des images photoréalistes de votre projet. L'atelier Raytracing module est encore peu développé, et peu d'options sont donc disponibles pour le moment. À l'heure actuelle, seul un ensemble d'outils de base pour l'exportation d'objets pièces en fichiers [http://fr.wikipedia.org/wiki/POV-Ray POV-ray] est implémenté. Ces fichiers peuvent ensuite être chargés dans POV-ray afin de générer des rendus.


[[Image:Raytracing_example.jpg|1024px]]
[[Image:Raytracing_example.jpg|1024px]]


Actuellement, deux moteurs de rendu sont pris en charge: [http://en.wikipedia.org/wiki/POV-Ray povray] et [http://en.wikipedia.org/wiki/LuxRender luxrender]. Pour être en mesure d'utiliser un mode de rendu directement dans FreeCAD, il faut au moins que l'un de ces convertisseurs soit installé sur votre système et son chemin d'accès configuré dans les '''préférences de FreeCAD Raytracing'''. S'il n'y a aucun convertisseur installé sur votre système, vous êtes toujours en mesure d'exporter un fichier de rendu qui peut être utilisé plus tard dans n'importe quel de ces convertisseurs, ou sur une autre machine.
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.


L'atelier raytracing travaille avec le module [[Raytracing Module#Templates|templates]], qui sont des fichiers de scène complète pour le moteur de rendu externe, y compris les rayons et éventuellement les géométries supplémentaires tels que les plans au sol. Ces fichiers de scène contiennent des emplacements réservés, où FreeCAD insérera la position des caméras et d'informations géométriques des matériaux constituant chacun des objets que vous insérez dans le projet. Ce fichier étant mis à jour, la scène est ensuite exportée vers le moteur de rendu externe.
L'atelier raytracing travaille avec le module [[Raytracing Module#Templates|templates]], qui sont des fichiers de scène complète pour le moteur de rendu externe, y compris les rayons et éventuellement les géométries supplémentaires tels que les plans au sol. Ces fichiers de scène contiennent des emplacements réservés, où FreeCAD insérera la position des caméras et d'informations géométriques des matériaux constituant chacun des objets que vous insérez dans le projet. Ce fichier étant mis à jour, la scène est ensuite exportée vers le moteur de rendu externe.
Line 38: Line 38:


Voici comment utiliser ces fonctions depuis l'interface Python :
Voici comment utiliser ces fonctions depuis l'interface Python :
{{Code|code=
<syntaxhighlight>
import Raytracing,RaytracingGui
import Raytracing,RaytracingGui
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.pov','w')
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.pov','w')
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/ProjectStd.pov').read())
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/ProjectStd.pov').read())
OutFile.write(RaytracingGui.povViewCamera())
OutFile.write(RaytracingGui.povViewCamera())
OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
OutFile.write(Raytracing.getPartAsPovray('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
OutFile.close()
OutFile.close()
del OutFile
del OutFile
}}
</syntaxhighlight>
And the same for luxrender:
And the same for luxrender:
{{Code|code=
<syntaxhighlight>
import Raytracing,RaytracingGui
import Raytracing,RaytracingGui
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.lxs','w')
OutFile = open('C:/Documents and Settings/jriegel/Desktop/test.lxs','w')
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/LuxClassic.lxs').read())
OutFile.write(open(App.getResourceDir()+'Mod/Raytracing/Templates/LuxClassic.lxs').read())
OutFile.write(RaytracingGui.luxViewCamera())
OutFile.write(RaytracingGui.luxViewCamera())
OutFile.write(Raytracing.getPartAsLux('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
OutFile.write(Raytracing.getPartAsLux('Box',App.activeDocument().Box.Shape,0.800000,0.800000,0.800000))
OutFile.close()
OutFile.close()
del OutFile
del OutFile
}}
</syntaxhighlight>
=== Creating a custom render object ===
=== 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:
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=
<syntaxhighlight>
myRaytracingProject = FreeCAD.ActiveDocument.PovProject
myRaytracingProject = FreeCAD.ActiveDocument.PovProject
myCustomRenderObject = FreeCAD.ActiveDocument.addObject("Raytracing::RaySegment","myRenderObject")
myCustomRenderObject = FreeCAD.ActiveDocument.addObject("Raytracing::RaySegment","myRenderObject")
myRaytracingProject.addObject(myCustomRenderObject)
myRaytracingProject.addObject(myCustomRenderObject)
myCustomRenderObject.Result = "// Hello from python!"
myCustomRenderObject.Result = "// Hello from python!"
}}
</syntaxhighlight>
=== Liens ===
=== Liens ===


Line 110: Line 110:


Si par exemple vous voulez placer une lampe au-dessus de la caméra, vous pouvez utiliser ceci :
Si par exemple vous voulez placer une lampe au-dessus de la caméra, vous pouvez utiliser ceci :
{{Code|code=
<syntaxhighlight>
light_source {
light_source {
cam_location + cam_angle * 100
cam_location + cam_angle * 100
color rgb <10, 10, 10>
color rgb <10, 10, 10>
}
}
}}
</syntaxhighlight>
=== Luxrender ===
=== Luxrender ===



Revision as of 21:56, 15 January 2015

The Raytracing module is used to generate photorealistic images of your models by rendering them with an external renderer. The Raytracing workbench works with templates, the same way as the 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.

Currenly, two renderers are supported: povray and 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.

L'atelier raytracing travaille avec le module templates, qui sont des fichiers de scène complète pour le moteur de rendu externe, y compris les rayons et éventuellement les géométries supplémentaires tels que les plans au sol. Ces fichiers de scène contiennent des emplacements réservés, où FreeCAD insérera la position des caméras et d'informations géométriques des matériaux constituant chacun des objets que vous insérez dans le projet. Ce fichier étant mis à jour, la scène est ensuite exportée vers le moteur de rendu externe.

Outils

Template:Raytracing Tools/fr

Travail typique

  1. Créez ou ouvrez un projet dans FreeCAD, ajouter quelques objets Part-based (le maillage n'est actuellement pas pris en charge)
  2. Créer un projet de Raytracing (luxrender ou povray)
  3. Sélectionnez les objets que vous souhaitez ajouter au projet raytracing et ajoutez-les au projet avec l'outil "Insert Part"
  4. Export ou de rendre directement

Création manuelle d'un fichier povray

Les outils utilitaires décrits ci-dessus vous permettent d'exporter l'affichage 3D actuel et tout son contenu dans un fichier Povray. Tout d'abord, vous devez charger ou créer vos données CAO et positionner l'orientation de la vue 3D que vous le souhaitez. Puis choisissez "Utilities->Export View..." dans le menu de raytracing.

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

Comme d'habitude dans un rendererer vous pouvez faire de grandes et belles photos :

Script

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.

Voici comment utiliser ces fonctions depuis l'interface Python :

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:

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!"

Liens

POVRay

Luxrender

Autres moteurs de rendu libres (pour implémentation à venir) :

Actuellement, il y a un nouvel atelier de Rendu en développement à l'appui de plusieurs back-ends comme moteur de rendu de Lux Renderer et Yafaray. Des informations pour l'utilisation de la version en développement peuvent être consultées ici Render_project

Regardez ici pour l'état de développement du Module restituer Raytracing_project

Modèles

FreeCAD est livré avec une paire de modèles par défaut pour povray et luxrender, mais vous pouvez facilement créer votre propre modèle. Tout ce que vous devez faire est de créer un fichier de scène pour le moteur de rendu donné, puis avec un éditeur de texte, modifiez le manuellement pour insérer une balise spéciale que FreeCAD reconnaîtra et où il insérera son contenu (données de caméra et objets)

Povray

Les fichiers de scène povray (ont une extension .pov) peuvent être créés manuellement avec un éditeur de texte (povray est fait principalement pour être utilisé comme un langage de script), mais aussi avec un large éventail d'applications 3D, comme blender. Sur le site de povray vous trouverez plus d'informations et une liste des applications capables de produire des fichiers .pov.

Lorsque vous avez un fichier .pov prêt à l'emplois, vous devez l'ouvrir avec un éditeur de texte et faire deux opérations :

  1. Supprimer les informations de la caméra, parce que FreeCAD placera ses propres données de caméra. Pour ce faire, recherchez un bloc de texte comme ceci : camera { ... }, qui décrit les paramètres de la caméra le supprimer (ou mettre "/ /" devant chaque ligne pour commenter les sorties).
  2. Insérer la ligne suivante quelque part : //RaytracingContent. C'est l'endroit où FreeCAD va insérer son contenu (données de caméra et objets). Vous pouvez, par exemple, mettez cette ligne à la fin du fichier.

Notez que FreeCAD ajoutera également certaines déclarations, que vous pourrez utiliser dans votre modèle, après la balise //RaytracingContent.

Ce sont :

  • cam_location: l'emplacement de la caméra
  • cam_look_at : l'emplacement et le point de cible de la caméera
  • cam_sky  : le vecteur supérieur de la caméra.
  • cam_angle  : l'angle de la caméra

Si par exemple vous voulez placer une lampe au-dessus de la caméra, vous pouvez utiliser ceci :

light_source {
 cam_location + cam_angle * 100
 color rgb <10, 10, 10>
}

Luxrender

Les fichiers LuxRender (avec extension .lxs) peuvent être des fichiers uniques, ou un fichier maître .lxs qui comprend la définition de l'ensemble (.lxw), définition de la matière (.lxm) et les fichiers de définition de géométrie (.lxo). Vous pouvez travailler avec les deux styles, mais il est également facile de transformer un groupe de 4 fichiers dans un fichier unique .lxs, en copiant le contenu des fichiers .lxw, .lxm et .lxo fichier et les coller à l'endroit où ces fichiers sont inséré dans le fichier maître .lxs.

Les fichiers LuxRender sont difficiles à produire manuellement, mais sont faciles à construire avec de nombreuses applications 3D tels que blender. Sur le site luxrender website, vous trouverez là plus d'informations et de plugins pour les principales applications 3D.

Si vous voulez travailler avec les fichiers .lxw, .lxm et .lxo séparément, prenez garde que le fichier .lxs final exporté par FreeCAD pourrait être à un autre emplacement que le fichier modèle, et donc ces fichiers pourraient être introuvable par Luxrender au temps de rendu. Dans ce cas vous devriez copier ces fichiers à l'emplacement de votre fichier final ou modifier leurs chemins dans le fichier exporté .lxs.

Si vous exportez un fichier scène de blender et désirez tout fusionner en un seul fichier, vous devez effectuer une étape avant de l'exporter : par défaut, l'exportateur de luxrender dans blender exporte toutes les géométries de maillage en tant que fichiers distincts .ply, au lieu de placer la géométrie de maille directement dans le fichier .lxo. Pour modifier ce comportement, vous devez sélectionner chacune de vos mailles dans blender, allez dans l'onglet "mesh" et définissez l'option "export as "luxrender mesh" pour chacun d'entre eux.

After you have your scene file ready, to turn it into a FreeCAD template, you need to perform the following steps:

  1. Locate the camera position, a single line that begins with LookAt, and delete it (or place a "#" at the beginning of the line to comment it out)
  2. At that place, insert the following line: #RaytracingCamera
  3. 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 WorldEnd line, insert the following line: #RaytracingContent. That is where FreeCAD will insert its own objects.

Notez que les objets luxrender, sont stockés dans un fichier de scène pouvant définir des matrices de transformation, qui affectent l'emplacement, la rotation ou la mise à l'échelle des opérations. Ces matrices peuvent empiler tout ce qui vient après, donc, en plaçant votre balise de #RaytracingContent à la fin du fichier, vous pourriez voir vos objets FreeCAD affectés par une matrice de transformation placée plus haut dans le modèle. Pour vous assurer que cela n'arrive pas, placez votre balise de #RaytracingContent avant tout autre objet géométrique présent dans le modèle. FreeCAD ne définit aucune de ces matrices de transformation.