Newsgroup: it.comp.grafica
Titolo: Oggetto in acqua

Sto disegnando una bottiglia nel mare (tipo messaggio di un naufrago). 
Per evitare che la superficie del mare sia visibile anche dentro la 
bottiglia, cosa potrei fare? Io pensavo ad una opacity map, realizzata 
ad hoc, per 'bucare' la superficie del mare...qualche idea/consiglio?
Bye by SixaM 8-]


Intendi con 3d studio max? Bella domanda! Anche a me interessa come fare una
cosa del genere, ma non credo si otterrebbe granché con una opacity map
specialmente se vuoi animare la bottiglia che si muove. Se trovi la
soluzione postala per piacere.
--
byez,
GUiLE

 
Bye by SixaM 8-]

 ha scritto nel messaggio
news:Bl0f9.82379$pX1.2...@news2.tin.it...


SixaM <si...@NOSPAMaruba.it> wrote in message
MPG.17e693588...@news.enter.it...

domanda interessantissima..
per un mare nurbs
un' ottima soluzione è questa:
Fare un' istanza poligonale del mare e della bottiglia
e ricavare la booleana poligonale d' intersezione ad ogni frame
tra la bottiglia e il mare.
Estrudiamo un poco la booleana per poter lavorare
con un comando stupendo di XSI, lo shrinkrap.
Creiamo un cerchio nurbs con molti punti e invochiamo il deformatore
shrinkrap
che proietterà il cerchio nurbs sulla booleana estrusa
facendogli assumere la forma corretta
di intersezione tra la bottiglia ed il mare.
Ovviamente non ci resta che usare questo cerchio come trim
per il mare nurbs e il gioco è fatto.
XSI gode di una costruction history totale, quindi le operazioni
che ho elencato sono completamente automatiche frame dopo frame,
aggiornando forme.. operatori.. e chi più ne ha più ne metta, in real time.
Un' altra soluzione è trimmare
la superfice acquosa con le curve che compongono la bottiglia
anch' essa rigorosamente nurbs.
La cosa interessante è che se la bottiglia fa su e giù nell' acqua
l' intersezione col mare cambia. ad esempio quando solo il collo
della bottiglia si trova sopra il mare si dovrà usare una trim
più piccola e così via per tutto il corpo della bottiglia.
Mi viene in mente questo metodo:
Iniziare estraendo la curva "U" più in basso della bottiglia
e freezare la sua costruction history,
ora dargli varie shape a seconda di quante e come
sono le isocurve della tua bottiglia.
Ora, controllare l' interpolazione LINEARE delle varie shape
con un' espressioncina sulle le traslazioni in Y
(Z mi sembra se usi max) della bottiglia,
così quando la bottiglia va su, la trim diventa più grande
e quando va giù diventa più piccola adattandosi al collo
e passando correttamente attraverso tutte le shape di mezzo
assumendo in ogni punto la forma della bottiglia.
Ovviamente mettiamo la trim figlia della bottiglia così la segue,
se da fastidio che vada su e giù anche la trim
togliamo le traslazioni con un espressione Y=0
o uguale ad un altro oggetto che scegli tu.
Per le rotazioni la faccenda si complica ancora di più,
non si può solo legare la rotazione della trim
a quella della bottiglia, perchè quando la bottiglia
ruota la trim si deforma allungandosi.
La prima idea che mi viene ora è di legare la scalatura sulle X
della trim alla rotazione in Z della bottiglia,
così quando la bottiglia ruota su un asse la trim si scala sull' altro,
ma non è un metodo corretto perchè non basta una scalatura
per far assumere alla trim la forma corretta d' intersezione.
Basti immaginare se la bottiglia si adagiasse
parallelamente alla superficie del mare.
In questo caso si deve fare lo stesso discorso ma con le curve"V",
facendo di nuovo una trim con le shape del profilo della bottiglia,
ma estraendo le V.
A questo punto si potrebbe fare una cosa molto complicata,
legare le shape della trim U e quelle della nuova trim V
con la traslazione E la rotazione della bottiglia.
Quando la bottiglia va su e giù vengono coinvolte
le shape U, quando la bottiglia inizia a ruotare
vengono coinvolte le U+ le V.
Le U si trasformano nelle V, fino a diventare V, quando la bottiglia è
sdraiata
sul mare.
Ovviamente i due SET di curve devono avere lo stesso numero di punti
per usare le shape
e cmq non assicuro niente fin quando non l' avrò provato;-)
un' altra soluzione è quella dell' opacity map,
ricaviamo la booleana d' intersezione frame by frame
e la usiamo come texture di opacità per il mare
Se qualcuno vuole dirmi che sono matto è autorizzato a farlo.
ciao!
Paolo Fazio