Ciao :matte-motes-bashful-cute-2:
Prima osservazione
Quando una texture viene applicata ad una faccia essa si "stira", se è il caso, in modo da distribuirsi completamente su tutta la faccia. Questo può determinare delle deformazioni della texture quando ad esempio si applica una texture di forma rettangolare su una faccia quadrata o viceversa.
Ovviamente si interviene di solito modificando il numero di ripetizioni e/o l'offset
Perciò in primo luogo io adatterei la texture alle proporzioni del prim su cui va applicata.
Perciò nel tuo caso se organizzi le texture in una matrice di 3x3, ciascuna di uguali dimensioni e di forma ad esempio quadrata, anche la faccia del prim su cui applicarla dovrebbe essere quadrata. Tutto questo per evitare complicazioni
Seconda osservazione
Poichè come visto in precedenza sullla faccia viene mostrata tutta tutta la texture nel tuo caso dovrai agire sulle ripetizioni orizzontali e verticali in modo che l'immagine venga divisa nel numero delle parti che la compongono. Nel tuo caso le ripetizioni sia orizzontali che verticali dovranno essere 0.333
Terza osservazione
C'è un errore logico nelle funzioni che hai messo come esempio
float offsetH( integer numImg, integer numRow, integer numCol )
Con " integer numImg" vorresti richiamere una delle 9 immagini della matrice, ma ciò è impossibile perchè la immagine è unica anche se formata da 9 parti diverse.
A mio avviso, l'unica cosa che puoi usare è: llOffsetTexture(float horizontal, float vertical, integer side) dove ovviamente "side" è il numero della faccia su cui vuoi applicare la texture (se è per tutte, puoi mettere ALL SIDES)
I valori float per l'offset, come correttamente hai indicato vanno da -1 a 1
Tieni presente che con offest 0,0 e con le ripetizioni orizzontali e verticali pari a 0.333, la parte di immagine che vedi è quella "centrale" vale a dire quella che sta nella seconda riga e seconda colonna della tua matrice 3x3
Con offset orizzontale pari a 0.333 sposti nel verso positivo (verso destra) l'immagine di 1/3 e ovviamente -0.333 nel verso negativo
Osserva che 0.667 è equivalente a -0.333 e analogamente -0.667 equivale come spostamento a 0.333
Lo stesso vale per l'offset verticale dove il verso positivo è verso l'alto.
Domanda: se devi cambiare le texture su un prim perchè semplicemente non carichi 9 texture diverse da proiettare in sequenza?