Usuari:Julsng/Projecció 3D

La projecció tridimensional és qualsevol mètode d'assignació de punts tridimensionals a un pla bidimensional. Atès que la majoria dels mètodes actuals per visualitzar dades gràfiques es basen en la informació plana (informació de píxels de diversos bits) de mitjans bidimensionals, l'ús d'aquest tipus de projecció està molt estès, especialment en gràfics per ordinador, enginyeria i redacció.

Projecció ortogràfica modifica

Quan l'ull humà mira una escena, els objectes en la distància semblen més petits que els objectes propers. La projecció ortogràfica ignora aquest efecte per permetre la creació de dibuixos a gran escala per a la construcció i l'enginyeria.

Les projeccions ortogràfiques són un petit conjunt de transformacions sovint utilitzades per mostrar el perfil, el detall o les mesures precises d'un objecte tridimensional. Els noms comuns per a les projeccions ortogràfiques inclouen pla, secció transversal, ull d'ocell i elevació. 

Si el normal del pla de visió (la direcció de la càmera) és paral·lel a un dels eixos primaris (que és l'eix x, y, o z), la transformació matemàtica és la següent; Per projectar el punt 3D a_ {x}, a_ {y}, a_ {z} al punt 2D b_ {x}, b_ {y} utilitzant una projecció ortogràfica paral·lela a l'eix y (on el positiu y representa el perfil de direcció cap endavant - el perfil vista), es poden utilitzar les següents equacions:

on el vector s és un factor d'escala arbitrari, i c és un desplaçament arbitrari. Aquestes constants són opcionals i es poden utilitzar per alinear correctament la finestra de visualització. Utilitzant la multiplicació de matrius, les equacions es converteixen:

Mentre que les imatges projectades ortogràficament representen la naturalesa tridimensional de l'objecte projectat, no representen l'objecte ja que seria gravat de manera fotogràfica o percebut per un espectador que ho observés directament. En particular, les longituds paral·leles en tots els punts d'una imatge projectat ortogràficament són de la mateixa escala, independentment de si estan llunyanes o properes al visor virtual. Com a resultat, les longituds no s'escorren, ja que estarien en una projecció de perspectiva.

Projecció de perspectiva feble modifica

Una projecció de perspectiva "feble" utilitza els mateixos principis d'una projecció ortogràfica, però requereix especificar el factor escala, assegurant així que els objectes més propers semblin més grans en la projecció i viceversa. Es pot veure com un híbrid entre una projecció ortogràfica i una perspectiva, i es descriu ja sigui com una projecció de perspectiva amb profunditat puntual individual Z _ {i}} reemplaçada per una profunditat constant mitjana Z _ {ave}}, o simplement com una projecció ortogràfica més una escala. [1][2]

El model de perspectiva feble s'aproxima així a la projecció de perspectiva mentre s'utilitza un model més simple, similar a la perspectiva ortogràfica pura (sense escales). És una aproximació raonable quan la profunditat de l'objecte al llarg de la línia de visió és petita en comparació amb la distància de la càmera, i el camp de vista és petit. Amb aquestes condicions, es pot suposar que tots els punts d'un objecte 3D es troben a la mateixa distància Z_ {{ave}} de la càmera sense errors significatius en la projecció (en comparació amb el model de perspectiva completa).

Equació

Assumint la longitud focal

Projecció de perspectiva modifica

Quan l'ull humà veu una escena, en la distància, els objectes es veuen més petits que els objectes propers - això es coneix com a perspectiva. Mentre que la projecció ortogràfica ignora aquest efecte per permetre mesures precises, la projecció de perspectiva mostra objectes distants de menor mida per proporcionar realisme addicional.

La projecció de perspectiva requereix una definició més implicada en comparació amb les projeccions ortogràfiques. Una ajuda conceptual per entendre la mecànica d'aquesta projecció és imaginar la projecció 2D com si l'objecte (s) s'estigués visualitzant a través d'un visor de càmera. La posició, l'orientació i el camp de vista de la càmera controlen el comportament de la transformació de projecció. Les següents variables es defineixen per descriure aquesta transformació:

  • Un
                        ,
                        ,
                                             {\displaystyle \mathbf {un} _{x,y,z}}  - la posició 3D d' punt A que és per ser projectat.
  • c
                        ,
                        ,
                                             {\displaystyle \mathbf {c} _{x,y,z}}  - la posició 3D d'un punt C representant la càmera.
                        ,
                        ,
                                             {\displaystyle \mathbf {\theta } _{x,y,z}}  - L'orientació de la càmera (representat per Tait–Bryan angles). 
  • e
                        ,
                        ,
                                             {\displaystyl \mathbf {e} _{x,y,z}}  - la posició de l'espectador  a la superfície de pantalla  que passa per punt C representant la càmera.[3]

Que resulta en:

  • b
                        ,
                                             {\displaystyle \mathf {b} _{x,y}}  - la projecció 2D de                                                               a {\displaystyle \mathbf {} } .

Quan c x , y , z = ⟨ 0 , , ⟩ , {\displastyle \mathbf {} _{,y,}=\langle ,,\rangle ,} i

x , y , z = , 0 , 0 , { \mathbf {\theta } _{x,y,z}=\langle 0,0,0\rangle ,} el 3D vector

1 , 2 , 0

{\displaystyle \langle ,,0\rangle } és projectat al 2D vector

1 , 2

{\displaystyle \langle 1,2\rangle } .

D'altra banda, per computar

           b
         
         

x , y

{\displastle \mathf {b} _{,y}} primer definim un vector d

, y , z { {d} _{x,y,}}

com la posició d'assenyalar a respecte un sistema de coordenada definit per la càmera, amb origen en C i girat per θ { {\theta } } respecte el sistema de coordenada inicial. Això s'aconsegueix restant c { {c} } de un { \mathbf {un} } i llavors aplicant una rotació per

{\displaystyle -\mathbf {\theta } } al resultat. Aquesta transformació és sovint anomenada una transformació de la càmera, i pot ser expressada de la manera següent, expressant la rotació en termes de rotacions sobre el x, y, i z destrals (aquests càlculs assumeixen que les destrals són ordenades com a sistema esquerrà de destrals):[4][5]

Aquesta representació correspon a la rotació de tres Euler angles (més correctament, Tait–Bryan angles), utilitzant la convenció xyz , la qual pot ser interpretada com "rotació sobre el extrinsic destrals (destrals de l'escena) en l'ordre z, y, x (llegint correcte-a-esquerre)" o "rotació sobre les destrals intrínseques (destrals de la càmera) en l'ordre x, y, z (llegint esquerre-a-correcte)". Si la càmera no és rotada (

, ,

= 0 , ,

{\isplaystyle \mathbf {\theta } _{x,y,z}=\langle 0,0,0\rangle } ), llavors les matrius queden fora (com identitats), i això redueix a senzillament un canvi: d = un

c . {\displaystyle \mathbf {d} =\mathbf {} -\mathbf {c} .

Alternativament, sense utilitzar matrius (deixat és reemplaçar (ax-cx) amb x etcètera, i abreujar cosθ a c i pecatθ a s):

Aquest punt transformat es pot projectar en el pla 2D utilitzant la fórmula (aquí, x / y s'utilitza com a pla de projecció, la literatura també pot utilitzar x / z):[6]

O, en forma de matriu utilitzant coordenades homogènies, el sistema

Juntament amb un argument amb triangles similars, condueix a la divisió per la coordenada homogènia, donant

La distància de l'espectador des de la superfície de visualització \ mathbf {e} _z, es relaciona directament amb el camp de visió, on \ alpha = 2 \ cdot \ tan ^ {{- 1}} (1 / {\ mathbf {e} } _ {z}) és l'angle visualitzat. (Nota: Això suposa que mapeu els punts (-1, -1) i (1,1) a les cantonades de la vostra superfície de visualització)

Les equacions anteriors també es poden reescriure com:

En què {\ mathbf {s}} _ {{x, y}} és la mida de la pantalla, {\ mathbf {r}} _ {{x, y}} és la mida de la superfície d'enregistrament (CCD o pel·lícula) mathbf {r}} _ {z} és la distància de la superfície de gravació a l'alumne d'entrada (centre de la càmera) i {\ mathbf {d}} _ {z} és la distància, des del punt 3D que es projecta, fins a la alumne d'entrada.

Es poden necessitar operacions de retallada i escalat posteriors per assignar el pla 2D a qualsevol mitjà de visualització en concret.

Diagrama modifica

 

Per determinar quina coordenada x de la pantalla correspon a un punt A_ {x}, A_ {z} multiplica les coordenades del punt per:

On

 B_x  és la coordenada x de la pantalla 
 A_x és la coordenada x del model
 B_z és la distància focal—la distància axial des del centre de càmera fins al pla d'imatge 
A_z és la distància de l'objecte.

Atès que la càmera està en 3D, el mateix funciona per a la coordenada y de la pantalla, substituint y per a x en el diagrama i l'equació anteriors.

Vegeu també modifica

Referències modifica

  1. Subhashis Banerjee. «The Weak-Perspective Camera», 18-02-2002.
  2. Alter, T. D. (juliol 1992). 3D Pose from 3 Corresponding Points under Weak-Perspective Projection (PDF) (Technical report). MIT AI Lab.
  3. Ingrid Carlbom, Joseph Paciorek «Planar Geometric Projections and Viewing Transformations». ACM Computing Surveys, 10, 4, 1978, pàg. 465–502. DOI: 10.1145/356744.356750.
  4. Riley, K F. Mathematical Methods for Physics and Engineering. Cambridge University Press, 2006, p. 931, 942. DOI 10.2277/0521679710. ISBN 0-521-67971-0. 
  5. Goldstein, Herbert. Classical Mechanics. 2nd. Reading, Mass.: Addison-Wesley Pub. Co., 1980, p. 146–148. ISBN 0-201-02918-9. 
  6. Sonka, M; Hlavac, V; Boyle, R. Image Processing, Analysis & Machine Vision. 2nd. Chapman and Hall, 1995, p. 14. ISBN 0-412-45570-6. 

Bibliografia modifica

  • Kenneth C. Finney (2004). 3D Game Programming All in One. Thomson Course. p. 93.  [1]. [[Especial:Fonts bibliogràfiques/978-1-59200-136-1|ISBN 978-1-59200-136-1]].  
  • Koehler; Ralph. 2D/3D Gràfics i Splines amb Codi de Font. {{{títol}}}. ISBN 0759611874.   

Enllaços externs modifica