Vai al contenuto
CRASH23

Trasparenza In Relazione Alla Distanza

Recommended Posts

Inviata (modificato)

Avrei due domane, che a molti di voi sembreranno probabilmente banali :Clap03: .

Inanzitutto vorrei sapere se è possibile rendere gli oggetti , traparenti in relazione alla loro posizione nello spazio , cioè rendere più trasparenti gli oggetti a minor distanza dalla telecamera e più trasparenti quelli a maggior distanza da questa.

In secondo luogo vorrei capire come si fa a far combinare i colori di due oggetti che si sovrappongono(per esempio se ho un quadrato blu e un triangolo giallo sullo stesso asse vorrei riuscire a vedere l'intersezione di queste due figure traparenti colorata in verde).

Come al solito grazie in anticipo per tutte le eventuali risposte :hello: .

P.S:Il programma che sto utilizzando è Maya.


Modificato da CRASH23

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Ciao! Non e' una cosa proprio banale.

Suppongo tu voglia un effetto tipo questo:

post-21723-1144238388_thumb.jpg

Allora, per fare questo puoi usare un nodo di Maya chiamato distanceBetween che calcola la distanza tra 2 punti. In particolare a te serve calcolare la distanza tra la posizione della telecamera e il punto dell'oggetto che il renderer sta processando. Il primo punto lo trovi facilmente, per il secondo si puo' usare un'altra utility molto utile (e senno' mica le chiamavano utilities...) che e' il SamplerInfo.

Allora, in pratica:

1) apri l'Hypershade

2) crea il materiale per i tuoi oggetti

3) crea un samplerInfo e un distanceBetween, che trovi nella sezione "General Utilities" dei Maya Nodes.

4) trascina con il tasto in mezzo il samplerInfo sul distanceBetween e scegli Other... ti apparira' il connection editor

5) connetti l'attributo pointWorld del samplerInfo (che ti da' la posizione assoluta del punto che stai renderizzando) con l'attributo point1 del distanceBetween

6) dall'Outliner trascina camera1 (o comunque la tua camera) sul distanceBetween. IMPORTANTE: devi trascinare la camera (cioe' il nodo transform) non la cameraShape e seleziona Other...

7) connetti l'attributo translate all'attributo point2

Ci siamo quasi, adesso il nostro nodo distanceBetween ci calcola la distanza di ogni punto del nostro oggetto dalla telecamera e la mette nell'attributo di output chiamato distance.

Ora, potremmo direttamente collegare distance alle tre componenti transparenceR, G e B del nostro materiale, ma avremmo un problema: molto probabilmente la distanza dalla telecamera sara' > 1,quindi i nostri oggetti saranno tutti trasparenti. Ma ecco che ci arriva in aiuto un terzo nodo che troviamo tra le general utility: SetRange.

Questo nodo prende un valore in un certo range e lo rapporta ad un secondo range.

Ad es. gli posso dire: la mia distanza e' tra 0 e 100, dammela tra 0 e 1. Quindi se gli do' come input 47 mi dara' come output 0.47

Quindi connettiamo distance da distanceBetween a ValueX di SetRange.

Poi, nell'attribute editor settiamo Min e Max a 0 e 1 (cioe' la minima e massima trasparenza che vogliamo) e old min e old max a due valori opportuni a seconda della scena. Per la mia scena ho messo 15 e 30 ad es.

Questo vuol dire che gli oggetti a distanza <15 avranno trasparenza 0, quelli a distanza >30 avranno trasparenza 1 e quelli nel mezzo avranno trasparenza intermedia.

Finalmente colleghiamo l'attributo outputX di setRange a transparenceR, G e B del nostro materiale.

Il materiale finito e' qualcosa del genere:

post-21723-1144239523_thumb.jpg

ciao

nICO

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Vorrei ringraziarti chick per la spiegazione precisa e sintetica delle utility, che duro fatica a conoscere e a trovare info cosi semplicemente illustrate! :Clap03::Clap03:

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Ciao! Non e' una cosa proprio banale.

Suppongo tu voglia un effetto tipo questo:

post-21723-1144238388_thumb.jpg

Allora, per fare questo puoi usare un nodo di Maya chiamato distanceBetween che calcola la distanza tra 2 punti. In particolare a te serve calcolare la distanza tra la posizione della telecamera e il punto dell'oggetto che il renderer sta processando. Il primo punto lo trovi facilmente, per il secondo si puo' usare un'altra utility molto utile (e senno' mica le chiamavano utilities...) che e' il SamplerInfo.

Allora, in pratica:

1) apri l'Hypershade

2) crea il materiale per i tuoi oggetti

3) crea un samplerInfo e un distanceBetween, che trovi nella sezione "General Utilities" dei Maya Nodes.

4) trascina con il tasto in mezzo il samplerInfo sul distanceBetween e scegli Other... ti apparira' il connection editor

5) connetti l'attributo pointWorld del samplerInfo (che ti da' la posizione assoluta del punto che stai renderizzando) con l'attributo point1 del distanceBetween

6) dall'Outliner trascina camera1 (o comunque la tua camera) sul distanceBetween. IMPORTANTE: devi trascinare la camera (cioe' il nodo transform) non la cameraShape e seleziona Other...

7) connetti l'attributo translate all'attributo point2

Ci siamo quasi, adesso il nostro nodo distanceBetween ci calcola la distanza di ogni punto del nostro oggetto dalla telecamera e la mette nell'attributo di output chiamato distance.

Ora, potremmo direttamente collegare distance alle tre componenti transparenceR, G e B del nostro materiale, ma avremmo un problema: molto probabilmente la distanza dalla telecamera sara' > 1,quindi i nostri oggetti saranno tutti trasparenti. Ma ecco che ci arriva in aiuto un terzo nodo che troviamo tra le general utility: SetRange.

Questo nodo prende un valore in un certo range e lo rapporta ad un secondo range.

Ad es. gli posso dire: la mia distanza e' tra 0 e 100, dammela tra 0 e 1. Quindi se gli do' come input 47 mi dara' come output 0.47

Quindi connettiamo distance da distanceBetween a ValueX di SetRange.

Poi, nell'attribute editor settiamo Min e Max a 0 e 1 (cioe' la minima e massima trasparenza che vogliamo) e old min e old max a due valori opportuni a seconda della scena. Per la mia scena ho messo 15 e 30 ad es.

Questo vuol dire che gli oggetti a distanza <15 avranno trasparenza 0, quelli a distanza >30 avranno trasparenza 1 e quelli nel mezzo avranno trasparenza intermedia.

Finalmente colleghiamo l'attributo outputX di setRange a transparenceR, G e B del nostro materiale.

Il materiale finito e' qualcosa del genere:

post-21723-1144239523_thumb.jpg

ciao

nICO

:eek: avevo sottovalutato il problema....

:unsure: Stasera ci provo se ho problemi ti farò sapere, ^_^ Grazie ancora.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
Vorrei ringraziarti chick per la spiegazione precisa e sintetica delle utility, che duro fatica a conoscere e a trovare info cosi semplicemente illustrate! :Clap03::Clap03:

No problem, le utility sono veramente potenti, ci si possono fare materiali spettacolari (ad es. con un metodo molto simile a quello che ho scritto qui sopra si può fare una finta global illumination con tanto di color bleeding ma che renderizza in un attimo).

Purtroppo la documentazione di Maya non è il massimo a riguardo, e non sono così immediate da usare soprattutto se non si è molto pratici della matematica che sta sotto a molti effetti 3D.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Chick, complimenti per la tua competenza e capacità di sintesi! Finora non mi era mai servito, ma è una notiza che può rivelarsi molto utile per il futuro.

Grazie mille.

P.S. ma che ci fai in Nuova Zelanda? Lavoro?

Condividi questo messaggio


Link al messaggio
Condividi su altri siti
P.S. ma che ci fai in Nuova Zelanda? Lavoro?

hmmmmm...... lavoro in Weta Digital.... (e certo!) :D

No, a parte gli scherzi sono qui a fare un dottorato di ricerca che non c'entra nulla con la grafica 3D, ma sono sempre stato molto appassionato specialmente di programmazione appplicata alla grafica 3D e sto collaborando con alcuni amici alla realizzazione di un corto con ambientazioni 3D.

Condividi questo messaggio


Link al messaggio
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora

  • Navigazione recente   0 utenti

    Non ci sono utenti registrati da visualizzare in questa pagina.

×