08.11.2012 Views

dettagli - Amiga Magazine

dettagli - Amiga Magazine

dettagli - Amiga Magazine

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Campi stellari<br />

La realizzazione di un campo tridimensionale in assembly<br />

Negli ultimi tempi, non solo le pagine di <strong>Amiga</strong> <strong>Magazine</strong>,<br />

ma anche quelle di altre famose testate dedicate alla pro-<br />

grammazione, sono state letteralmente affollate di articoli<br />

che, per mezzo di equazioni, calcoli matriciali, vettori, e<br />

quant'altro la matematica moderna mette a disposizione,<br />

tentano di infondere al lettore le basi per la programmazio-<br />

ne di un Engine 3D. Purtroppo, come noto, l'attuale gene-<br />

razione di <strong>Amiga</strong>, non è particolarmente adatta alla gestio-<br />

ne della grafica 3D, sia a causa del suo sottosistema grafico<br />

orientato ai bitplane, sia per la cronica indisponibilità di<br />

CPU e memoria veloce sulla gran parte delle macchine in-<br />

stallate.<br />

Inoltre molti, per mancanza di voglia, o a causa di scarse<br />

conoscenze matematiche, non sono in grado di affrontare<br />

letture impegnative sul tracciamento di poligoni, sull'imple-<br />

mentazione dello 2-Buffer o sulle tecniche di texture, ma<br />

preferirebbero semplicemente riuscire a realizzare sul pro-<br />

prio <strong>Amiga</strong> semplici effetti tridimensionali, da utilizzare in<br />

piccole realizzazioni software, come demo, intro, ma anche<br />

effetti video, animazioni e così via. Nulla comunque esclu-<br />

de che, una volta acquisite le necessarie basi di partenza,<br />

non si possa poi appr'ofondire l'argomento grazie all'aiuto<br />

di testi o pubblicazioni specifiche.<br />

Owiamente questo articolo non si prefigge l'obiettivo di<br />

affrontare in maniera completa le problematiche relative al<br />

tracciamento di punti in uno spazio 3D, ma più semplice-<br />

mente intende dare un approccio semplice e lineare al pro-<br />

grammatore <strong>Amiga</strong> che possiede già delle minime cono-<br />

scenze di base della programmazione a livello hardware e<br />

che vuole cominciare a "masticare" del 3D realizzando un<br />

campo di stelle (pixel) che si avvicinano in direzione<br />

dell'osservatore. Come sempre, useremo il linguaggio as-<br />

sembly, che permette di avere potenza sufficiente, anche<br />

su macchine dotate di 68000 o 68020.<br />

Consigliamo anche a chi non è direttamente interessato alla<br />

creazione di campi stellari, di leggere con attenzione I'inte-<br />

ro articolo. Questo infatti può anche essere considerato un<br />

pretesto per cominciare ad avvicinare in maniera niente af-<br />

fatto teorica la grafica 3D e tecniche di programmazione<br />

particolari.<br />

L'obiettivo 1<br />

Cominciamo definendo esattamente cosa realizzare: voglia-<br />

mo avere un certo numero di punti che, originandosi nella<br />

zona centrale dello schermo (teoricamente lontano dall'os-<br />

servatore, ossia da chi guarda il monitor), sembrino awici-<br />

narsi sempre di più, fino a uscire dai bordi esterni del qua-<br />

dro. Per avere una resa migliore, in seguito faremo in mo-<br />

do di variare il colore dei pixel tracciati, così che quelli più<br />

lontani risultino più scuri, mentre quelli più vicini, appaia-<br />

no più chiari. Tutto questo per sopperire al fatto che i<br />

pixel, pur avvicinandosi, non aumentano di dimensione.<br />

Coloro che non avessero ancora ben chiaro il risultato che<br />

otterremo, pensino ad un comune videogioco spaziale 3D,<br />

nel quale la navicella del giocatore, che la osserva posteriormente,<br />

naviga in linea retta verso le profondità dello<br />

spazio, mentre le stelle, o il pulviscolo spaziale si awicinano<br />

velocemente.<br />

La teoria minima l<br />

Come è facilmente immaginabile anche da chi è completa-<br />

mente a digiuno di nozioni sulla grafica tridimensionale,<br />

ciascuna stella è costituita da un punto definito da tre coor-<br />

dinate: Xp, Xp e Zp. Xp definisce la posizione orizzontale<br />

- -<br />

del punto, da sinistra a<br />

destra; Yp quella verti-<br />

cale dall'alto verso il<br />

basso; Zp la distanza<br />

del punto dall'osserva-<br />

tore (figura 1). Lo<br />

schermo del computer<br />

si basa invece sulle sole<br />

coordinate Xs e Ys (fi-<br />

gura 2), trattandosi di<br />

un sistema bidimensio-<br />

Fig. 1 - Gli assi del<br />

mondo 30.

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

Saved successfully!

Ooh no, something went wrong!