opengl_lttam_4

Upload: tham-nguyen

Post on 12-Jul-2015

118 views

Category:

Documents


0 download

TRANSCRIPT

Lp trnh OpenGL cn bn L Thanh Tm

Lp trnh OpenGL cn bn (P4)Tc gi: L Thanh Tm Email: [email protected] Mc tiu: Cung cp kin thc cn bn v OpenGL v i hi ngi c c kin thc v ha 3D. Ni dung: i tng 3D, Illumination, Shading ( ngh: c thm phn l thuyt trong OpenGL Red Book chapter 5 www.glprogramming.com/red)

i tng 3D c h tr trong GLUT:Mt s i tng c h tr sn nh: glutSolidSphere glutSolidTorus glutSolidTeapot (Thay Solid bng Wire) Bi tp V m hnh v cc i tng nh sau: Hnh cu: glutSolidSphere(100, 72, 36) Pyramid nh hm DrawPyramid() c cung cp bit nh ca kim t thp : (0,0,-150) Dng Camera mc nh, tc v tr camera ta (0,0,0), nhn xung t trc Z ( camera trong hnh cu)

Cu hi: Gi s khng c thay i camera, s dng cc php transform c th nhn thy c sphere v pyramid. //on code v Pyramid

Trn Thi Sn L Thanh Tm

Trang 1

Lp trnh OpenGL cn bn L Thanh Tm

Hnh minh ha v tr khng gian ca sphere & pyramid (hnh chuyn viewport, mc nh theo yu cu trn th pyramid pha sau ca sphere)

M hnh chiu sng (Illumination)Gm 3 thnh phn chnh c m hnh ring bit Ambient Diffuse Specular Ngoi ra, cn 1 thnh phn ng gp vo m hnh chiu sng l emission (nhng c m hnh bng 1 hng s)

Trn Thi Sn L Thanh Tm

Trang 2

Lp trnh OpenGL cn bn L Thanh Tm

M hnh chiu sng l tng hp ca 4 thnh phn trn. Khi c nhiu ngun sng, th m hnh chiu sng trong OpenGL n gin l tng ca tt cm m hnh chiu sng ca cc ngun sng n. Ambient / Diffuse / Specular

Ambient + Diffuse / Diffuse + Specular / Ambient + Diffuse + Specular

Thit lp cc tham s cho ngun sng Thit lp Ambient glLightfv(GL_LIGHT0, GL_AMBIENT, floatArray4D) Thit lp Diffuse glLightfv(GL_LIGHT0, GL_DIFFUSE, floatArray4D) Thit lp Specular glLightfv(GL_LIGHT0, GL_SPECULAR, floatArray4D) Thit lp v tr ngun sngTrn Thi Sn L Thanh Tm Trang 3

Lp trnh OpenGL cn bn L Thanh Tm

glLightfv(GL_LIGHT0, GL_POSITION, floatArray4D) 3 tham s u l v tr trong khng gian, tham s th 4 l 0 thit lp hng chiu sng theo vector l 3 tham s u.

Thit lp cho vt thS dng hm glMaterialfv: cch dng tng t nh hm glLightfv, thay ngun sng GL_LIGHT0 bng GL_FRONT x l cho b mt vt th, 2 tham s cn li tng t. Ghi ch: s dng th phi bt GL_LIGHTING, GL_LIGHT0 trong glEnable. Khi bt GL_LIGHTING th hm glColorXY s khng s dng c. Bt GL_NORMALIZE normalize cc normal vector khi p dng chiu sng c s dng cc php transform (do transform s nh hng n c normal vector ca cc vertex) B sung: glFrontFace(GL_CW/ GL_CCW) xc nh b mt ca vt th. Mc nh s dng GL_CCW. Thit lp Shading trong OpenGL o B1: Bt Lighting, light, lighting mode (FLAT hay SMOOTH) o B2: Thit lp tnh cht vt th o B3: Thit lp v tr ngun sng o B4: Thit lp normal vector cho cc vt th. Nhc li: Xc nh shade mode glShapeMode(GL_FLAT) // normal vector cho tt c cc im ca mt phng glShapeMode(GL_SMOOTH) // normal vector theo cc vertex (m hnh Gouraud) Bi tp: S dng ngun sng cho cc vt th c nh ngha sn GLUT: Sphere v Teapot

Trn Thi Sn L Thanh Tm

Trang 4