Raytracing Workbench/it: Difference between revisions

From FreeCAD Documentation
(Updating to match new version of source page)
No edit summary
Line 3: Line 3:
[[Image:Raytracing_example.jpg|1024px]]
[[Image:Raytracing_example.jpg|1024px]]


Attualmente sono supportati due renderizzatori: [http://en.wikipedia.org/wiki/POV-Ray povray] e [http://en.wikipedia.org/wiki/LuxRender luxrender]. Per poter eseguire il rendering direttamente da FreeCAD, sul sistema deve essere installato almeno uno di questi renderer, e deve essere configurato il suo percorso nelle preferenze di FreeCAD per Raytracing. Senza alcun renderer installato, si può comunque esportare un file della scena e utilizzarlo successivamente in uno di questi renderer, o su una macchina diversa.
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.


Il modulo Raytracing lavora con dei [[Raytracing Module/it#Modelli|modelli]], che sono dei file della scena completati per un dato renderer esterno, comprese le luci e eventuali geometrie aggiuntive, come i piani di appoggio. Questi file di scena contengono dei segnaposto, dove FreeCAD inserisce le informazioni per la posizione della fotocamera, la geometria e il materiale di ogni oggetto del progetto. Questo file di scena modificato è il file che viene poi esportato verso il renderer esterno.
Il modulo Raytracing lavora con dei [[Raytracing Module/it#Modelli|modelli]], che sono dei file della scena completati per un dato renderer esterno, comprese le luci e eventuali geometrie aggiuntive, come i piani di appoggio. Questi file di scena contengono dei segnaposto, dove FreeCAD inserisce le informazioni per la posizione della fotocamera, la geometria e il materiale di ogni oggetto del progetto. Questo file di scena modificato è il file che viene poi esportato verso il renderer esterno.
Line 58: Line 58:
del OutFile
del OutFile
</syntaxhighlight>
</syntaxhighlight>
==== Creare un oggetto rendering personalizzato ====
=== 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:

Oltre agli oggetti viste standard di Povray e di luxrender che offrono una visione di un oggetto Part esistente, e che possono essere inseriti rispettivamente in progetti Povray e luxrender, esiste un terzo oggetto, chiamato RaySegment, che può essere inserito sia in progetti Povray che luxrender. Questo oggetto RaySegment non è legato a nessuno degli oggetti di FreeCAD, e può contenere del codice povray o luxrender personalizzato che è possibile inserire in un progetto raytracing. È inoltre possibile utilizzarlo, ad esempio, per produrre il proprio oggetto FreeCAD in un modo particolare, se il modo standard non soddisfa. È possibile crearlo e utilizzarlo dalla console python in questo modo:
<syntaxhighlight>
<syntaxhighlight>
myRaytracingProject = FreeCAD.ActiveDocument.PovProject
myRaytracingProject = FreeCAD.ActiveDocument.PovProject

Revision as of 21:25, 22 September 2014

Il modulo Raytracing ha la funzione di inviare il contenuto della scena presente sul monitor a un motore di rendering esterno, per produrre immagini fotorealistiche del progetto. Il modulo Raytracing lavora con dei modelli, nello stesso modo del modulo Drawing, e consente di creare un progetto di raytracing, in cui inserire una vista degli oggetti. Il progetto può essere esportato in un file ready-to-render, o essere trattato direttamente.

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.

Il modulo Raytracing lavora con dei modelli, che sono dei file della scena completati per un dato renderer esterno, comprese le luci e eventuali geometrie aggiuntive, come i piani di appoggio. Questi file di scena contengono dei segnaposto, dove FreeCAD inserisce le informazioni per la posizione della fotocamera, la geometria e il materiale di ogni oggetto del progetto. Questo file di scena modificato è il file che viene poi esportato verso il renderer esterno.

Strumenti

Template:Raytracing Tools/it

Flusso di lavoro tipico

  1. Creare o aprire un progetto di FreeCAD, aggiungere alcuni oggetti basati sul modulo Part (i mesh non sono ancora supportati)
  2. Creare un progetto Raytracing (luxrender o povray)
  3. Selezionare gli oggetti che si desidera aggiungere al progetto raytracing e aggiungerli con lo strumento "Inserisci Parte"
  4. Esportare o elaborare direttamente

Creare manualmente un file povray

Gli strumenti di utilità descritti prima consentono di esportare la corrente vista 3D e tutto il suo contenuto in un file Povray. In primo luogo, è necessario caricare un documento o crearne uno e poi orientare la vista 3D come si desidera. Dopo, scegliere Esporta la vista ... nel menu di Raytracing.

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

Come è noto, le applicazioni di renderizzazione possono produrre immagini di grandi dimensioni e ottima qualità:

Script

Output dei file di rendering

I moduli Raytracing e RaytracingGui forniscono diversi metodi per scrivere i contenuti della scena come dati povray o luxrender. I più utili sono Raytracing.getPartAsPovray() e Raytracing.getPartAsLux() per il rendering di un oggetto Part di FreeCAD in una definizione povray o luxrender, e RaytracingGui.povViewCamera() e RaytracinGui.luxViewCamera() per ottenere il corrente punto di vista della finestra 3D di FreeCAD in formato luxrender o povray.

Ecco come utilizzare le funzionalità tramite Python, supponendo che il documento contenga un oggetto "Box":

 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

E la stessa cosa per 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!"

Link

POVRay

Luxrender

Render per future implementazioni

Attualmente vi è un nuovo Ambiente Renderer in fase di sviluppo per supportare diversi back-end, come Lux Renderer e YafaRay. Le informazioni per l'utilizzo della versione di sviluppo possono essere visionate nel progetto Render (en).

Per conoscere lo stato di sviluppo del Modulo Render consultare il progetto Raytracing (en)

Modelli

FreeCAD viene fornito con un paio di modelli predefiniti per Povray e LuxRender, ma si può facilmente crearne uno proprio. Basta creare un file di scena per un dato renderer, quindi modificarlo manualmente con un editor di testo per inserire i tag speciali che FreeCAD riconosce e dove inserisce il suo contenuto (i dati della fotocamera e degli oggetti).

Povray

I file di scena Povray (con estensione .pov) possono essere creati manualmente con un editor di testo (povray è fatto principalmente per essere utilizzato come un linguaggio di scripting), ma anche con una vasta gamma di applicazioni 3D, come ad esempio blender. Nel sito web di povray è possibile trovare ulteriori informazioni e un elenco di applicazioni in grado di produrre file .pov.

Quando si dispone di un file .pov pronto, è necessario aprirlo con un editor di testo e eseguire due operazioni:

  1. Eliminare le informazioni della fotocamera, perché FreeCAD collocherà i propri dati della fotocamera. Per fare ciò, individuare un blocco di testo come questo: camera { ... }, che descrive i parametri della camera, e sopprimerlo (o inserire "//" davanti a ogni riga per commentarla).
  2. Inserire da qualche parte la seguente riga: //RaytracingContent. Questo è il posto dove FreeCAD inserisce il suo contenuto (dati della fotocamera e degli oggetti). È possibile, ad esempio, aggiungere questa riga alla fine del file.

Notare che FreeCAD aggiunge, dopo il tag //RaytracingContent, anche alcune dichiarazioni che è possibile utilizzare nel modello. Queste sono:

  • cam_location: la posizione della camera
  • cam_look_at: la posizione del punto della camera target
  • cam_sky: il vettore superiore della camera
  • cam_angle: l'angolo della camera

Ad esempio, per posizionare una lampada sopra la fotocamera, è possibile utilizzare:

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

Luxrender

I file di una scena LuxRender (con estensione .lxs) possono essere dei singoli file o un file master .lxs che include i file per la definizione dell'insieme (.lxw), la definizione del materiale (.lxm) e la definizione della geometria (.lxo). È possibile lavorare con entrambi gli stili, ma è anche facile trasformare un gruppo di 4 file in un singolo file .lxs, copiando il contenuto di ogni file .lxw, .lxm e .lxo e incollandolo nel punto in cui quel file è inserito nel file master .lxs.

I file di scena LuxRender sono difficili da produrre a mano, ma sono facili da produrre con molte applicazioni 3D, come blender. Nel sito LuxRender, troverete maggiori informazioni e i plugin per le principali applicazioni 3D.

Se si lavora con i file .lxw, .lxm e .lxo separati, fare attenzione perchè i file .lxs finali esportati da FreeCAD possono essere in una posizione diversa rispetto al file del modello, e quindi non possono essere trovati da LuxRender in fase di rendering. In questo caso si deve copiare questi file nella posizione del file finale, o modificare i loro percorsi nel file .lxs esportato.

Se si esporta un file di scena da blender, e si vuole unire tutto in un unico file, è necessario eseguire un passaggio prima dell'esportazione: per impostazione predefinita, l'esportatore per LuxRender di blender esporta tutta la geometria delle mesh in file .ply separati, invece di inserire la geometria mesh direttamente all'interno del file .lxo. Per modificare questo comportamento, è necessario selezionare ciascuna delle mesh in blender, passare alla scheda "mesh" e impostare per ognuna l'opzione "Esporta come" "LuxRender mesh".

Quando il file di scena è pronto, per trasformarlo in un modello di FreeCAD, è necessario eseguire le seguenti operazioni:

  1. Individuare la posizione della telecamera, una sola riga che inizia con LookAt, e cancellarla o commentarla con "#" posto all'inizio della riga
  2. Nello stesso posto, inserire la seguente riga: #RaytracingCamera
  3. Nel punto desiderato, ad esempio subito dopo la fine della definizione del materiale, prima delle informazioni sulla geometria, o alla fine, poco prima della riga finale WorldEnd, inserire la seguente riga: #RaytracingContent. Dove FreeCAD inserirà i propri oggetti.

Notare che in LuxRender, gli oggetti memorizzati in un file di scena possono definire matrici di trasformazione, che eseguono operazioni di posizionamento, rotazione o ridimensionamento. Queste matrici possono influenzare tutto quello che viene dopo di loro, quindi, ponendo il tag #RaytracingContent alla fine del file, è possibile vedere gli oggetti di FreeCAD colpiti da una matrice di trasformazione collocata all'interno del modello. Per assicurarsi che questo non accada, inserire il tag #RaytracingContent prima di qualsiasi altro oggetto di geometria presente nel modello. FreeCAD non definisce nessuna di queste matrici di trasformazione.