PDA

Visualizza Versione Completa : [Tutorial] Come realizzare sezioni in fase di resa



Highrender
13-03-09, 12:37
Una delle caratteristiche delle mesh poligonali è quella di rappresentare solo la parte esterna di un oggetto 3D, il suo guscio per così dire, diversamente dagli oggetti solidi che presentano anche un volume interno. Sebbene Lightwave gestisca al suo interno vari tipi di oggetti, di fatto il suo motore di resa converte ognuno di essi in strutture poligonali, non consentendo quindi l'implementazione di geometrie solide.

Questo limite comporta un problema nel caso si voglia tagliare una mesh in fase di resa attraverso il clip-mapping, ovvero il fatto che nell'immagine finale saranno presenti degli spazi vuoti tra i poligoni che racchiudano un volume: nel caso di una parete per esempio, il suo spessore risulterà costituito da uno spazio vuoto.

E ovvio che sezionando un oggetto in fase di modellazione, con l'ausilio per esempio delle operazioni booleane, è possibile eludere questo limite, sebbene sia chiaro quanto questa tecnica comporti grossi limiti essendo poco elastica e macchinosa.

Dovendo realizzare numerose sezioni di un progetto di un grattacielo, nel quale doveva essere presente la parte interna, quella sezionata, disegnata con AutoCad, con le dimensioni, le quote di livello e le varie nomenclature, e la parte esterna in 3D e foto realistica, dovevo trovare un modo di realizzare una maschera che corrispondesse all'intersezione della linea di sezione con l'oggetto tridimensionale, senza tagliarlo fisicamente nel Modeler.
Per dovere di cronaca, il progetto appena approvato dal consiglio comunale del Principato di Monaco, prevede la realizzazione di una torre di 49 piani, alta 170 m, il cui cantiere vedrà la luce a partire della seconda metà di quest'anno, e che comporta un budget di 500 milioni di euro. Il progetto si propone di rilanciare l'economia del principato anch'essa toccata dalla presente crisi economica.

Per fare quanto detto sopra, Il procedimento più semplice per aggirare quest'ostacolo, è quello di inserire nella scena una copia di ogni oggetto da sezionare, le cui superfici presenteranno le normali dei poligoni invertite rispetto agli oggetti sorgenti. A questo punto per conferire alla parte interna dei poligoni una tinta uniforme come se lo spazio tra di essi fosse solido, sarà sufficiente assegnare ad essi un'unica superficie con un coefficiente di luminosità più o meno elevato.

Questo approccio comporta l'inconveniente di appesantire in modo ingente la scena, nella quale saranno presenti un numero di poligoni doppi rispetto al normale, oltre al fatto di dover ricreare ogni volta una copia delle mesh con le superfici modificate, nel caso fossero necessarie rettifiche sui modelli.
Dopo l'introduzione delle superfici nodali nella versione 9 di Lightwave, sono presenti alcuni strumenti che permettono di conferire caratteristiche di superficie diverse ad ogni lato di un poligono.

Innanzi tutto è necessario che nell'editor dei materiali la superficie a cui si fa riferimento presenti l'opzione "doubled sided" attivata, successivamente aprendo l'editor dei nodi sarà sufficiente aggiungere gli strumenti Spot info, e Mixer. Il primo, serve ad estrarre alcune variabili dalla superficie selezionata: in questo caso il lato dei poligoni (Polygon Side). Il secondo, Mixer, si utilizza invece per inserire nel materiale caratteristiche diverse filtrate attraverso le informazioni provenienti dallo "Spot".

In poche parole basterà collegare la variabile Polygon side di Spot info, al canale di input Opacity del Mixer. Aprendo la finestra relativa alle opzioni del Mixer è poi possibile inserire i due valori che verranno attribuiti alle due facce dei poligoni. Infine basterà collegare il canale di output Color del Mixer, al canale, nel nostro caso Luminosity, della superficie.
Nell'esempio che ho allegato, ho inserito un moltiplicatore della luminosità, per permettere di conferire il massimo della saturazione possibile al lato interno dei poligoni, e quindi avere un colore uniforme su ogni tipologia di superficie.

E interessante notare il fatto, che sia possibile per esempio, estrapolare dal render finale il canale luminosità, da utilizzare come maschera in post produzione per assegnare colori o texture diverse alla parte sezionata della mesh.

Per quel che riguarda il clipping dell'oggetto, ho utilizzato tramite la tecnica del clip-mapping un'immagine in bianco e nero, mappata per altro anche su un piano di riferimento che serve a visualizzare nell'interfaccia del Layout, la posizione, la rotazione e le dimensioni della mappatura di clipping.
I parametri di quest'ultima sono imparentati all'oggetto di riferimento, le cui modiche serviranno a definire la posizione, la scala e la rotazione del piano di sezione delle geometrie.

Per utilizzare i parametri della scena allegata con altri progetti, basterà copiare il clip-mapping della sfera dell'esempio sugli oggetti da sezionare, e infine copiare dall'editor dei nodi i tools di modifica del canale Luminosity di una delle due superfici della sfera, su ogni materiale dell'oggetto da tagliare.

Moleskine
13-03-09, 13:21
Capperola, mi sembra geniale come metodo, mi scarico il file e appena ho un attimo lo provo. :mmgh:

Per adesso grazie!!

Moleskine

htsoft
13-03-09, 13:48
Complimenti per la soluzione e complimenti per il lavoro andato in porto!

desegno
13-03-09, 16:06
che roba, spettacolare!!!!
funziona benissimo!!!
grazie per aver condiviso la cosa, e complimenti per il lavorone preso!!!

Highrender
17-03-09, 17:33
Grazie a tutti! :yt:

Fire
17-03-09, 18:47
Grazie anche da parte mia per lo sharing Davide, ...ottima soluzione! :g1:

Spero che con Core in NT prendano esempio da quanto fatto da NL con Maxwell Render con la funzione "Z-clip Planes" che, senza alcuno sforzo, permette all'utente di sezionare virtualmente un'oggetto, definendo parammetricamente solo i piani di "taglio" che intersecheranno la geometria per il rendering, ...una bella comodità in meccanica e in architettura. Tra le altre suppongo non sia una features molto complessa da implementare.

Ancora grazie.
F.

Galvo
17-03-09, 21:30
Letto solo ora, soluzione geniale! :g1:

Highrender
18-03-09, 11:00
Grazie anche da parte mia per lo sharing Davide, ...ottima soluzione! :g1:

Spero che con Core in NT prendano esempio da quanto fatto da NL con Maxwell Render con la funzione "Z-clip Planes" che, senza alcuno sforzo, permette all'utente di sezionare virtualmente un'oggetto, definendo parammetricamente solo i piani di "taglio" che intersecheranno la geometria per il rendering, ...una bella comodità in meccanica e in architettura. Tra le altre suppongo non sia una features molto complessa da implementare.

Ancora grazie.
F.

Sarebbe interessante poter utilizzare un oggeto di "clipping" nel caso si renda necessario una linea di sezione discontinua: una sorta di operazione booleana in fase di resa che tiene conto della direzione delle normali dei poligoni per riempire i volumi vuoti.....

Highrender
20-03-09, 15:15
Ho modificato scena inserendo la possibilità di ottenere una superficie che corrisponde all'area di taglio dell'oggetto. Per ottenere ciò ho fatto quanto segue:

1. Nel pannello Effecs/Processing ho inserito l'Image Filter "Buffer Export" in modo da estrarre un'immagine che rappresenta il canale di luminosità del rendering: nel nostro caso la silhouette della superficie di taglio dell'oggetto.

2. Ho inserito nella scena un altro piano imparentato a quello di riferimento e ad esso perpendicolare, (così facendo ogni modifica operata su quello di riferimento si riflette anche su quest'ultimo) che rappresenta l'area di taglio: nel primo fotogramma della scena è reso invisibile applicando un "envelope" nel canale "Object Dissolve" nella scheda "Render" del pannello "Object Properties".

3. Sempre nella stessa scheda ho applicato un "Clip Map" in modalità "Front Projection" utilizzando l'immagine estratta tramite il "Buffer Export".

L'unico inconveniente di questa tecnica è che è necessario renderizzare la scena due volte: nel primo fotogramma viene estrapolata l'immagine per il clipping della superficie tagliata, nel secondo viene renderizzata la scena completa ivi compreso l'oggetto che rappresenta la superficie di taglio.

Ovviamente nel caso si modifichino scala, inclinazione e posizione dell'oggetto di clipping, oltre a rendersi necessario il ricalcolo anche del primo fotogramma per rigenerare l'immagine per il clip map, sarà indispensabile ricaricarla all'interno della scena per aggiornarla.

P.S. In allegato la scena completa e aggiornata

desegno
20-03-09, 15:39
ehm l'allegato!!!!
uahauahuha

Lab2
02-04-09, 14:59
Soluzione decisamente interessante!
Grazie infinite per la condivisione di saggezza!!!

Mi domandavo se con lo stesso procedimento si fosse in grado di realizzare un taglio (Clip) non lineare. Certo basterebbe, andare a variare l'immagine e crearne una a Doc per le nostre esigenze. Ma per ottenere un metodo più pratico, bisognerebbe continuare ad utilizzare esclusivamente un oggetto di riferimento.
E se si assegnasse la mappa bianca e bera in modalità UV ad un piano suddiviso, in modo da poterlo modificare direttamente dal Layout... La mappa UV, seguirebbe le nostre deformazioni e di conseguenza anche la Clip di taglio varierebbe... Che ve ne pare? Può funzionare???

Lab2
03-04-09, 16:07
Secondo me ho sparato una cavolata... o perlomeno, dopo qualche prova non sono riuscito a mettere in pratica la teoria che citavo.
L'idea era quella di modificare l'immagine usata per la Clip in modo da poter avere una maggiore gestione del taglio. Però se applico l'immagine in maniera UV al piano di taglio e vado di Morphing su quest'ultimo... ho solo l'impressione di modificare l'immagine, ma in realtà il riferimento della Clip non varia assolutamente! Ho cercato nel pannello processing dell Image Editor per vedere se c'era qualche strumento di modifica dell'immagine che potesse aiutarmi... ma nulla.

Vi allego l'immagine sperando che possa darvi ispirazione... ma con probabilità non è una strada corretta!

Wotan3d
03-04-09, 17:46
Questo potrebbe essere una soluzione?

http://www.balo.com/lightwave/animbool.htm

mi sembra di aver capito che servirebbero solo delle booleane animate. Forse ho capito male?

Wotan3d
03-04-09, 18:28
Ho testato quel plug, con una sfera ed un cubo.
con la 9.6 non è compatibile al 100% (i pannelli non sono completamente visibili), ma scrivendo manualmente i path dove salvare gli oggetti funziona.
Viene creata una sequenza di oggetti tagliati che nel layout danno l'animazione della booleana.
Certo, se il palazzo è enorme ti serviranno tera e tera per archiviare tutta la sequenza.... vedi tu.
Altrimenti usa il max che ha le booleane animate.....

AAAAAAAAAAAAAAAAARGH!!!!!!!!! devo andare a farmi esorcizzare solo per aver detto una cosa simile!

DM67
03-04-09, 19:32
Altrimenti usa il max che ha le booleane animate.....

AAAAAAAAAAAAAAAAARGH!!!!!!!!! devo andare a farmi esorcizzare solo per aver detto una cosa simile!

... già, altrimenti ci pensiamo noi :mazzate:

Highrender
03-04-09, 19:36
Secondo me ho sparato una cavolata... o perlomeno, dopo qualche prova non sono riuscito a mettere in pratica la teoria che citavo.
L'idea era quella di modificare l'immagine usata per la Clip in modo da poter avere una maggiore gestione del taglio. Però se applico l'immagine in maniera UV al piano di taglio e vado di Morphing su quest'ultimo... ho solo l'impressione di modificare l'immagine, ma in realtà il riferimento della Clip non varia assolutamente! Ho cercato nel pannello processing dell Image Editor per vedere se c'era qualche strumento di modifica dell'immagine che potesse aiutarmi... ma nulla.

Vi allego l'immagine sperando che possa darvi ispirazione... ma con probabilità non è una strada corretta!

In effetti il piano serve solo come riferimento per visualizzare ed editare la linea di taglio sull'oggetto. Essendo il clipmap per tagliare quest'ultimo imparentato al piano di riferimento si comporterà seguendo scala, posizione e rotazione, ma ovviamente non le deformazioni poiché non è l'immagine ad essere deformata ma il piano stesso.

nirvana
04-04-09, 11:14
Grande Highrender anche se tutto il procedimento non mi e chiarissimo vado subito a provarlo.

Wotan3D bella plug peccato che per progetti cosi grossi si di difficile utilizzzo.


Ciao Angelo.

mikadit
06-04-09, 08:10
Mi sembra che ci si sia dimenticati del DP Kit (http://pagesperso-orange.fr/dpont/plugins/nodes/Additionnal_Nodes_2.html) di Pontonnier, nello specifico del nodo Boolean (http://pagesperso-orange.fr/dpont/plugins/nodes/nodes/Boolean.htm). Ma è pur vero che sono molti e che pochi se li sono scarrellati tutti. Da provare! ;)

Personalemte non l'ho potuto usare per oggetti complessi poiché non riusciva ad agire su tutto, mentre per oggetti semplici funziona benissimo. Resta comunque da testare.
Per gli oggetti complessi ho usato spesso la clipmap che, come questo tutorial dimostra, funziona benissimo. Clipmap editata ad hoc, nei casi di sezioni che dovessero seguire una spezzata, mentre per i semplici piani di taglio preferisco fare tutto in Layout, utilizzando un gradiente per la clip ed un Null come riferimento.
Certo, lavorando un po' con le UV, con dovuti accorgimenti, si potrebbero ottenere anche spezzate 3D.

Ora, mi farebbe piacere approfondire ed espandere questo argomento aperto da Highrender, ma, dato che si tratta di un metodo diverso, preferisco farlo in un'altra discussione:
http://www.lwita.com/vb/showthread.php?t=5874