Primo tutorial su RenderMan
Olà!
Questo tutorial cerca di spiegare cosa è Renderman e spiega come è organizzato un file RIB.
In primo luogo definiamo cos’è Renderman: Renderman è un’interfaccia, esattamente come lo è OGL.
Esistono vari motori di rendering “Renderman compliant”, e ne trovate un po’ qui:
http://www.renderman.org/RMR/OtherLinks/ index.html
Aggiungo “Pixie”, un motore sotto licenza GPL.
Prima di tutto, dove viene utilizzato Renderman? Fondamentalmente nelle produzioni cinematografiche. Essendo stato inventato da Pixar, viene utilizzato in tutti i suoi film, ma anche in moltissimi altri. Trovate maggiori info qui:
https://renderman.pixar.com/products/wha tsrenderman/movies.html
Un motore “Renderman compliant” è un motore che supporta tutte le funzionalità spiegate in questo documento:
https://renderman.pixar.com/products/ris pec/rispec_pdf/RISpec3_2.pdf
Che, se vi interesserà la questione, diverrà il documento che maggiormente consulterete mentre lavorate con Renderman.
Per comodità in questa trattazione parlerò sempre di Renderman come se fosse un motore di Rendering, in modo da essere indipendente da quello che sceglierete di usare.
Io uso “Blue Moon Rendering Tool”, che potete trovare qui:
http://klee.usr.dico.unimi.it/~dan/grafi ca/doc/bmrt/bmrt-2.6.zip
Ed è uno dei pochi posti dove ancora lo potete trovare, poichè la ditta che lo faceva ha chiuso.
Renderman riceve in input un file RIB, che altro non è che un file di testo, contenente tutta la descrizione della scena.
In una scena possono esserci, come ci immaginiamo, luci ed oggetti.
Gli oggetti possono essere fatti di vari materiali, che interagiranno in maniera diversa con la luce a seconda di come sono fatti. Questi materiali si chiamano “Shaders”.
Vediamo un esempio semplicissimo di file RIB:
----INIZIO----
Display "simple.tif" "framebuffer" "rgb"
Format 320 240 1
Projection "perspective" "fov" 45
PixelSamples 2 2
WorldBegin
Color [1 0 0]
Translate 0 0 5
Sphere 1 -1 1 360
WorldEnd
----Fine----
Vediamolo meglio:
“Display” specifica in che modo la nostra scena verrà salvata e visualizzata.
“simple.tif” è il file nel quale sarà salvata
“framebuffer” significa che mentre la scena viene creata, verrà mostrata sullo schermo
potrebbe essere “tiff”, e non verrebbe mostrata, ma solo salvata.
“rgb” è il formato dei colori che verranno salvati. Potrebbe essere ad esempio “rgba”
“Format” dice quanto grande deve essere la scena in pixel
“Projection” definisce il tipo di proiezione. In questo caso, e nel 99% dei casi, la proiezione è in prospettiva.
“PixelSamples” è il nostro amato Antialiasing. Oltre 4x4 inizia a diventare decisamente troppo pesante.
Tra “WorldBegin” e “WorldEnd” ci sono tutte le definizioni del mondo.
Nel nostro mondo c’è solo una sfera http://forumtgmonline.futuregamer.it...icon_smile.gif
La sfera si definisce in questo modo:
http://gameprog.it/hosted/dreampainters/sfera.jpg
Renderman è una macchina a stati, quindi se settiamo uno stato, esso è valido fino a che non cambia.
In questo caso ho settato il colore ed una traslazione (abbastanza chiara da sé), e saranno valide anche sugli oggetti successivi.
Sulle traslazione c’è altro da dire, ma ne parleremo dopo.
Se lanciamo il rendering di questa cosa (in blue moon è così “rendrib file.rib”) otterremo questo :
http://gameprog.it/hosted/dreampainters/simpleTGM3.jpg
Non molto, vi pare? Questo perché non ho definito alcuna luce, non ho definito nessuno shader e non ho settato nulla.
Avrete notato la sfera: in genere si usano le primitive (tipo il piano, la sfera, il toroide e così via) solamente per fare i test degli shaders, questo perché, come immaginerete, si modella il tutto con u software qualsiasi e poi si esporta in RIB, dove poi si lavora con gli shaders.
In Renderman la parte fondamentale quindi non è la modellazione, ma la resa visiva dei nostri modelli.
Ed anche perché sarebbe stupido fare i test degli shaders con il modello di Mike Wazowski http://forumtgmonline.futuregamer.it...icon_smile.gif
TRASLAZIONI: PROBLEMA.
Prima parlavo di traslazioni. Bene, le traslazioni sono applicate in una maniera un po’ strana.
Prendiamo un esempio:
WorldBegin
Color [1 0 0]
Translate 0 0 5
Scale 4 4 1
Sphere 1 -1 1 360
WorldEnd
Prima viene cercata la mesh (in questo caso la sfera), poi si cercano tutte le trasfomazioni da applicargli che si trovano sopra. Quindi verrà prima applicata la “Scale” e poi la “Translate”.
Se mettiamo sotto un’altra cosa (esempio):
WorldBegin
Color [1 0 0]
Translate 0 0 5
Scale 4 4 1
Sphere 1 -1 1 360
Translate 1 0 5
Scale 4 6 1
Sphere 1 -1 1 360
WorldEnd
La seconda sfera avrà anche tutte le trasformazioni della precente:
http://gameprog.it/hosted/dreampainters/simpleTGM1.jpg
Questo potremmo non volerlo (o esgierlo, se stiamo facendo animazioni con bones), quindi dovremo isolare il tutto così:
WorldBegin
AttributeBegin
Color [1 0 0]
Translate 0 0 5
Scale 4 4 1
Sphere 1 -1 1 360
AttributeEnd
AttributeBegin
Translate 1 0 5
Scale 4 6 1
Sphere 1 -1 1 360
AttributeEnd
WorldEnd
Così:
http://gameprog.it/hosted/dreampainters/simpleTGM2.jpg
Direi che per questa volta può bastare http://forumtgmonline.futuregamer.it...on_biggrin.gif
Nella prossima vedremo qualche shader, che altro non sono che dei programmi scritti in simil-C.
Re: Primo tutorial su RenderMan
Visto l’enorme interesse suscitato dal mio primo articolo, scriverò un secondo tutorial http://forumtgmonline.futuregamer.it...on_biggrin.gif
In questo tutorial spiegherò cos’è uno shader e quali tipi di shader esistono in Renderman.
Uno shader è un modello matematico che descrive qualche cosa, e questo qualche cosa può essere:
- Una luce
- Una superficie (materiale)
- Uno “spiazzamento” (displacement)
- Un’interazione con un Volume
- Un’immagine (Image)
Noi oggi vedremo il tipo “Luce” (light source shader) e “Materiale” (Surface shader)
Mai come oggi vi consiglio di scaricarvi le specifiche, poichè lì trovate davvero tutto, ed è molto di più di quello che posso mostrarvi in questa sede.
In primo luogo parliamo un po’ di luci: vedremo due tipi di luce preimpostati in tutti i motori di rendering: i tipi “distant” ed i tipi “point”.
I tipi “distant” simulano sorgenti di luce proveniente dall’infinito, descritte da un fascio di rette parallele ad una da noi impostata. Non hanno attenuazione.
I tipi “point” simulano una luce puntiforme, quindi un pallino infinitamente piccolo che irradia luce (immaginate una lampadina vista da mooooolto lontano). Ha attenuazione. Si attenua secondo il quadrato della distanza dalla sorgente.
Ne esistono altri, ma per ora vanno bene questi http://forumtgmonline.futuregamer.it...on_biggrin.gif
http://gameprog.it/hosted/dreampainters/luci.jpg
In questa immagine capite come funzionano.
Ora facciamo un esempio:
-----INIZIO-----
Display "distant.tif" "framebuffer" "rgb"
Format 320 240 1
PixelSamples 2 2
Projection "perspective" "fov" 45
WorldBegin
LightSource "distantlight" 1 "intensity" 0.8 "from" [ 4 4 -4 ] "to" [ 0 0 0 ]
Translate 0 0 5
Color [1 0 0]
Surface "matte"
Sphere 1 -1 1 360
WorldEnd
-----FINE-----
Qui cosa vediamo? Vediamo la definizione di luce “distant”. Il numero dopo la definizio del tipo serve a dare un numero alle luce. Questa è la prima luce, quindi ho messo “1”.
Il “Surface” serve a definire lo shader di superficie (materiale). Ne uso uno preimpostato, il “matte”, un materiale perfettamente diffusivo. Uso lo impostazioni standard, quindi non metto nessun parametro.
http://gameprog.it/hosted/dreampainters/distant.jpg
Questa è una peculiarità di ogni shader: devono avere dei parametri standard, in modo che io non debba definirli tutti, e volendo (come ho fatto) potrei non definirne alcuno.
Vediamo il risultato di questo rendering.
Ancora non vi appaga, vero? Lo immagino http://forumtgmonline.futuregamer.it...on_biggrin.gif
Un materiale puramente diffusivo non è un gran chè.
Ora, però andremo a scrivere il nostro Shader per i materiali diffusivi, e poi gli metteremo un po’ di cosette. Se avete già scritto shaders in HLSL questo sarà una passeggiata.
In primo luogo definiamo le variabili predefinite:
http://gameprog.it/hosted/dreampainters/variabili.jpg
http://gameprog.it/hosted/dreampainters/variabili2.jpg
Queste variabili mi consentono di accedere a tutta una serie di dati assolutamente indispensabili per programmare il mio shader. Per sapere il loro significato è necessario sapere un filo di matematica e geometria, ma penso siano prerequisiti accettabili.
Ora possiamo scrivere il nostro shader:
-------Inizio------
surface simpleDiffuse (float Kd = 1)
{
normal Nf = faceforward (normalize(N),I);
Ci = Cs * Kd * diffuse(Nf);
Oi = Os;
Ci *= Oi;
}
----Fine----
Vedete? Semplicissimo http://forumtgmonline.futuregamer.it...on_biggrin.gif
Notiamo qualche cosa: la sintassi è molto simile al C.
Priama mettiamo il tipo di shader (surface), poi il nome (simpleDiffuse) e poi i parametri (in questo caso è solo un peso).
Notiamo che ho usato delle variabili predefinite ed una funzione “faceforward” che non è molto chiara (mentre normalize si spiega da sola).
N è il vettore normale, mentre I è il vettore Eye-to-point.
“Faceforward” serve nei casi in cui abbiamo un oggetto cavo: se è cavo, vedremo il suo interno, ma la normale punterà verso l’esterno, quindi non lo vedremo. “faceforward” risolve questo problema.
Vediamo un esempietto:
Senza faceforward:
http://gameprog.it/hosted/dreampainters/senza.jpg
Con faceforward:
http://gameprog.it/hosted/dreampainters/conn.jpg
La seconda parte invece è assai semplice: pesa il colore secondo un peso da noi assegnato (di deafult 1, ossai tutto) e la componente diffusiva, che calcolo con la funzione predefinite “diffuse”, che richiede come parametro una normale.
La componente diffusiva è calcolata secondo il modello lambertiano, quindi niente di complesso, ma trovate la sua completa implementazione nelle specifiche di Renderman. Se non vi interessa, va benissimo, tanto a noi la funzione serve per essere utilizzata http://forumtgmonline.futuregamer.it...on_biggrin.gif
Già che sono qui, implementerò un semplice modello di Phong.
Il modello di Phong aggiunge al normale modello diffusivo una componente speculare, per simulare oggetti metallici o plastici.
Anche qui useremo una funzione predefinita, ma per completezza, vi spiego come funziona:
http://gameprog.it/hosted/dreampainters/phong.jpg
Ok?
Ottimo, spieghiamo tutta questa roba:
Ia è la componente ambientale
Id la componente diffusiva (come capite dalla formula)
Is la componente speculare. Se diminuiamo il numero “n” la campana del coseno si chiude molto, rendendo la riflessione sempre più piccola.
L= vettore luce
N= normale
R= raggio riflesso
V= vettore eye
Vediamo come lo implementiamo in Rendeman:
----Inizio----
surface simplePhong (float Ka = 1, Kd = 1, Ks = 1,
roughness = 0.1; color specColor = 1;)
{
normal Nf = faceforward (normalize(N),I);
vector In = -normalize(I);
Ci = Cs * ( Ka * ambient() +
Kd * diffuse(Nf)) +
Ks * specColor * specular(Nf, In, roughness);
Oi = Os;
Ci *= Oi;
}
----Fine----
Qui abbiamo un sacco di parametri:
Ka= peso luce ambientale
Kd= peso componente diffusiva
Ks=peso componente speculare
Roughness= esponente di cos^n
SpecColor= colore della riflessione. Di solito è bianco.
Ultra-semplice: semplicemente va a implementare la formula di sopra, usando anche delle belle funzione predefinite, tra cui ambient (che userebbe luce ambientale, se vi fossero), e specular, che calcola la componente diffusiva come abbiamo visto (un po’ più complessa in realtà, ma alla base ha quello).
Cambiamo il nostro file RIB così:
----Inizio----
Display "phong.tif" "framebuffer" "rgb"
Format 320 240 1
PixelSamples 2 2
Projection "perspective" "fov" 45
WorldBegin
LightSource "distantlight" 1 "intensity" 0.8 "from" [ 4 4 -4 ] "to" [ 0 0 0 ]
Translate 0 0 5
Color [1 0 0]
Surface "simplePhong" "roughness" 0.1
Sphere 1 -1 1 360
WorldEnd
----Fine----
http://gameprog.it/hosted/dreampainters/phong1.jpg
Ok, per questa volta direi basta http://forumtgmonline.futuregamer.it...on_biggrin.gif La prossima volta vediamo i displacement ed altri tipi di luce.
Re: Primo tutorial su RenderMan
ma sto rendercose...si può usare anche per fare i videogame..magari integrandolo con qualche linguaggio di programmazione?Oppure si possono fare solo animazioni preimpostate?
Ed i tempi di rendering come sono?
Su su..dimmi!
Re: Primo tutorial su RenderMan
Solo animazioni e rendering http://forumtgmonline.futuregamer.it...on_biggrin.gif Non è un sistema per le cose in tempo reale.
I tempi di rendering dipendono dal motore che scegli di utilizzare e dalla macchina, ma considera che tutto ciò che è Renderman è fatto per la qualità.
Una scena con caustiche fatte con Photon mapping (di cui parlerò) deve prima sparare i fotoni e poi fare il rendering.
Questo può prendere parecchio, anche per un solo fotogramma 320x240.
Se poi scegliamo un algoritmo di radiosity (tipo Monte Carlo o un radiosity vero), i tempi aumentano moltissimo, ma la qualità aumenta in maniera spaventosa. Ad esempio, con radiosity se due superfici sono vicine, in prossimità del loro contatto i colori di una andranno sull'altra, come nella realtà.
Tutti questi conti richiedono tempo http://forumtgmonline.futuregamer.it...icon_smile.gif Se vai sul sito Pixar però ti fai un'idea del tipo di macchine che usano per fare i rendering http://forumtgmonline.futuregamer.it...on_biggrin.gif Sono cose pazzesche, intere stanze piene di computer http://forumtgmonline.futuregamer.it...on_biggrin.gif
Certo, rendeman non è una cosa da grafici, ma da programmatori: il grafico si occupa della modellazione, mentre il programmatore si occupa del rendering.
Re: Primo tutorial su RenderMan
Re: Primo tutorial su RenderMan
Ho, finalmente si comincia ad entrare nell'interessante. Continua così. Aspetto aggiornamenti
Re: Primo tutorial su RenderMan
Olà!
Oggi vedremo il displacement e come utilizzarlo per perturbare una superficie.
Poi cercheremo di applicare quello che abbiamo imparato per scrivere uno shader per un materiale che ricordi alla lontano quello dei globuli rossi.
Ho detto “Alla lontana” http://forumtgmonline.futuregamer.it...on_biggrin.gif questo perché lo faremo ancora su una sfera. Se qualcuno di voi ha un globulo rosso modellato in qualunque formato, allora basterà mettere il modello 3D e avremo un bel globulo rosso vero http://forumtgmonline.futuregamer.it...on_biggrin.gif
Allora: cos’è il displacement? Semplicemente significa prendere i punti che compongono la nostra mesh e spostarli da qualche parte.
Dove andranno a finire lo decideremo noi, secondo formule matematiche o secondo una texture che descriva come devono essere spostati i punti, come per le bump map.
Ad esempio, questa può essere una displacement map
http://gameprog.it/hosted/dreampainters/bump.jpg
Il nostro scopo è trattare i colori come dei valori numerici, e spostare il punto lungo la sua normale di quanto dice il colore della texture.
In più aggiungeremo il “Termine di Fresnel” che altro non è che questa formula:
(1-N°E)^n
dove E è il vettore di vista girato (in modo che sia applicato sulla superficie e non sull’occhio) e “°” è il prodotto scalare.
Vediamo come fare il displacement.
Per farlo scriveremo un nostro shader di displacement:
----Inizio----
displacement bumpyDisp( float Km = 1; string texturename = "";)
{
float amp = Km * float texture(texturename, 2*s, 2*t);
P += amp * normalize(N);
N = calculatenormal(P);
}
----Fine----
Ok. Vediamo come funziona.
Prima di tutto definisco il tipo (displacement) proprio come i “surface” e come loro, definisco dei parametri.
“Km” è un peso e definisce quanto deve essere importante il valore preso dalla texture.
In genere tutti i “Kqualcosa” sono pesi, e variano da 0 ad 1, ma potete anche usare valori esterni, però attenti, perché potreste avere dei picchi esagerati o delle voragini http://forumtgmonline.futuregamer.it...on_biggrin.gif
La funzione “texture” è presente in due versioni: quella che restituisce un float e quella che restituisce un colore. Userei quella del colore se volessi mettere la texture sulla superficie, ma non è così (e di certo non lo farei in un displacement shader, ma in un surface), perché mi serve il valore.
Questo valore lo moltiplico per la normale nel punto, ottenendo un punto che sta sulla normale, ma un po’ più in su (o in giù) e poi lo sommo al punto (P).
In questo modo ho spostato il punto della superficie.
Poi ricalcolo la normale (che sarà di certo cambiata).
Prendiamo la scena della volta scorsa e applichiamoci questo shader:
----Inizio----
Display "phong.tif" "framebuffer" "rgb"
Format 320 240 1
PixelSamples 2 2
Projection "perspective" "fov" 45
Attribute "render" "truedisplacement" [1]
WorldBegin
LightSource "distantlight" 1 "intensity" 0.8 "from" [ 4 4 -4 ] "to" [ 0 0 0 ]
Translate 0 0 5
Color [1 0 0]
Displacement "bumpyDisp" "texturename" "bump.tif" "float Km" 0.5
Surface "simplePhong" "roughness" 0.1
Sphere 1 -1 1 360
WorldEnd
----Fine----
Notiamo l’aggiunta del displacement. Il file di texture deve essere per forza tiff.
Ho aggiunto anche questa linea:
Attribute "render" "truedisplacement" [1]
Così Blue Moon sa che deve fare il vero displacement e non del semplice bump mapping.
Ho ottenuto questa immagine
http://gameprog.it/hosted/dreampainters/phongsimple.jpg
Ok.
Ora è il momento di togliere quel brutto fondo nero.
Tra gli shader predefiniti, ce n’è chiamato “fakesky” che mette su una superficie una distribuzione di colore che la faccia sembrare un cielo.
Noi useremo questo shader su una sfera che avvolga tutta la scena.
In più, metterò una luce puntiforme, perché altrimenti, accendendo più tardi le ombre, la luce all’infinito renderebbe tutta la mia scena buia, poichè inserita in una sfera:
----Inizio----
Display "phongbianco.tif" "framebuffer" "rgb"
Format 320 240 1
PixelSamples 2 2
Projection "perspective" "fov" 45
Attribute "render" "truedisplacement" [1]
WorldBegin
LightSource "pointlight" 2 "intensity" 1400 "from" [ 30 28 -14 ]
AttributeBegin
Surface "fakesky"
Sphere 2000 -2000 2000 360
AttributeEnd
AttributeBegin
Translate 0 0 5
Color [1 0 0]
Displacement "bumpyDisp" "texturename" "bump.tif" "float Km" 0.5
Surface "simplePhong" "roughness" 0.1
Rotate 90 1 0 0
Sphere 1 -1 1 360
AttributeEnd
WorldEnd
----Fine----
Cosa ho cambiato? Ho solamente avvolto tra “AttributeBegin” e “AttributeEnd” la mia sfera, così è ben isolata.
La LightSource “pointlight” ha solo il “from” da settare. Io l’ho messa un po’ distante.
Noterete che l’intesità è decisamente maggiore. Questo perché la luce distant non diminuisce mai di potenza, mentre la point sì, quindi se la metto così lontano, dovrò potenziare moltissimo la sua emissione per illuminare la scena.
Di solito gli esportatori di scene non lo fanno (la mettono a 1) quindi state attenti.
Ottengo questo:
http://gameprog.it/hosted/dreampainters/phongbianco.jpg
Ora ho uno sfondo biancastro. A me piace di più, così vedo bene i contorni http://forumtgmonline.futuregamer.it...on_biggrin.gif
Avrei potuto usare uno shader di Imager chiamato “background” che mette lo sfondo ad un colore fisso, ma poi quando faremo un materiale trasparente, avrebbe avuto la trasparenza nera (perché in realtà sullo sfondo c’è il nero), quindi meglio così.
Ora aggiungiamo il Fresnel Term al nostro vecchio shader Phong:
----INIZIO----
surface simplePhong (float Ka = 1, Kd = 1, Ks = 1,
roughness = 0.1; color specColor = 1;float exp=2)
{
normal Nf = faceforward (normalize(N),I);
vector In = -normalize(I);
Ci = Cs * ( Ka * ambient() +
Kd * diffuse(Nf)) +
Ks * specColor * specular(Nf, In, roughness);
color fres=pow(1-Nf.In,exp);
Ci+=fres;
Oi = Os;
Ci *= Oi;
}
----FINE----
Ho aggiunto solamente queste due linee:
color fres=pow(1-Nf.In,exp);
Ci+=fres;
Che altro non fanno che calcolare il termine di Fresnel proprio come volevo sopra.
In realtà questo non sarebbe necessario, ma se avete presente come sono i globuli rossi, notate che anche dove sono neri, hanno delle riflessioni sugli spigoli. Il Termine di Fresnel fa esattamente quello.
Se ricompiliamo e renderizziamo otteniamo questo:
http://gameprog.it/hosted/dreampainters/fresnel.jpg
Vedendo questa immagine credo capirete subito cosa intendo.
Ok, anche per oggi direi basta http://forumtgmonline.futuregamer.it...on_biggrin.gif
La prossima volta vediamo: importazione di un modello da Maya e rendering con texture perturbate e rendering con il sistema di Global Illumination (è una figata http://forumtgmonline.futuregamer.it...on_biggrin.gif)
Re: Primo tutorial su RenderMan
veramente interessante! peccato non ci capisca nulla... prima che mi legga tutto questo tutorial perdendomi tra calcoli e roba varia, posso leggerli e capirc qualcosa sapendo che la mia conoscenza grafica rasenta il ridicolo?
Re: Primo tutorial su RenderMan
Oddio, sarebbe meglio conoscere un pochino di matematica inerente la grafica, ma siccome ho messo molte immagini dovresti riuscire a capire cosa intendo guardando quelle.
Se ti interessa l'argomento, ti consiglio di cercare su google (non ho link già pronti, mi spiace http://forumtgmonline.futuregamer.it...s/icon_sad.gif ) su questi argomenti:
"light models" o "modelli di illuminazione"
"Lambert" che è il modello diffusivo. E' facilissimo, c'è solo un coseno.
"Phong" cerca il modello, perchè di phong c'è anche lo shading.
Questo è quello che le riflessioni speculari.
"Cook" & "Torrace" o "Torrance" non ricordo mai http://forumtgmonline.futuregamer.it...on_biggrin.gif Questi signori hanno fatto un modello un po' più complesso, ma sempre locale, come gli altri.
Poi abbiamo "radiosity" che è un modo di fare rendering di cui parlerò,
"Photon mapping" che è un altro modo di fare rendering,
"Ray tracing" che è un altro ancora, ma più vecchio
"Global Illumination" che è quello che fanno le cose di cui sopra http://forumtgmonline.futuregamer.it...on_biggrin.gif
Nella grafica c'è davvero tanta matematica, spesso non troppo semplice per chi decide di entrarci, ma è il solo modo per capire cosa fanno i grandi software come 3DStudioMax o Maya a lavorare, ed è anche un modo per capire perchè nei grossi studi si usano per fare la modellazione, ma per i rendering si usa sempre Rendeman http://forumtgmonline.futuregamer.it...on_biggrin.gif
Re: Primo tutorial su RenderMan
Non va più avanti il corso? http://forumtgmonline.futuregamer.it.../icon_wink.gif
Utilissimo il link per BlueMoon. Mi sono dannato l'anno scorso a cercarlo sulla rete. Per chi avesse dubbi sulla sua bontà, si guardi "A Bug's Life" che è stato renderizzato con quello http://forumtgmonline.futuregamer.it...on_biggrin.gif
Renderman è stato pensato per il cinema, ma le schede programmabili attuali permettono molte cose descritte dalle specifiche Renderman. Ati ha reso disponibile un tool per convertire gli shader da Renderman a shader DirectX o OpenGL compatibili ( http://www.ati.com/developer/ashli.html ).
Inoltre la prossima generazione di schede (corrispondente a DirectX Next) prevede l'Unified Shader Model, in pratica non si distingue più fra pixel e vertex shader, proprio come in Renderman.
Imparare nei dettagli Renderman forse è superfluo, ma secondo me è importante sapere almeno i concetti e le idee principali perchè sono alla base della grafica (realtime e non) attuale.
Il photon mapping è secondo me la tecnica di rendering che garatisce la migliore resa visiva. Ovviamente al prezzo di una quantità di calcoli mostruosi. E' una variante del classico raytracing, in parole mooolto semplici invece di usare raggi con un preciso percorso si usano fotoni che possono rimbalzare casualmente nella scena.
Per maggiori dettagli:
http://www.ypoart.com/tutorials/Photon-M apping.htm
Per chi volesse farsi un'idea delle possibilità del photon mapping consiglio di vedere http://www.3dluvr.com/marcosss/
Da notare come nonostante la maggior parte dei modelli sia semplice e su sfondo neutro, le immagini sembrano fotografiche.
Il renderizzatore usato per generare quelle immagini è integrato in Project:Messiah ( http://www.projectmessiah.com/ )
E' da vedere sicuramente http://www.3dluvr.com/marcosss/morearni/ arnold03sorenson.zip
Per chi vuole giocare con un renderizzatore photon mapping compatibile Renderman può vedere Pixie ( http://www.cs.berkeley.edu/~okan/Pixie/p ixie.htm)
Re: Primo tutorial su RenderMan
Ho le lacrime agli occhi: pensavo che non interessasse a nessuno http://forumtgmonline.futuregamer.it...on_biggrin.gif
Ora mi rimbocco le maniche e finisco la lezione che stavo facendo http://forumtgmonline.futuregamer.it...on_biggrin.gif
Re: Primo tutorial su RenderMan
Mi dispiace vedere interrotte delle iniziative che si distinguono dal solito commento o opinione, e che richiedono un po' di sbattimento...
Proprio un anno fa mi è capitato di scrivere un exporter per Renderman sapendo poco o nulla del linguaggio. Dopotutto è molto facile da imparare. Ed è usato tantissimo per gli effetti speciali dei film. Final Fantasy e tutti i film della Pixar, viene usato dalla Industrial Light & MAgic di Lucas... http://forumtgmonline.futuregamer.it...on_biggrin.gif http://forumtgmonline.futuregamer.it...on_biggrin.gif
Re: Primo tutorial su RenderMan
Re: Primo tutorial su RenderMan
Scusa, ma non credo che quelli della Pixar, gli ideatori dello standard RenderMan, si siano messi ad usare BlueMoon.
Loro utilizzano PhotoRealistic RenderMan.
BlueMoon fu utilizzato da altre compagnie in quanto PRMan non si basava sul raytracing ma su un algoritmo chiamato REYES (ma ora se non erro supporta anche il raytracing), al contrario di BlueMoon.
Re: Primo tutorial su RenderMan
Citazione:
Edward Gein ha scritto dom, 28 novembre 2004 alle 15:47
Scusa, ma non credo che quelli della Pixar, gli ideatori dello standard RenderMan, si siano messi ad usare BlueMoon.
Loro utilizzano PhotoRealistic RenderMan.
L'hanno usato per il renderind del vetro, che richiedeva raytracing.
http://www.faqs.org/faqs/graphics/render man-faq/
Il fondatore di Exluna, la compagnia che ha creato Renderman, aveva lavorato per un po' alla Pixar. Exluna era stata denunciata poi dalla Pixar con l'accusa di usare tecnologie proprietarie della Pixar. Mi pare che l'algoritmo REYES sia ancora di proprietà della Pixar.
Re: Primo tutorial su RenderMan
Citazione:
Banus80 ha scritto dom, 28 novembre 2004 alle 16:10
Citazione:
Edward Gein ha scritto dom, 28 novembre 2004 alle 15:47
Scusa, ma non credo che quelli della Pixar, gli ideatori dello standard RenderMan, si siano messi ad usare BlueMoon.
Loro utilizzano PhotoRealistic RenderMan.
L'hanno usato per il renderind del vetro, che richiedeva raytracing.
http://www.faqs.org/faqs/graphics/render man-faq/
Il fondatore di Exluna, la compagnia che ha creato Renderman, aveva lavorato per un po' alla Pixar. Exluna era stata denunciata poi dalla Pixar con l'accusa di usare tecnologie proprietarie della Pixar. Mi pare che l'algoritmo REYES sia ancora di proprietà della Pixar.
Ma da qui a dire che A Bug's Life sia stato renderizzato tutto con BMRT ce ne vuole http://forumtgmonline.futuregamer.it.../icon_wink.gif.
Re: Primo tutorial su RenderMan
Al tempo avevo letto che era stato usato BMRT come renderizzatore di Bug's Life. Non era specificato dove http://forumtgmonline.futuregamer.it.../icon_razz.gif
Ho ritenuto che fosse stato usato per tutto http://forumtgmonline.futuregamer.it...on_biggrin.gif
Re: Primo tutorial su RenderMan
.....ma per usar renderman devo inserire le rifhe di comando? non ha valori da inserire in determinate aree o via dicendo?...
ps poi il displace map credo sia supportato dal 90 % dei programmi....
cmq bella lezione ...provvederò a procurarmi renderman ....magari i miei render saranno più carini...
ps uso 3ds max 7.0
Re: Primo tutorial su RenderMan
Renderman, nella sua forma base, è a riga di comando.
Chiaramente ci sono molti frontend. Se vai sul sito Pixar troverai un frontend per Maya, ad esempio, ed un programma per scriversi gli shaders in maniera più visuale.
In realtà questa seconda opzione viene utilizzata per le cose più semplici, non certo per gli shaders complessi.
Mi scuso per aver interrotto le lezioni, ma diamine, non ho più un secondo libero. Magari durante l'estate ne scrivo una sfilza e le posto in blocco.
Attento perchè Renderman è potentissimo, ma se vuoi ottenere dei rendering migliori di quelli che ottieni con un motore fortemente integrato in 3dstudio, devi conoscere la matematica degli effetti che vuoi applicargli molto, molto bene, altrimenti ti conviene rimanere al renderer di 3dstudio max (se non sbaglio mental ray è assolutamente ottimo, anche se Renderman rimane in Re delle produzioni cinematografiche).
Re: Primo tutorial su RenderMan
ultimament mi sto dedicando al low poly quindi credo che il motore d 3ds mi basterà e avanzerà http://forumtgmonline.futuregamer.it...icon_smile.gif
questo non vuol dire che non aspetti ugualmente update al tutorial
Re: Primo tutorial su RenderMan
CIao!! ma prima o poi riprendera' il "corso" ? erano molto interessanti i primi tutorial.... e sopratutto sarei cursioo di vedere come importare modelli fatti con maya xsi ecc..http://forumtgmonline.futuregamer.it.../icon_razz.gif
Re: Primo tutorial su RenderMan
Citazione:
ariok ha scritto lun, 30 gennaio 2006 alle 00:36
CIao!! ma prima o poi riprendera' il "corso" ? erano molto interessanti i primi tutorial.... e sopratutto sarei cursioo di vedere come importare modelli fatti con maya xsi ecc..
http://forumtgmonline.futuregamer.it.../icon_razz.gif
Mi spiace, non ho nemmeno il tempodi respirare in questo periodo http://forumtgmonline.futuregamer.it...s/icon_sad.gif
Re: Primo tutorial su RenderMan
[uppino anti-apocafud]*
*ho sentito che vanno 'uppati' i topic più importanti per evitare che vangano cancellati durante il cambiamento del forum pervisto per il 12 Settebmre: entro tale data mandatemi un PM per segnalarmi i Topic che volete salvare, motivando il tutto. grazie!
Questo messaggio si autodistruggerà a passaggio efettuato