HOME OGGETTI 3D LIBRI CORSI TUTORIAL FORUM SHOP CONTATTI   LOGIN









 

Variabili indicizzate

Aperto da six, 04 Settembre 2012, 09:29

« precedente - successivo »

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

six

Buongiorno a tutti.


Volevo chiedervi se è possibile creare delle variabili indicizzate attraverso un ciclo FOR.
Vi spiego la mia necessità: dovrei caricare una serie di fotogrammi ( a01,a02,a03...), ma non riesco a "costruire" il nome della variabile in automatico. Se fossero 1000 fotogrammi dovrei digitare a mano tutte e 1000 le righe di codice??


Grazie anticipatamente!

ZioBob

è possibile, usando variabili di tipo matrice (array).
Se la variabile non è un parametro (creato nella apposita schermata dei parametri) ma una variabile usata solo dal GDL, occorre "dichiararla" prima di utilizzarla (una sorta di "formattazione") con il comando DIM. Ammettendo di voler usare il nome "ftg" per i fotogrammi:
DIM ftg[]

FOR i = 1 TO 1000
ftg[ i] = ...
NEXT i


dove, al posto dei puntini, metterai le istruzioni per assegnare il valore alle variabili.

Nel testo GDL, poi, ti riferirai, per esempio, al ventesimo fotogramma con l'identificativo ftg[20]
In pratica hai una serie di variabili che condividono lo stesso nome, e si distinguono per un valore indice posto fra parentesi quadre.
-Roberto Corona-
archiradar  Staff




six

Perfetto! Grazie mille ZioBob! Provo subito!


six


ZioBob, ma al posto dei puntini devo andare ad inserire manualmente i nomi delle immagini??


Questo non lo posso fare:


DIM ftg[]
   FOR i=1 TO 5
      PICTURE ftg,1,1,2
   NEXT i

ma se ho numerato le immagini allo stesso modo, posso richiamare direttamente le immagini??

claudio-aster

mi intrometto per avere magari anche io qualche chiarimento, che sono particolarmente arrugginito...



! ho una superficie di 12 * 12 piastrelle e 12 immagini e voglio metterle casualmente... le immagini hanno nome Bri1.pict... Bri12.pict
for x = 1 to 12
for y = 1 to 12
picture "Bri"+(STR(Int(1+RND (x)), 1, 0))+".pict", 1,1,1
addx 1
next y
del 12
addy 1
next x


! ho una superficie di 12 * 12 piastrelle e 12 immagini e voglio metterle in ordine crescente... le immagini hanno nome Bri1.pict... Bri12.pict
for x = 1 to 12
for y = 1 to 12
picture "Bri"+(STR(y)), 1, 0))+".pict", 1,1,1
addx 1
next y
del 12
addy 1
next x


la questione che non riesco ad appurare: posso in qualche modo attribuire ad un oggetto tridimensionale le mie texture Bri1.pict... Bri12.pict  come prefigurato sopra o sono limitato a giustapporre picture?

claudio-aster

una immagine per capire cosa intendo

six



FOR x=1 TO 30
   picture "ftg"+STR(x, 1, 0), 1,1,1
      ADDZ 0.5
NEXT x

Grazie Aster! Mi hai dato la soluzione. Quello che mi mancava era "ftg"+STR(x,1,0) anche se pensavo di avere provato, ma non ho molta dimistichezza con il comando STR()!
MISSIONE COMPIUTA!


Per il tuo problema azzardo una ipotesi: DEFINE MATERIAL?


Grazie!




Ciao!

doclace

Da parte mia... volentieri Salvatore!
Per Claster, se non hai ancora risolto quoto anch'io la soluzione di SIX che avevo usato nel vecchio scaffale supermercato se non sbaglio. Più che un DEFINE MATERIAL (che non cambia) io cambiavo solo il DEFINE TEXTURE e la variabile era la pic (come hai scritto tu), lo metti all'interno del ciclo FOR e ad ogni ciclo ti cambia.
In aggiunta se allinei correttamente il materiale (COOR e pizze varie... che gia sai) ti crea anche la giusta UV map per Artlantis, Maxwell ecc. ecc.
DOC