PDA

Visualizza Versione Completa : Scacchiera luminosa a contatto "casuale"...



SlowMan
07-05-11, 15:37
Ho un quesito cervellotico che vorrei risolvere per fare un esperimento in LW:

Supponiamo che io abbia realizzato una scacchiera bianca e nera sulla quale rimbalza una palla in modo totalmente casuale e che questa illumini le caselle bianche ogni volta che ne urta qualcuna.

Far rimbalzare una palla casualmente su una superficie non è un problema.

Illuminare le caselle con metodi di post-operazioni non sarebbe difficile.

Quello che però vorrei ottenere è l'automatismo del processo, anche ricorrendo a espressioni o script se necessario, ma metodi più diretti sono i più graditi.

So che è più una cosa per programmatori di video giochi che di animatori 3D, ma mi sono svegliato con questa idea "balzana" per la testa e se non trovo una soluzione continuerà a ronzarmi tra i neuroni per settimane...

... ecco cosa succede a fare le ore piccole la notte :zzz:

SlowMan
09-05-11, 16:50
Occhei... ho provato a sperimentare con gli strumenti disponibili in LW:

------

Prova N° 1

Modeler:

ho realizzato una scacchiera composta da 64 caselle (8x8),

ho impostato una superficie diversa per ogni casella (32 bianche e 32 nere),

ho realizzato una palla con superficie neutra (grigia)

Layout:

Texture Editor del canale Luminosity delle caselle bianche:

ho attivato un Layer Gradients impostato su Distance to Object selezionando la palla come oggetto di riferimento,

ho abilitato due chiavi nella barra delle sfumature (una chiara e una scura)

Risultato:

animando la palla si illuminano solo le caselle bianche ma mi da un effetto torcia

Primo metodo bocciato!!! :mad:

------

Prova N° 2

Modeler:

idem come sopra

Layout:

Envelope (Graph Editor) del canale Luminosity delle caselle bianche:

ho attivato in Modifier il Plugin Proximity (presente da LW 9.x)

Risultato:

peggio che prima

Secondo metodo bocciato!!! :mad:

------

Conclusione:

temo che dovrò passare alle... sigh... espressioni :argh:

Scratch
09-05-11, 21:23
Cos'è l'effetto torcia?

Mi sembra che il primo metodo dovrebbe funzionare.

Wotan3d
10-05-11, 00:26
Potresti usare il primo metodo ma collegato all'intensità di una luce, ammesso che possa essere fato questo collegamento.
La scacchiera la dividi in due oggetti ed i quadri bianchi li illumini dalla luce (naturalmente direzionale), escludendo tutti gli altri oggetti (nei parametri della luce).

davhub
10-05-11, 12:44
con deflag anche del cast shadow, così la luce illumina senza proiettare ombre, ovviamente...

in effetti dalla tua speigazione slow.. poco si capisce della pecca dell'effetto... non è che posti i test, tanto per capire?? :noidea:

facci sapere che siamo curiosi.. :D

Davhub

SlowMan
12-05-11, 17:35
Eccomi qua! :)

Scusatemi ma tra gli esperimenti con LW e qualche lavoretto di manutenzione domestica straordinaria mi sono un po' incasinato. :testate:

------

Dunque, tornando alla scacchiera:

Per Scratch:
Hai presente quando punti una torcia elettrica su un muro proiettando un cerchio luminoso?
Ecco questo è ciò che intendo per effetto torcia.
Può essere un'alternativa alla luce spot ma non è il tipo di effetto che mi serve.

Per Wotan3d:
Per il primo metodo ho attribuito una superficie separata per ogni casella (64 caselle = 64 superfici) perché per l'appunto volevo che l'effetto agisse solo sulla superficie delle caselle da me impostate (quelle bianche) una per volta.
Intensità di luce? Io ho accennato al canale Luminosity ma penso intendiamo la stessa cosa.

Per davhub:
Ombre non ne vengono proiettate perché la mia idea è quella di agire solo sulle superfici della scacchiera influenzate dalla vicinanza o meno della palla alle relative caselle sopra cui verrebbe a trovarsi e senza ricorrere alle luci di scena.

------

Per il momento ho messo da parte l'idea di utilizzare le espressioni e sto sperimentando con il Node Editor di superficie che è un poco più intuitivo (anche se non sono un'esperto):

ho cambiato approccio:

Modeler:

ho realizzato 64 caselle distinte su 64 Layer separati e con 64 superfici (32 nere e 32 bianche),

ho spostato i singoli Pivot di ogni Layer centrandoli sopra la relativa casella ivi contenuta

Layout:

ad ogni superficie bianca ho attivato il Node Editor,

nel Node Editor ho aggiunto due di Item Info (una per la casella interessata ed una per la palla) e un modulo Logic,

ho collegato le porte Position dei due Item Info ai primi InPut (A e B) del modulo Logic e ho collegato l'OutPut di questo alla porta Luminosity: se il risultato è vero (cioè la palla è vicina alla casella interessata) allora la casella si accende al contrario invece rimane spenta.

Piu o meno ci sono quasi... dico quasi perché anche qui mi è saltato fuori un comportamento inaspettato... anziché accendersi una sola casella se ne accende un'intera fila...

Mi sa che ci dovrò lavorare sopra ancora un bel po'. :(

------

P.S.
Hem... so che nelle mie spiegazioni sono un po' criptico, ma date le mie attuali circostanze sono scusabile. :p

Appena mi è possibile posto qualche risultato e una descrizione più umana dei miei esperimenti. :D

Wotan3d
12-05-11, 18:16
Non ci ho capito niente.
Ma si devono illuminare solo le caselle che vengono toccate dalla palla? è questo che vuoi fare? La palla rimbalza e la casella che viene colpita si illumina, solo se è bianca?

Se è così ti suggerisco un bel sistema macchiavellico: crea degli interruttori sopra ogni casella! Sono oggetti box invisibili posizionati appena sopra le caselle bianche che detectano le collisioni con la palla ma che hanno massa talmente piccola da non influenzare il moviemnto della palla.
La palla li colpisce, questi si spostano, la luminosità della rispettiva casella è linkata alla distanza dell'interruttore, quando questo si avvicina tutta la casella si illumina. Almeno in teoria...

SlowMan
12-05-11, 20:15
Non ci ho capito niente.
Ma si devono illuminare solo le caselle che vengono toccate dalla palla? è questo che vuoi fare? La palla rimbalza e la casella che viene colpita si illumina, solo se è bianca?

Sì, esatto. :g1:


Se è così ti suggerisco un bel sistema macchiavellico: crea degli interruttori sopra ogni casella! Sono oggetti box invisibili posizionati appena sopra le caselle bianche che detectano le collisioni con la palla ma che hanno massa talmente piccola da non influenzare il moviemnto della palla.
La palla li colpisce, questi si spostano, la luminosità della rispettiva casella è linkata alla distanza dell'interruttore, quando questo si avvicina tutta la casella si illumina. Almeno in teoria...

Ok, appena mi libero provo anche questo, grazie mille. :g1:

SlowMan
14-05-11, 20:46
Allego un po' di materiale per meglio comprendere lo scopo dell'esperimento.

------

Questo è un esempio di quello che "vorrei" ottenere automaticamente:

http://www.lwita.com/vb/attachment.php?attachmentid=13293&stc=1&d=1305399425

qui i file da esaminare (formato LW 9.6) dell'esempio:

http://www.lwita.com/vb/attachment.php?attachmentid=13295&stc=1&d=1305399570

per ottenere l'accensione delle caselle colpite ho aggiunto "manualmente" dei fotogrammi chiave nel canale Luminosity (Surface Editor -> Envelope/Graph editor); il risultato è accettabile ma scomodo. :rolleyes:

------

Questo è il risultato della prova N° 1 già descritta:

http://www.lwita.com/vb/attachment.php?attachmentid=13294&stc=1&d=1305399425

qui i file da esaminare (formato LW 9.6) della prova:

http://www.lwita.com/vb/attachment.php?attachmentid=13296&stc=1&d=1305400297

in questo caso ho attivato Surface Editor -> Luminosity -> Texture Editor per ogni superficie/casella, aggiungendo un Layer Gradient impostato per seguire il movimento della palla, per modificare i valori di Luminosity delle caselle bianche, funziona automaticamente e non è difficile da realizzare (basta impostare le proprietà di superficie di una casella bianca e fare copia/incolla sulle restanti caselle bianche); il risultato però non mi soddisfa proiettando un cerchio luminoso sulla scacchiera che per la cronaca è possibile ottenere anche assegnando una sola superficie in condivisione a tutte le caselle bianche.

------

Volevo aggiungere anche il risultato della prova N° 2 ma quando provo a ricaricare il file (LWO) salvato con il PlugIn Proximity del Graph editor attivato mi manda in Crash LW :confused: , perciò ho lasciato perdere, tanto non mi piaceva.

------

Con le prove fatte tramite il Node Editor non riesco più a ripetere l'unico risultato ottenuto, quindi anche qui niente file da esaminare. :o

------

Intanto tento altre opzioni, anche quella suggerita da Wotan3d, ma se nel frattempo a qualcuno viene un idea mi farebbe un grosso piacere. :D

SlowMan
22-05-11, 15:44
Penso di aver trovato il metodo giusto. :yeah:

Ho ripreso in mano il discorso del Node Editor, l'intuizione originale era giusta però mancavano alcuni elementi che ho provveduto ad includere.

http://www.lwita.com/vb/attachment.php?attachmentid=13311&stc=1&d=1306075204

qui i file da esaminare (formato LW 9.6) dell'esempio:

http://www.lwita.com/vb/attachment.php?attachmentid=13312&stc=1&d=1306075246

------

Ecco una descrizione sommaria da leggere assieme all'analisi dei file allegati:

Preparazione iniziale

Modeler:

01 - nel primo Layer ho costruito una scacchiera quadrata suddivisa in 64 caselle uguali
(come una normale scacchiera per i giochi della dama e degli scacchi)

02 - ho assegnato una superficie condivisa a tutte le caselle nere
(in questo caso sufficiente perché non è prevista interazione)

03 - ho assegnato diverse superfici separate alle singole caselle bianche
(32 superfici di colore bianco con denominazioni riconoscibili, indispensabile per l'animazione finale)

04 - nel secondo Layer ho costruito una palla
(la palla rimane centrale come la scacchiera, gli spostamenti sono effettuati solo in Layout)

05 - ho assegnato superfici ad aree diverse della palla
(servono per identificare meglio i movimenti rotatori della palla nel Render)

06 - ho salvato l'oggetto finito

Layout:

07 - ho caricato la scacchiera e la palla

08 - ho impostato velocità e durata dell'animazione della scena

09 - ho aggiunto 32 Nulls disposti in coincidenza con le caselle bianche della scacchiera
(le denominazioni dei Nulls equivalgono a quelle assegnate alle superfici delle caselle bianche)

10 - ho aggiunto un Null centrale e con asse Y abbassato di -55 mm, ridenominato "Target"

11 - nel Graph Editor ho aggiunto un Modifiers Channel Follower ai canali Position X, Y, e Z del Null "Target"

12 - ho configurato i suddetti canali con quelli relativi della palla
(il Null "Targhet" si sposta automaticamente alla base della palla e con un margine abbondante di 5 mm)

13 - nel Surface Editor ho attivato e configurato il Node Editor per ogni superficie bianca
(la combinazione scelta accende le caselle quando la palla le tocca)

14 - ho riposizionato la palla alzandola dalla scacchiera

15 - ho salvato la scena

------

Preparazione dell'animazione

Layout:

16 - ho assegnato le dinamiche FX Collision alla scacchiera e HardFX alla palla

17 - ho configurato le dinamiche per ottenere un'animazione casuale
(ho ripetuto i calcoli varie volte prima di avere un risultato accettabile)

18 - ho selezionato Edittool dal Tab EditFX della dinamica HardFX

19 - ho selezionato da Commands il comando Makepath(Update)
(questo mi permette di ottenere il KeyFraming dell'animazione della palla)

20 - dal Graph Editor della palla ho selezionato il canale Position.Y

21 - ho selezionato le chiavi relativa alla posizione più bassa della palla cambiando Value in 50 mm

22 - ho testato l'animazione: palla e Null "Target" si muovono assieme
(solo la palla ruota e solo il Null "Target" scende al di sotto della scacchiera, tutto Ok)

23 - ho ri-salvato sia gli oggetti che la scena

24 - ho impostato e avviato il Render per avere il risultato finale

------

Conclusione

Il metodo funziona, la preparazione iniziale è un po' impegnativa e anche se il risultato non è perfetto al 100% con qualche ulteriore accorgimento lo si potrebbe migliorare per usi futuri; per ora sono soddisfatto.

Il Node Editor è un ottimo strumento e con questo esperimento ho imparato molto su come utilizzarlo, analizzando i file originali aiuta a capirlo meglio di una semplice descrizione.

Adry76
28-05-11, 23:13
Eccellente idea, me la segno perchè non ho capito mezza riga di quello che ho letto :D
Cmq sia mi potrebbe tornare utile almeno in 100 situazioni un metodo simile.
Ottimo lavoro e grazie 1000 per la condivisione!

Ciao Adry

SlowMan
29-05-11, 09:44
Eccellente idea, me la segno perchè non ho capito mezza riga di quello che ho letto :D
Cmq sia mi potrebbe tornare utile almeno in 100 situazioni un metodo simile.
Ottimo lavoro e grazie 1000 per la condivisione!

Ciao Adry

Prego, comunque sono certo che il metodo sia fattibile di miglioramenti ma per il momento mi accontento. :)