Raytracing Module/it

Il modulo Raytracing ha la funzione di inviare il contenuto della scena presente sul monitor a un motore di rendering esterno, per produrre immagini foto-realistiche 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.



Attualmente sono supportati due renderizzatori: povray e 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.

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.

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.



Nella finestra di dialogo Esporta pagina, selezionare la destinazione per salvare il file *.pov. Successivamente aprire il file in Povray e generare la renderizzazione:



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



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

E la stessa cosa per luxrender:

Creare un oggetto rendering personalizzato
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:

POVRay

 * http://www.spiritone.com/~english/cyclopedia/
 * http://www.povray.org/
 * http://en.wikipedia.org/wiki/POV-Ray

Luxrender

 * http://www.luxrender.net/

Render per future implementazioni

 * http://www.yafaray.org/
 * http://www.mitsuba-renderer.org/
 * http://www.kerkythea.net/
 * http://www.artofillusion.org/

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.

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

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). I modelli personali possono essere posizionati sotto il percorso ~/.FreeCAD/data/Mod/Raytracing/Templates.

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:

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</tt> prima di qualsiasi altro oggetto di geometria presente nel modello. FreeCAD non definisce nessuna di queste matrici di trasformazione.

Esportare in Kerkythea
Sebbene l'esportazione diretta nel formato XML di Kerkythea non sia ancora supportata, è possibile esportare gli oggetti come file Mesh (.obj) e poi importarli in Kerkythea.
 * se si utilizza Kerkythea per Linux, ricordarsi di installare il pacchetto WINE (necessario per far funzionare Kerkythea in Linux)
 * è possibile convertire i modelli in mesh con l'aiuto dell'ambiente Mesh e poi esportare questi mesh, come file .obj
 * 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.)


 * è possibile utilizzare "make compound" e poi "make single copy" oppure è possibile fondere i solidi in un gruppo prima di convertirli in mesh
 * ricordatevi di impostare in Kerkythea un fattore di importazione di 0.001 per obj-modeler, in quanto Kerkythea si aspetta che il file obj sia in m (ma l'unità standard in FreeCAD è il 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


 * se si importano più oggetti in Kerkythea è possibile utilizzare la funzione "File> Unisci" di Kerkythea

Links

 * Progetto Render
 * Tutorial di Raytracing