You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Texture mapping e <strong>Amiga</strong><br />
Parte ZII<br />
ALBERTO LONGO Free Direction Texture Mapping<br />
Alberto Lorzgo è I'nzltore di Breatbless. il gioco 3Dprodotto<br />
dall'italiana Fields Of Visiorz.<br />
Nella prima puntata ho grossolanamente accennato alla<br />
matematica necessaria al texture mapping. In quella sede<br />
non mi sono spinto oltre una sommaria descrizione delle<br />
relazioni che intercorrono tra un punto del poligono da<br />
"mappare" e il corrispondente punto della texture, questo<br />
per fornire al lettore solo un'idea di massima della com-<br />
plessità computazionale del genere di problema che do-<br />
vevamo affrontare.<br />
È però giunto il momento di scendere un po' più nei<br />
particolari e di analizzare più da vicino almeno una parte<br />
dell'algebra lineare necessaria, cercando nel contempo di<br />
evitare un formalismo matematico troppo rigido (mi per-<br />
donino i puristi).<br />
Fig. 1 - Proiezione di un poligono.<br />
Dato un generico poligono nello spazio, individuato dal-<br />
le coordinate 3D dei suoi vertici, vogliamo tracciarlo sul-<br />
lo schermo con una texture mappata su di esso. Vediamo<br />
in figura 1 una schematizzazione del problema.<br />
Lo schermo non è altro che una parte del piano S di<br />
equazione z=dz, cui è associato un sistema di riferimento<br />
bidimensionale definito da una origine (O,O,dz) e dai due<br />
versori rn ed rz, per cui tracciare sullo schermo il poligo-<br />
no, significa proiettarlo su tale piano. La quantità dz di-<br />
pende dal tipo di trasformazione utilizzata per effettuare<br />
la proiezione prospettica. Come già dovremmo sapere, in<br />
genere tale trasformazione è del tipo:<br />
m = Hcenter + Hscale * x/z<br />
n = Vcenter + Vscale * y/z<br />
dove Hscale e Vscale sono i fattori di scala orizzontale e<br />
verticale, mentre Hcenter e Vcenter sono utilizzati per<br />
traslare il sistema di coordinate dello schermo. Per sem-<br />
plicità supporremo che i fattori di scala siano pari a 1 e<br />
che i valori di traslazione siano pari a 0, per cui c;lz avrà<br />
valore 1 e il piano avrà equazione z=1. Più avanti vedre-<br />
mo che, nella pratica, questa semplificazione deve essere<br />
evitata.<br />
I1 poligono da tracciare appartiene a un piano e il siste-<br />
ma di riferimento bidimensionale a esso associato è defi-<br />
nito da un'origine O=(Ox,Oy,Oz) e da due vettori<br />
i=(Ix,Iy,Iz) e j=(JxJyJz> In tale sistema di riferimento<br />
ogni punto P del poligono è individuato dalle sue coor-<br />
dinate (a,b), che nello spazio diventano: