30.12.2012 Views

Amiga Magazine Online

Amiga Magazine Online

Amiga Magazine Online

SHOW MORE
SHOW LESS

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:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!