CannibalSmith ([info]cannibalsmith) rakstīja [info]koderi kopienā,
@ 2008-08-28 15:14:00

Previous Entry  Add to memories!  Tell a Friend!  Next Entry
3D transformāciju matricas
Kā zināms, 3D koordinātas ir vektori (x, y, z, h), kur h = 1, un transformāciju matricas ir
a b c p
e f g q
i j k r
l m n s
, kur abcdefgijk ir rotācija, un lmn ir pārvietojums. Mēs iegūstam attēlu transformējot visus scēnas punktus uz kameras koordinātu sistēmu un projicējot tos uz ekrāna:
x_uz_ekrāna = puse_ekrāna_platuma + x / z
y_uz_ekrāna = puse_ekrāna_augstuma - y / z
.

Mans jautājums ir: ko dara ar hpqrs mainīgajiem?


(Lasīt komentārus) - (Ierakstīt jaunu komentāru)


[info]bubu
2008-08-28 21:09 (saite)
field of view leņķis ir ietvers projekcijas matricu skaitļos iekšā.
Skat, piemēram, kā OpenGL uzkonstruē projekcijas matricu no inputa (fov, aspectRatio, zNear, zFar): http://www.opengl.org/sdk/docs/man/xhtml/gluPerspective.xml
Reku vēl ko palasīt: http://msdn.microsoft.com/en-us/library/bb147302.aspx

Projekcijas matrica kā tāda noder aprēķinu vienkāršošanai, ar to var kontrolēt, piemēram, tavis prasīto field of view. Kā arī kontrolēt projekcijas veidu vai tās parametrus. Projekcijas veidi ir daudz un dažādi: http://en.wikipedia.org/wiki/Graphical_projection

Tā vietā, lai darītu divus dažādus aprēķinus punkta projicēšanai: 1) punkts no pasaules koordināšu sistēmas uz kameras koordināšu sistēmu (View matrix) un 2) no kameras koordināšu sistēmas uz ekrāna koordināšu sistēmu (Projection matrix). būtu vienkāršāk (un efektīvāk) izrēķināt vienu matricu (View * Projection) un transformēt punktu tikai ar šo vienu matricu.

(Atbildēt uz šo) (Iepriekšējais)


(Lasīt komentārus) -

Neesi iežurnalējies. Iežurnalēties?