ArchiRADAR Forum
ArchiRADAR Forum =>
GDL => Topic aperto da: six - 04 Settembre 2012, 09:29
-
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!
-
è 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.
-
Perfetto! Grazie mille ZioBob! Provo subito!
-
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??
-
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?
-
una immagine per capire cosa intendo
-
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!
-
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