3D transformacije in gledanje

Slides:



Advertisements
Similar presentations
Ma.
Advertisements

OpenGL Computer Graphics
Computer Graphics 2D & 3D Transformation.
University of North Carolina at Greensboro
Click on each of us to hear our sounds.
Objectives Learn to build arbitrary transformation matrices from simple transformations Learn to build arbitrary transformation matrices from simple transformations.
1 Angel: Interactive Computer Graphics 4E © Addison-Wesley 2005 OpenGL Transformations Ed Angel Professor of Computer Science, Electrical and Computer.
CS 4731: Computer Graphics Lecture 8: 3D Affine transforms Emmanuel Agu.
CS 4731: Computer Graphics Lecture 11: 3D Viewing Emmanuel Agu.
2IV60 Computer Graphics 2D transformations
2D Transformations x y x y x y. 2D Transformation Given a 2D object, transformation is to change the object’s Position (translation) Size (scaling) Orientation.
Transformations of Objects CVG lab. Introduction  Affine transformations : Affine transformations are a fundamental cornerstone of computer graphics.
Miha Pihler MCSA, MCSE, MCT, CISSP, Microsoft MVP
OpenGL Matrices and Transformations Angel, Chapter 3 slides from AW, Red Book, etc. CSCI 6360.
TWO DIMENSIONAL GEOMETRIC TRANSFORMATIONS CA 302 Computer Graphics and Visual Programming Aydın Öztürk
The Viewing Pipeline (Chapter 4) 5/26/ Overview OpenGL viewing pipeline: OpenGL viewing pipeline: – Modelview matrix – Projection matrix Parallel.
2D Transformations.
HIRAGANA by number of strokes Images from:
Stages of Vertex Transformation To specify viewing, modeling, and projection transformations, you construct a 4 × 4 matrix M, which is then multiplied.
Animating Rotations and Using Quaternions. What We’ll Talk About Animating Translation Animating 2D Rotation Euler Angle representation 3D Angle problems.
OpenGL: Modeling void DrawPyramid(){ glBegin(GL_TRIANGLES); glVertex3f(0.0, 0.0, 0.0); glVertex3f(0.0, 1.0, 0.0); glVertex3f(0.1, 0.0, 0.0); glVertex3f(0.0,
Computer Graphics I, Fall 2010 OpenGL Transformations.
3D Transformations. Translation x’ = x + tx y’ = y + ty z’ = z + tz P = P’ = T = P’ = T. P tx ty tz xyz1xyz1 x’ y’ z’ 1 x y.
1 Angel: Interactive Computer Graphics 5E © Addison-Wesley 2009 OpenGL Transformations.
Transformations Angel Angel: Interactive Computer Graphics5E © Addison-Wesley
CS552: Computer Graphics Lecture 4: 2D Graphics. Recap 2D Graphics Coordinate systems 2D Transformations o Translation o Scaling o Rotation Combining.
Learning Objectives Affine transformations Affine transformations Translation Translation Rotation Rotation Scaling Scaling Reflection Reflection Shear.
C O M P U T E R G R A P H I C S Guoying Zhao 1 / 73 C O M P U T E R G R A P H I C S Guoying Zhao 1 / 73 Computer Graphics Three-Dimensional Graphics II.
1 OpenGL Transformations. 2 Objectives Learn how to carry out transformations in OpenGL ­Rotation ­Translation ­Scaling Introduce OpenGL matrix modes.
CS559: Computer Graphics Lecture 12: OpenGL - Transformation Li Zhang Spring 2008.
1 Geometric Transformations-II Modelling Transforms By Dr.Ureerat Suksawatchon.
Jinxiang Chai CSCE441: Computer Graphics 3D Transformations 0.
1 Geometric Transformations Modelling Transforms By Dr.Ureerat Suksawatchon.
Geometric Transformations Ceng 477 Introduction to Computer Graphics Computer Engineering METU.
Implement of transformation,projection, viewing Hanyang University Jungsik Park.
CSC Graphics Programming Budditha Hettige Department of Statistics and Computer Science.
Fundamentals of Computer Animation Orientation and Rotation.
Transformation Example. Order of Transformation Matters Scale, translate Scale, translate Translate scale Translate scale Rotate, Translate Rotate, Translate.
학기 Chapter 5. Geometric Transformations 1.
OpenGL Matrices and Transformations Angel, Chapter 3 slides from AW, Red Book, etc. CSCI 6360/4360.
Sílabas con m,p,s tema 2. pe so ma si mu se.
SREČNO NOVO LETO 2009 Lara Koren, 2.c.
Srečko Bončina Izposoja e-knjig eBooks na EBSCOHost-u
Transformations Review 4/18/2018 ©Babu 2009.
Tečaj SPSS in statistike
Camera Position (5.6) we specify the position and orientation of the camera to determine what will be seen. use gluLookAt (eye x, y, z, at x, y, z, up.
Summary of Properties of 3D Affine Transformations
SPACE OF OPPORTUNITIES
Three-Dimensional Graphics
Uvod v Python
R V P 2 Predavanje 04 Animacija RVP2 Animacija.
Fotografiranje hrane Predmet: Tipografija in reprodukcija.
Microsoftove rešitve za šolstvo
Angel: Interactive Computer Graphics5E © Addison-Wesley 2009
MS Excel, Open Office Calc, Gnumeric …
Unit-5 Geometric Objects and Transformations-II
GEOMETRIJSKA TELESA Pripravili: Mojca Vitez, Metka Kuk in Janez Jurančič Študijsko leto: 2016/2017 Kraj in datum: Sežana, maj 2017.
Šalej Mirko Iskraemeco, d.d. Kranj
Referat za NIT Anže Povhe, 4.b
Chapter 4/5 glMatrixMode Modeling Transformations glTranslate glScale
Ela Reven, Katarina urbančič
Ugani število Napišimo program, ki si “izmisli” naključno število, potem pa nas v zanki sprašuje, katero je izmišljeno število. Če število uganemo, nas.
Geometric Transformations
E-mobilnost in njena integracija v elektroenergetski sistem
TERMODINAMIKA / THERMODYNAMICS
Ti:sapphire lasers Ti:Al2O3
Three-Dimensional Graphics
Transformations in OpenGL
Geometric Transformations
Geometric Objects and Transformations (II)
Presentation transcript:

3D transformacije in gledanje

Premikanje predmeta - translacija

Vrtenje – rotacija okrog središča

Vrtenje – rotacija okrog tečaja

Povečava -pomanjšanje v eni smeri Enakomerna povečava

Striženje (shear)

Povečanje 2D transformacij na 3D Primer: 2D skaliranje: [x' y' 1] = [x y 1] * [Sx 0 0] [0 Sy 0] [0 0 1] 3D skaliranje: [x’y’z’1] = [x y z 1]* [Sx 0 0 0 ] [ 0 Sy 0 0 ] [ 0 0 Sz 0 ] [ 0 0 0 1 ] Narišemo samo x in y. 39 36

Homogena predstavitev Transformacija točk in predmetov In order to implement this algorithm we had to address these six issues. Homogena predstavitev

Osnovne 3D afine transformacije Translacija Povečava (scalling) In order to implement this algorithm we had to address these six issues.

Rotacije Okoli osi x: Okoli osi y: Okoli osi z In order to implement this algorithm we had to address these six issues. Okoli osi z

3D Rotacije Okoli osi x Okoli osi y Okoli osi z Opazka: to je enako kot pri 2D rotaciji

Sestavljanje (veriženje): Enako kot v 2D In order to implement this algorithm we had to address these six issues. Sestavljanje rotacij Vrstni red je pomemben 3D matrik vrtenja ne smemo zamenjati

Še nekaj primerov 3D transformacij Zrcaljenje preko ravnine xy Enakomerna povečava Translacija v smeri x

Splošna oblika 3D transformacijske matrike povečava, striženje, vrtenje, zrcaljenje Translacija Perspektivna preslikava s Splošna povečava

Še več o rotacijah

Več o rotacijah oziroma usmeritvi usmeritev

Interpolacija O1 O 1.5 O2

Veriženje O1 O2

Koti rotacije okrog fiksnih osi X Z Y Rx(q1). Ry(q2). Rz(q3). P

Predstavitev fiksnih kotov Koti, za katere zavrtimo predmet okrog fiksnih osi Usmeritve določa množica 3 urejenih parametrov ki predstavljajo urejene rotacije okrog fiksnih osi: najprej okrog x, nato y nato z Več možnih zaporedij, ki ne uporabijo nujno vse 3 osi

Predstavitev fiksnih kotov Vrtenje za 10,45, 90 bi zapisali kot Rz(90) Ry(45), Rx(10), saj hočemo najprej rotacijo okrog, ki jo uporabimo na točki P…. RzRyRx P Do problema pride, če se dve osi vrtenja poravnata med seboj. Temu pojavu pravimo kardanska zapora (“Gimbal Lock”)

Primeri fiksnih kotov rotacije Y Y Rotacija okoli osi z X X Z Z

Primeri fiksnih kotov rotacije Na primer (0,90,0) Y Y X X Z Z

Primeri fiksnih kotov rotacije Y Y X X Z Z

Kardanska zapora (gimbal lock) Poravnanje dveh ali več osi vrtenja predmeta pomeni izgubo prostostne stopnje. Predmet se ne bo vrtel tako, kot smo si zamislili.

Kardanska zapora Vrtenje za kot 90 stopinj okoli osi y v bistvu pomeni, da se prva os vrtenja poravna s tretjo. Inkrementalne spremembe v x,z pripeljejo do enakega rezultata: izgubimo prostostno stopnjo

Eulerjevi koti An Euler angle is a rotation about a single axis. Any orientation can be described composing three rotation around each coordinate axis. Roll, pitch and yaw

Eulerjev teorem Eulerjevi koti, 1, 2, 3 Poljubna rotacija (ali zaporedje rotacij) okrog neke točke je ekvivalentna eni sami rotaciji okrog neke osi skozi to točko. Eulerjevi koti, 1, 2, 3 Poljubno 3D rotacijo lahko dosežemo z vrtenji okoli osi x, y in z

Rotacija točke okrog poljubne osi v 3D Imamo podano: u = vektor enote v smeri osi vrtenja  = kot vrtenja okoli u P Q  x z y P vrtimo v Q u yz xz

Rotacija točke okrog poljubne osi v 3D Q  x z y P vrtimo v Q u yz xz xz = kot, projiciran na ravnino xz yz = kot, projiciran na ravnino yz

Rotacija točke okrog poljubne osi v 3D Imamo podano: u = vektor enote v smeri osi vrtenja  = kot vrtenja okoli u Kjer je c  cos() in s  sin()

Eulerjevi koti Splošna rotacija je kombinacija treh osnovnih rotacij: okoli osi x (x-roll) , okoli osi y (y-roll) in okoli osi z (z-roll).

Eulerjevi koti in matrike vrtenja

Spet naletimo na kardansko zaporo! Rotacija za kot 90o povzroči izgubo prostostne stopnje x y z 1 /2 x’ 3

Interpolacija Eulerjevih kotov nenaravno gibanje !

Cilj Iščemo parametrizacijo, pri kateri Obstaja med dvema ključnima rotacijama preprosta in neomajna rotacija Je gibanje neodvisno od izbire koordinatnega sistema

Kot in os Katerokoli usmeritev lahko podamo s četvorčkom kot, vektor(x,y,z), pri čemer kot pove, za koliko se zavrtimo okoli osi, ki jo definira vektor Ločeno lahko interpoliramo tako kot kot os Ni problemov s kardansko zaporo! Ne moremo pa učinkovito sestavljati rotacij. Moramo najprej pretvoriti v matrično obliko!

Kot in os (Ax,Ay,Az,q) A Y q Z X Eulerjev rotacijski teorem

Kot in os (Ax,Ay,Az,q) A1 q1 Y A2 q2 Z X Eulerjev rotacijski teorem

Kvaternioni

Kvaternioni q =[s,v] =[s,x,y,z] A q (cos(q/2),sin(q/2)*A)

Kvaternioni Razširjajo koncept rotacij iz 3D na 4D. Izognejo se problemu “kardanske zapore” in omogočajo mehke in zvezne rotacije. V bistvu lahko smatramo, da dodajo še en kot vrtenja sferičnim koordinatam (na primer kotom Longitude (zemljepisna dolžina), Latitude (zemljepisna širina) in Rotation) Kvaternion je definiran s 4 realnimi števili |x y z w|. Ta izračunamo s kombinacijo treh koordinat osi vrtenja in kota vrtenja.

Kakšno zvezo imajo kvaternioni in 3D animacija? Rešitev problema s “kardansko zaporo" Namesto vrtenja predmeta z zaporedjem rotacij omogoča kvaternion vrtenje predmeta preko ene same poljubne osi. Ker je os vrtenja podana kot enotin vektor, lahko uporabimo vektorsko matematiko ali sferične koordinate (longitude/latitude). Interpolacija kvaternionov: mehko in napovedljivi učinki rotacije.

Motivacija Iskanje najbolj naravnega in kompaktnega načina za predstavitev rotacij in usmeritev Interpolacija usmeritve, ki vodi v naravno gibanje Zaključena matematična oblika, ki obravnava rotacije in usmeritve (razširitev kompleksnih števil)

Definicija kvaternionov Razširitev kompleksnih števil Četvorčki realnih števil s,x,y,z ali [s,v] s je skalar v je vektortor Isti podatki kot pri podajanju kota in osi, vendar v drugi obliki Lahko gledamo kot na originalno usmeritev ali kot na rotacijo nekega predmeta

Od kvaternionov k matriki vrtenja

Matematika s kvaternioni Točka v prostoru je podana tako: Multiplikativna identiteta Pri čemer velja Kvaternion enotne dolžine

Lastnosti kvaternionov Konjugacija in absolutna vrednost sta podobni kot pri kompleksnih številih Kvaternioni niso komutativni q1 = (s1,v1) q2 = (s2,v2) q1*q2 = (s1s2 – v1.v2 , s1v2 + s2v1 + v1 x v2) Inverzna vrednost: Kvaternion enote:

Rotacija s kvaternioni S pomočjo kvaternionske matematike želimo vrteti vektor v Vektor predstavimo kot [0,v] Rotacijo s pomočjo kvaternionov predstavimo kot q

Rotacija s kvaternioni Rotacija P=(0,r) okrog vektorja enote n za kot θ s pomočjo enotnega kvaterniona q=(s,v) toda q=(cos½θ, sin½θ•n) kjer je |n|=1

Rotacija s kvaternioni Veriženje rotacij – rotacija s pomočjo q1 nato z uporabo q2 je kot rotacija z uporabo q2*q1

Rotacije v praksi Rotacije najlažje izrazimo v Eulerjevih kotih ali kot pare os-kot Med različnimi vrstami predstavitev lahko prehajamo (jih pretvarjamo) Izberemo tisto predstavitev, ki je za dano nalogo najbolj primerna Vnos podatkov:Eulerjevi koti interpolacija: kvaternioni Sestavljanje rotacij: kvaternioni, matrika usmeritve

Dodatna gradiva, vezana na OpenGL

Trije načini uporabe transformacij Brute Force: Calculate 2D or 3D transformation matrices then perform Q = M P and draw Q points Using glMatrixMult: Calculate 3D transformation matrices, then glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMatrixMultd(M); glMatrixMultd(N); Draw P points Using Opengl transformations: Calculate 3D transformation matrices, then glRotated(angle, 0,0,1); glTranslated(dx,dy,dz); glScaled(sx,sy,sz);

OpenGL transformacije Transformacije OpenGL lahko izvedemo bodisi na matriki modelview ali na projekcijski matriki Tekočo matriko nastavimo na modelview ali na projection z naslednjim ukazom: glMatrixMode(GL_MODELVIEW) or glMatrixMode(GL_PROJECTION)

Uporaba glMatrixMult glMatrixMult{fd}(const TYPE*M) Pri tem je Vse matrike in točke izrazimo v 3D Izračunamo vsak element transformacijske matrike in to shranimo v enodiman zionalno polje M[16] CT = CT*M Nrišemo originalne točke P

Primer … Izračunamo transformacijsko matriko M void myDisplay(void) { Uporabimo MatrixMult za posodobitev CT Narišemo točke P void myDisplay(void) { Point p[10], pl[4]; double M[16], M1[16]; int i; // data p[0].x = -1.0; p[0].y = 3.0; p[0].z = 0.0; p[0].r = 1; p[1].x = -1; p[1].y = -2; p[1].z = 0; p[1].r = 1; …

//transformation matrix 0 by column M[0] = cos(10*3.14159/180); M[1] = -sin(10*3.14159/180); M[2] = 0; M[3] = 0; M[4] = sin(10*3.14159/180); M[5] = cos(10*3.14159/180); M[6] = 0; M[7] = 0; M[8] = 0; M[9] = 0; M[10] = 1; M[11] = 0; M[12] = 0; M[13] = 0; M[14] = 0; M[15] = 1; //transformation matrix 1 by column M1[0] = 1; M1[1] = 0; M1[2] = 0; M1[3] = 0; M1[4] = 0; M1[5] = 1; M1[6] = 0; M1[7] = 0; M1[8] = 0; M1[9] = 0; M1[10] = 1; M1[11] = 0; M1[12] = 3; M1[13] = 2; M1[14] = 0; M1[15] = 1;

//draw transformed shape CT = CT(M)(M1) glColor3f(1.0,0.0,1.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMatrixMultd(M); glMatrixMultd(M1); glBegin(GL_POLYGON); for(i=0;i<10;i++) glVertex2d(p[i].x,p[i].y); glEnd(); glFlush(); } Opazka: rišemo originalne točke P, ne transformiranih točk Q, ker je matrika Modelview avtomatično uporabljena na vseh P točkah

Transformacije OpenGL glRotated (angle, 0,0,1) glTranslated (dx,dy, dz) glScaled (sx,sy,sz) Naknadno množenje trenutne transformacijske matrike CT = CT*Rotate*Translate*Scale Pripelje do Q(x,y,z) = CT*Rotate*Translate*Scale*P(x,y,z) Isti vrstni red kot pri MatrixMult

Shranjevanje CT za kasnejšo uporabo Po več zaporednih matričnih množenjih se lahko kopičijo napake zaokrožanja Morda si želimo povratka na prejšnji CT For(I=0; I<num; I=++) { glPushMatrix(); //remember the CT glTranslate (…); glRotate(…); drawfigure(); glPopMatrix(); //restore the CT }

Nastavitev kamere v OpenGL za paralelne projekcije glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(left,right,bottom, top, near,far); Volumen gledanja (view volume) postavimo z definiranjem parametrov left, right, bottom, top, near, far

Pozicioniranje in usmeritev kamere glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt (eye.x,eye.y,eye.z,look.x,look.y,look.z,up.x,up.y,up.z); To nastavimo pred uporabo transformacij.