Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve...

41
Računarska grafika - OpenGL 22.11.2007. Pogled u 3D OpenGL Čas 2 Pogled u 3D

Transcript of Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve...

Page 1: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

OpenGL

Čas 2

Pogled u 3D

Page 2: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

2

Crtanje i bojenje primitiva -shapes.exe

Page 3: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

3

Koordinatni sistemi

x

y

z

x

y

z

Levi Desni

(1,1,1)(1,1,-1)

DirectX OpenGL

Page 4: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

4

Analogija• modeliranje

• pogled (stajna tačka)

• projekcija

• preslikavanje na ekran

Page 5: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

5

3D PipelineSCENA/OBJEKTI

3D MODELIRANJE

3D ODSECANJE

PROJEKCIJA

RASTERIZACIJA

2D PRIKAZ

Koordinate modeliranja:- Svetski koordinatni sistem (world), - Koordinatni sistem objekta (object)

Koordinate kamere

Prozorske koordinate (pogled)

Koordinate uređаја (device)

POGLED

Page 6: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

6

Modeliranje

3D Modeliranje

Parametarsko

Poligonalno

Čestice

Implicitno

2222 rzyx =++

θθ2

4cossin

==

yx

Page 7: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

7

Clipping

Vidljivi prostor

Objekat vanvidljivog prostora

Page 8: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

8

Pogled i projekcija

viewport

3D modeliPostavljanje kamere

Page 9: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

9

Rasterizacija

Page 10: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

10

Vertex Geometry Pipeline

MODELVIEWmatrix

PROJECTIONmatrix

perspectivedivision

viewporttransformation

wzyx

eye

eye

eye

eye

wzyx

1dev

dev

yx

proj

proj

proj

wyx

win

win

yx

originalnoteme

zadatohomogenim

koordinatamateme u

eye koordinatama

2D projekcijatemena na

ravan gledanja

normalizovane devicekoordinate

(skraćivanje udaljenih predmeta)

finalne prozorskekoordinate

Page 11: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

11

Osnovne matrične operacije• void glMatrixMode(GLenum mode);

– definiše koju od matrica treba modifikovati, može biti: GL_MODELVIEW, GL_PROJECTION ili GL_TEXTURE

• void glLoadIdentity(void);– učitava jediničnu matricu u tekuću matricu C , tj C = I

• void glLoadMatrix{fd}(const TYPE *m);– smešta matricu M u tekuću C , tj C = M

• void glMultMatrix{fd}(const TYPE *m);– množi tekuću matricu C matricom M i to smešta u tekuću C = CM

• void glLoadTransposeMatrix{fd}(const TYPE *m);• void glMultyTransposeMatrix{fd}(const TYPE *m);

Page 12: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

12

Zadavanje matrice u “uobičajenom” obliku

double matrix[4][4] = { {1.0, 0.0, 0.0, 0.0},{0.0, 1.0, 0.0, 0.0},{0.0, 0.0, 1.0, -3.0},{0.0, 0.0, 0.0, 1.0}};

Transpose(matrix);glMultMatrixd((double*)matrix);

⇔ glTranslatef(0.0,0.0,-3.0);

Page 13: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

13

Viewing & Modelingtransformacija

Osnovne transformacije:

• translacija void glTranslate{fd}(TYPEx, TYPE y, TYPE z);

• rotacija void glRotate{fd}(TYPE angle, TYPE x, TYPE y, TYPE z);

• skaliranje void glScale{fd}(TYPEx, TYPE y, TYPE z);

Ne postoji razlika između transformacija modeliranja i pogleda. Zato se i tretiraju zajedno. Npr. pomeranje kamere za 9 jedinica unazad (pozitivan smer Z-ose), isto je što i pomeranje scene za 9 jedinica unapred (negativan smer Z-ose). Zato ćemo poslednje transformacije, kojima se pomeraju svi objekti na sceni smatrati transformacijama pogleda.

Page 14: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

14

Translacija

czzbyyaxx

+=′+=′+=′

=

+++

=

′′′

11000100010001

11zyx

cba

czbyax

zyx

Translacija duž Y oseglTranslate*(a, b, c)

Page 15: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

15

Rotacija

Rotacija od 45o oko Z ose

Rotacija nakon translacija

=

100000000001

θθθθ

cossinsincos

xR

=

100001000000

θθθθ

cossinsincos

zR

−=

100000001000

θθ

θθ

cossin

sincos

yR

( )( ) ( ) ( ) ( )θθθ

θθθθ TRRR =−=⇒

−=−=− −1

sinsincoscos

Ako je M -1 = MT tada je M ortogonalna.Sve ortogonalne matrice su rotacije okokoordinatnog početka.

glRotate*(θ, x, y, z)

Page 16: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

16

Rotacija - izvođenje

cos ( ) cos cos sin sin θ φ θ φ θ φ+ = −( ) ( ) ( ) ( )sin ( ) sin cos cos sin θ φ θ φ θ φ+ = +( ) ( ) ( ) ( )

P

Q

R PX

PYφ

θ

[1][2]

[3][4]

[1] )( )( )( )( φθφθ sinsincoscos RRxQ −=

Zamenom iz [3] i [4]…

)( )( θθ sincos yPxPxQ −=

Slično iz [2]…

)( )( θθ sincos xPyPyQ +=

)Rcos( QX φθ += )Rsin( Qy φθ +=

)(cosR PX φ= )(sinR Py φ=

Page 17: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

17

Skaliranje

Original Skaliranje po svim osama Skaliranje po Y osi

Translacija Skaliranje nakon translacije

=

=

′′′′

wzyx

ss

s

wzsysxs

wzyx

z

y

x

z

y

x

1000000000000

glScale*(sx, sy, sz)

Page 18: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

18

Demonstracija efekata transformacija

transformation.exe

Page 19: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

19

Kombinovanje transformacija

glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMultMatrixf(N); /* apply transformation N */glMultMatrixf(M); /* apply transformation M */glMultMatrixf(L); /* apply transformation L */ glBegin(GL_POINTS);

glVertex3f(v); /* draw transformed vertex v */ glEnd();

glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glMultMatrixf(T); /* translation */ glMultMatrixf(R); /* rotation */ draw_the_object();

I → N → NM → NML → NMLv → N(M(Lv))

Page 20: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

20

Dva pogleda na transformacije• Svetski (globalni) koordinatni sistem

– operacije se navode u obrnutom redosledu i definišu položaj objekta u odnosu na globalni koordinatni sistem

• Lokalni koordinatni sistem– operacije se navode u redosledu kojom se

primenjuju, ali one transformišu lokalni koordinatni sistem, a sve operacije se obavljaju u lokalnom koordinatnom sistemu.

Page 21: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

21

Korišćenje gluLookAt() funkcije za definisanje view transformacije

void gluLookAt( GLdouble eyex, GLdouble eyey, GLdouble eyez,

GLdouble centerx, GLdouble centery, GLdouble centerz,

GLdouble upx, GLdouble upy, GLdouble upz );

eyex, eyey, eyez – pozicija posmatrača

centerx, centery, centerz – pozicija tačke posmatranja

upx, upy, upz – vektor vertikale

Page 22: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

22

Projekcije

Planarne geometrijske projekcije

Paralelne

Perspektivne

Ortografske

Oblique

Sa jednom tačkomSa dve tačkeSa tri tačke

GornjaPrednjaBočnaAksonometrijske

CabinetCavalierOstale

IzometrijskeOstale

Page 23: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

23

Perspektivna projekcijaglFrustum(l, r, b, t, n, f )

void glFrustum( GLdouble left,GLdouble right, GLdoublebottom, GLdouble top, GLdoubleznear, GLdouble zfar );

Page 24: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

24

void gluPerspective(fovy, aspect, zNear, zFar);

2tan2

2tan2 θθ nearh

nearh

=⇒=

void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);

Page 25: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

25

Primer računanja ugla posmatranja

#define PI 3.1415926535double calculateAngle(double size, double distance) {

double radtheta, degtheta;radtheta = 2.0 * atan2 (size/2.0, distance);

degtheta = (180.0 * radtheta) / PI;return (degtheta);

}

Page 26: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

26

Standardna sočiva• 48.24 mm – ekvivalent ljudskog vida• širokougaona sočiva (obuhvataju veću scenu – umanjuju prikaz) <50mm

– 35 mm i 28 mm – standardna širokougaona sočiva– 10-15 mm – “riblje oko” (sverno sočivo), velika distorzija

• telefoto sočiva (uvećavaja prikaz, približavaju udaljene objekte) >50mm

Sočivo FOV

15 mm 100.389

20 mm 83.974

24 mm 73.74

28 mm 65.47

35 mm 54.432

50 mm 39.598

85 mm 23.913

135 mm 15.189

200 mm 10.286

Koristiti FOV u opsegu:

30-60o,za realne scene, da ne bi došlo do distorzije.

Page 27: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

27

Primer korišćenja različitih sočiva

10mm Lens (fov = 122°) 20mm Lens (fov = 84°)

35mm Lens (fov = 54°) 200mm Lens (fov = 10°)

Page 28: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

28

Demonstracija efekata perspektive

projection.exe

Page 29: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

29

Ortografska projekcija

==⇒

1000000000100001

where

10

1

MMPPyx

zyx

Najjednostavnija od svih projekcija. Paralelno projektuje objekte na projekcionu ravan (obično z = 0).

Page 30: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

30

Ortografska projekcijaglOrtho(l, r, b, t, n, f )

void glOrtho( GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far );

Page 31: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

31

Viewporttransformacija

(l,b,-n)

(r,t,-n)

(w,h,-n)

(-w,-h,-n)ahw

fnh

⋅=

⋅=2

tan

glFrustrum(l,r,b,t,n,f)⇒

gluPerspective(f,a,n,far)⇒

Projekciona matrica vrši preslikavanje 3D svetskih koordinata u 2D koordinate pogleda, i to:

Page 32: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

32

Viewporttransformacija

normalizovane devicekoordinate

prozorske koordinate

12

12

minmax

min

minmax

min

−−

=

−−

=

yyyy

y

xxxx

x

pn

pn

( ) ( ) yheight

xwidth

+

+=+

+=

21

21 nwnw yyxx

Normalizacija na opseg [-1, +1]

Preslikavanje na prozor [ (0,0) .. (width,height) ]

Page 33: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

33

Viewporttransformacija

void glViewport(GLint x, GLint y, GLsizei width, GLsizei height);

(x, y) definiše donji levi ugao pogleda, a width i height veličinu pravougaonika

Page 34: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

34

Aspekt

aspect ratio = 1.25 aspect ratio = 0.5

Aspekt definiše odnos širine i visine slike. Viewport aspekt mora biti jednak gluPerspective aspektu, inače dolazi do distorzije.

Page 35: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

35

Upravljanje stekom matricaglGetIntegerv(GL_MAX_MODELVIEW_STACK_DEPTH )

glGetIntegerv(GL_MAX_PROJECTION_STACK_DEPTH )

Page 36: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

36

glPushMatrix & glPopMatrix

draw_wheel_and_bolts() {

long i;draw_wheel();for(i=0;i<5;i++){

glPushMatrix();glRotatef(72.0*i,0.0,0.0,1.0);glTranslatef(3.0,0.0,0.0);draw_bolt();

glPopMatrix();}

}

draw_body_and_wheel_and_bolts() {draw_car_body();glPushMatrix();

/*move to first wheel position*/glTranslatef(40,0,30);draw_wheel_and_bolts();

glPopMatrix();glPushMatrix();

/*move to 2nd wheel position*/glTranslatef(40,0,-30);draw_wheel_and_bolts();

glPopMatrix();/*draw last two wheels similarly*/...

}

Page 37: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

37

Dodatne Clipping ravni

void glClipPlane(GLenum plane, const GLdouble *equation);plane – GL_CLIP_PLANE i , equarion = {A, B, C, D}

Jednačina ravni: Ax+By+Cz+D = 0, odsečci na osama (x, y, z, respektivno): a = -D/A, b = -D/B, c = -D/C

Sve tačke se eye koordinatama (xe, ye, ze, we) koje zadovoljavaju nejednakost:

(A B C D) M- 1 (xe ye ze we)T >= 0 leže u vidljivom poluprostoru, gde je M tekuća modelview matrica u trenutku kada je pozvana funkcija glClipPlane().

glEnable(GL_CLIP_PLANE i ); glDisable(GL_CLIP_PLANE i );

Page 38: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

38

Primer clip-ravniGLdouble eqn[4] = {0.0, 1.0, 0.0, 0.0}; /* y < 0 */ GLdouble eqn2[4] = {1.0, 0.0, 0.0, 0.0}; /* x < 0 */

glClear(GL_COLOR_BUFFER_BIT);

glColor3f (1.0, 1.0, 1.0); glPushMatrix(); glTranslatef (0.0, 0.0, -5.0);

glClipPlane (GL_CLIP_PLANE0, eqn); glEnable (GL_CLIP_PLANE0); glClipPlane (GL_CLIP_PLANE1, eqn2); glEnable (GL_CLIP_PLANE1);

glRotatef (90.0, 1.0, 0.0, 0.0); auxWireSphere(1.0); glPopMatrix(); glFlush();

Page 39: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

39

Kombinovanje transformacijaPrimeri

• Planet.c (exe)• Robot.c (exe)• Glos.h

Page 40: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

40

GLUT pre-built models sub-API

• GLUTAPI void APIENTRY glutWireSphere(GLdouble radius, GLint slices, GLint stacks);• GLUTAPI void APIENTRY glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);• GLUTAPI void APIENTRY glutWireCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);• GLUTAPI void APIENTRY glutSolidCone(GLdouble base, GLdouble height, GLint slices, GLint stacks);• GLUTAPI void APIENTRY glutWireCube(GLdouble size);• GLUTAPI void APIENTRY glutSolidCube(GLdouble size);• GLUTAPI void APIENTRY glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides,

GLint rings);• GLUTAPI void APIENTRY glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint sides,

GLint rings);• GLUTAPI void APIENTRY glutWireDodecahedron(void);• GLUTAPI void APIENTRY glutSolidDodecahedron(void);• GLUTAPI void APIENTRY glutWireTeapot(GLdouble size);• GLUTAPI void APIENTRY glutSolidTeapot(GLdouble size);• GLUTAPI void APIENTRY glutWireOctahedron(void);• GLUTAPI void APIENTRY glutSolidOctahedron(void);• GLUTAPI void APIENTRY glutWireTetrahedron(void);• GLUTAPI void APIENTRY glutSolidTetrahedron(void);• GLUTAPI void APIENTRY glutWireIcosahedron(void);• GLUTAPI void APIENTRY glutSolidIcosahedron(void);

Page 41: Čas 2 Pogled u 3D - etf.unssa.rs.baognjen/Racunarska grafika/OpenGL/Prezentacije... · Sve ortogonalne matrice su rotacije oko ... Dva pogleda na transformacije • Svetski ... Izometrijske.

Računarska grafika - OpenGL

22.11.2007.

Pogled u 3D

41

Domaći

1. Formirati funkciju DrawWall(), koja iscrtava kvadratstranice dužine a, u koordinatnom početku korišćenjemGL_QUADS. Implementirati i funkciju DrawWalls(),koja iscrtava bar dva zida i pod korišćenjem prethodnefunkcije.

2. Formirati funkciju DrawLamp(), koja iscrtava postoljelampe (dva kraka koji se oslanjaju jedan na drugi).

3. Proširiti funkciju DrawLamp(), dodavanjem iscrtavanje«glave» lampe (predlog je da se ona iscrtava u posebnojfunkciji DrawLampTop() ).

4. Omogućiti rotaciju pojedinih delova lampe.

Dopuniti prvu lab. vežbu iz OpenGL-a sledećim funkcijama.