520 likes | 625 Vues
Loaïi boû ñöôøng vaø maët khuaát. Chöông 10. Quan saùt trong 3D duøng camera giaû laäp. Camera giaû laäp (synthetic camera) goàm Maët phaúng quan saùt (viewplane) cuøng vôùi moät cöûa so å (window) trong ñoù Heä toïa ñoä quan saùt (viewing coordinate system)
E N D
Loaïi boû ñöôøng vaø maët khuaát Chöông 10
Quan saùt trong 3D duøng camera giaû laäp • Camera giaû laäp (synthetic camera) goàm • Maët phaúng quan saùt (viewplane) cuøng vôùi moät cöûa soå (window) trong ñoù • Heä toïa ñoä quan saùt (viewing coordinate system) • Quy öôùc: heä toïa ñoä quan saùt laø moät heä baøn tay traùi • Con maét • Chöùc naêng • Con maét nhìn qua cöûa soå vaø thaáy ñöôïc moät phaàn cuûa theá giôùi, ñoù laø phaàn caàn ñöôïc veõ. • Kyù hieäu: • Heä UVN chæ heä toïa ñoä quan saùt • quan saùt = nhìn
Moâ taû camera giaû laäp • Ñaëc taû camera giaû laäp, xem slide tôùi • trong heä toïa ñoä toaøn caàu (world coordinates) • Ñieåm quy chieáu cuûa quan saùt, VRP (view reference point) • r = (rx, ry, rz) • Vector thaúng goùc cuûa maët phaúng quan saùt, VPN (viewplane normal) • n = (nx, ny, nz), laø moät vector ñôn vò • Vector ñôn vò cuûa truïc V laø v (vector “höôùng leân”) • trong heä toïa ñoä quan saùt UVN • Cöûa soå, coù toïa ñoä trong maët UV laø (Wl , Wt , Wr , Wb ) • Con maét, coù toïa ñoä laø (eu , ev , en).
Heä toïa ñoä quan saùt vaø heä toïa ñoä toaøn caàu cöûa soå V U VPN (viewplane normal) z v u n N r VRP (view reference point) x y
Bieåu dieãn ñoái töôïng trong heä toïa ñoä quan saùt • Cho ñieåm P coù toïa ñoä (x, y, z) trong heä toïa ñoä toaøn caàu (world coordinates). Tìm toïa ñoä cuûa P trong heä toïa ñoä quan saùt! • Lôøi giaûi • Ñaët • thì
Bieåu dieãn ñoái töôïng trong heä toïa ñoä quan saùt • (tieáp) • Neáu P coù toïa ñoä (a, b, c) trong heä toïa ñoä quan saùt thì • (x, y, z) = (a, b, c) M + r . • Töø treân • (a, b, c) = (p-r) M-1
Bieåu dieãn ñoái töôïng trong heä toïa ñoä quan saùt (tieáp) • Tìm ma traän daïng toïa ñoä ñoàng nhaát: • (a, b, c, 1) = (x, y, z, 1) • Duøng • (a, b, c) = (p-r) M-1 = pMT-rMT • vaø ñaët • Tìm ñöôïc r’ = (-r u, -r v, -r n)
V x Wt N Wl y Wr z U maét e Wb Pheùp chieáu phoái caûnh • Ñaëc taû pheùp chieáu phoái caûnh (caùc toïa ñoä ôû ñaây ñeàu laø trong heä UVN) • taâm cuûa pheùp chieáu: con maét taïi e = (eu , ev , en ) • maët phaúng chieáu: maët phaúng quan saùt UV
Pheùp chieáu phoái caûnh (tieáp) • Tìm aûnh (u*, v*) cuûa p = (pu , pv , pn ) döôùi pheùp chieáu! • Ñöôøng thaúng qua maét vaø p (tia chieáu) coù bieåu dieãn tham soá • r(t) = e(1 -t) + pt • goïi t’ laø trò cuûa tham soá taïi ñoù tia chieáu caét maët phaúng quan saùt, thì • [r(t’)]n = 0, töùc laø • en(1 -t’) + pnt’ = 0. • Vaäy
Pheùp chieáu phoái caûnh (tieáp) • vôùi u* = [r(t’)]u vaø v* = [r(t’)]v ta tìm ñöôïc • Tröôøng hôïp maét naèm treân truïc N thì eu = ev = 0, khi ñoù töø bieåu thöùc treân coù ñöôïc
Ñoä saâu giaû • Ñoä saâu giaû (pseudodepth) • Khi maét naèm treân truïc N • Khi en < 0, thì ñoä saâu giaû taêng ñôn ñieäu theo pn (“ñoä saâu thöïc”), nghóa laø • Vôùi moïi caëp ñieåm p1 = (pu,1 , pv,1 , pn,1 ) vaø p2 = (pu,2 , pv,2 , pn,2 ) • pn, 1<pn, 2 n*1 < n*2
Pheùp bieán ñoåi phoái caûnh • Pheùp bieán ñoåi phoái caûnh (perspective transformation) • (caån thaän: phaân bieät vôùi pheùp chieáu phoái caûnh!) • tröôøng hôïp maét naèm treân truïc N, laø aùnh xaï • tröôøng hôïp maét naèm ngoaøi truïc N: töông töï toïa ñoä ñieåm chieáu trong maët nhìn ñoä saâu giaû
Pheùp bieán ñoåi phoái caûnh (tieáp) • Nhaéc laïi pheùp bieán ñoåi phoái caûnh
Pheùp bieán ñoåi phoái caûnh (tieáp) • Xaùc ñònh ma traän daïng toïa ñoä ñoàng nhaát cuûa pheùp bieán ñoåi phoái caûnh daïng toïa ñoä ñoàng nhaát cuûa p* ma traän daïng toïa ñoä ñoàng nhaát cuûa pheùp bieán ñoåi phoái caûnh
Pheùp bieán ñoåi phoái caûnh (tieáp) • Ma traän daïng toïa ñoä ñoàng nhaát cuûa pheùp bieán ñoåi phoái caûnh
Pheùp bieán ñoåi phoái caûnh (tieáp) • Tröôøng hôïp maét khoâng naèm treân truïc N • tröôït (shearing)
Clipping ñöôøng ñoái vôùi theå tích nhìn • Theå tích quan saùt (= theå tích nhìn, view volume) laø hình choùp cuït giôùi haïn bôûi • hình choùp xaùc ñònh bôûi con maét vaø cöûa soå • maët tröôùc (front plane): maët phaúng n = F • maët löng (back plane): maët phaúng n = B maët tröôùc: n = F maët sau: n = B V Wt Wl N Wr Wb U maët phaúng nhìn
Clipping ñöôøng ñoái vôùi theå tích nhìn (tieáp) • Ñeå yù laø neáu maét ôû voâ cöïc thì hình choùp cuït trôû thaønh hình hoäp. Khi ñoù pheùp chieáu laø pheùp chieáu song song theo moät höôùng e. • Chæ caùc thaønh phaàn cuûa caûnh quan naèm trong theå tích nhìn laø ñöôïc hieån thò; caùc thaønh phaàn khaùc seõ ñöôïc xeùn maát.
Töø theå tích nhìn ñeán thieát bò hieån thò maët tröôùc maët sau V Wt Wl N Wr Wb U maët phaúng nhìn V NDC Wt U Wl Wr Wb
Prewarping • Prewarping laø pheùp bieán ñoåi affine coù ma traän daïng ñoàng nhaát • Tính chaát: prewarping aùnh xaï theå tích nhìn thaønh theå tích nhìn ñaõ ñöôïc prewarped theå tích nhìn ñaõ ñöôïc prewarped theå tích nhìn V V Wt Wt B F N N Wb Wb : truïc U
Theå tích nhìn ñöôïc chuaån hoùa • Theå tích nhìn ñöôïc chuaån hoùa laø hình khoái xaùc ñònh bôûi vuøng nhìn trong NDC vaø ñoä saâu 1. V N 1 Vt Vb Vl U Vr vuøng nhìn
Pheùp bieán ñoåi chuaån hoùa • Pheùp bieán ñoåi chuaån hoùa (normalization transformation) • pheùp bieán ñoåi affine aùnh xaï theå tích nhìn ñaõ ñöôïc prewarped thaønh theå tích nhìn ñaõ ñöôïc chuaån hoùa theå tích nhìn ñaõ ñöôïc chuaån hoùa: theå tích nhìn ñaõ ñöôïc prewarped: V V N Wt pheùp bieán ñoåi chuaån hoùa 1 Vt Vb N Vl U Vr Wb vuøng nhìn
Pheùp bieán ñoåi chuaån hoùa (tieáp) • Pheùp bieán ñoåi chuaån hoùa (normalization transformation) coù ma traän daïng toïa ñoä ñoàng nhaát • trong ñoù
Töø theå tích nhìn ñeán theå tích nhìn ñaõ ñöôïc chuaån hoùa • Ma traän daïng toïa ñoä ñoàng nhaát cuûa pheùp bieán ñoåi affine aùnh xaï theå tích nhìn thaønh theå tích nhìn ñaõ ñöôïc chuaån hoùa V V N N 1 Wt Vt Vb U Vl U Vr Wr vuøng nhìn cöûa soå
Bieán ñoåi toång theå • Ma traän bieán ñoåi toång theå • aùnh xaï toïa ñoä toaøn caàu cuûa moät ñieåm thaønh toïa ñoä trong heä toïa ñoä nhìn • aùnh xaï theå tích nhìn (view volume) thaønh theå tích nhìn ñaõ chuaån hoùa (normalized view volume)
Clipping • Chæ caùc thaønh phaàn cuûa caûnh quan naèm trong vuøng quan saùt (theå tích nhìn) laø ñöôïc hieån thò; caùc thaønh phaàn khaùc seõ ñöôïc xeùn maát. • Do ñoù caùc caïnh cuûa ñoái töôïng ñöôïc xeùn (clipped) ñoái vôùi • theå tích nhìn, hoaëc • theå tích nhìn ñaõ ñöôïc prewarped, hoaëc • theå tích nhìn ñaõ ñöôïc chuaån hoùa • Caùc caïnh ñaõ ñöôïc xeùn ñöôïc aùnh xaï vaøo vuøng nhìn, vaø ñöôïc hieån thò duøng LineNDC( ).
Moâ hình löôùi ña giaùc • Moät löôùi ña giaùc (polygonal mesh, mesh) goàm • taäp caùc ñænh • taäp caùc maët laø caùc ña giaùc ñöôïc ñònh nghóa töø taäp caùc ñænh ôû treân. • Ñònh nghóa: Moät ña dieän (polyhedron) laø moät löôùi ña giaùc lieân thoâng maø caùc maët laø caùc ña giaùc ñôn sao cho moãi caïnh laø caïnh chung cuûa ñuùng hai maët.
Moâ hình löôùi ña giaùc: ví duï • Moät moâ hình löôùi ña giaùc cho hình truï #1 1 2 Face number Vertices 1 1 3 2 2 6 2 3 4 3 1 5 4 3 4 4 5 6 5 1 2 6 5 #2 3 #3 #5 5 6 4 #4
Caáu truùc döõ lieäu cho löôùi ña giaùc • Kieåu döõ lieäu cho danh saùch caùc maët cuûa moät löôùi ña giaùc face_ptr = ^face; face = record vert : vertexlist_ptr; face_plane : plane; nature : attributes; next : face_ptr end;
z nF q u v F e y n x Chuaån bò löôùi ña giaùc cho quan saùt • Loaïi boû caùc maët löng (removing back faces) • Cho F laø moät maët cuûa moät löôùi ña giaùc, F coù vector höôùng ngoaøi laø nF . Maët F laø maët löng ñoái vôùi maét taïi vò trí e neáu vôùi ñieåm baát kyø q cuûa F maø coù • nF (e-q) 0, • trong ñoù, neáu maét ñöôïc cho trong heä toïa ñoä quan saùt, • eV = (eu, ev , en ), thì e = eVM + r. • Xeùn caùc maët (clipping faces)
Caùc moâ hình toâ maøu boùng • flat shading (constant shading) • smooth shading • mesh smoothing • ray tracing
Moâ taû hình hoïc cuûa tia phaûn chieáu • Ñeå tính cöôøng ñoä cuûa aùnh saùng ñeán maét töø ñieåm p treân maët ñoái töôïng, caàn bieát • vector n thaúng goùc vôùi beà maët taïi p • vector v töø p höôùng ñeán maét nhìn • vector s töø p höôùng ñeán nguoàn saùng. nguoàn saùng y n s v p maét z x
Thaønh phaàn khueách taùn cuûa aùnh saùng phaûn chieáu • Cöôøng ñoä cuûa thaønh phaàn khueách taùn (diffuse reradiation, scattering) cuûa aùnh saùng phaûn chieáu, Id • Theo ñònh luaät Lambert: Id = Is rd (us un ), trong ñoù • Is laø cöôøng ñoä cuûa nguoàn saùng • rd laø heä soá khueách taùn cuûa beà maët • us vaø un laø caùc vector chuaån cuûa caùc vector s vaø n. • Cöôøng ñoä aùnh saùng: soá thöïc 0. Thí duï: 0.7683 hay 56.746
Thaønh phaàn phaûn xaï cuûa aùnh saùng phaûn chieáu • Cöôøng ñoä cuûa thaønh phaàn phaûn xaï (specular reflection) cuûa aùnh saùng phaûn chieáu, Isp , ñöôïc tính theo moâ hình cuûa Phong • Isp = Is rs (ur uv) f , trong ñoù • Is laø cöôøng ñoä cuûa nguoàn saùng • f laø soá muõ cuûa Phong (Phong exponent) cuûa beà maët, f> 0 • rs laø heä soá phaûn xaï cuûa beà maët • ur vaø uv laø caùc vector chuaån cuûa caùc vector r vaø v, trong ñoù r laø vector “phaûn chieáu” ñoái xöùng vôùi s qua n. maét nguoàn saùng n n v r r s s p p
AÛnh höôûng cuûa soá muõ cuûa Phong leân ñaëc tính choùi cuûa beà maët
AÙnh saùng neàn • Aùnh saùng neàn (background light, ambient light) toàn taïi ñeàu theo moïi höôùng vaø coù taïi moïi nôi, coù cöôøng ñoä ñeán maét laø Ia ra , trong ñoù • Ia laø cöôøng ñoä cuûa aùnh saùng neàn • ra laø heä soá phaûn chieáu neàn cuûa beà maët
Cöôøng ñoä cuûa aùnh saùng ñeán maét töø moät ñieåm cuûa ñoái töôïng • Cöôøng ñoä I cuûa aùnh saùng ñeán maét töø moät ñieåm treân maët cuûa ñoái töôïng goàm • aùnh saùng neàn: Ia ra • aùnh saùng khueách taùn: Id • aùnh saùng phaûn xaï: Isp • Vaäy • I = Ia ra + Is rd (us un ) + Is rs (ur uv ) f (*) • Cöôøng ñoä aùnh saùng laø soá thöïc 0, maø trò cuûa moãi pixel trong frame buffer laø soá nguyeân neân caàn phaûi aùnh xaï/chuyeån ñoåi cöôøng ñoä aùnh saùng vaøo taäp caùc soá nguyeân bieåu dieãn maøu.
Löôùi ña giaùc: flat shading • Flat shading: thay vì tính cöôøng ñoä aùnh saùng I taïi moãi ñieåm thaáy ñöôïc cuûa moät maët F, thì chæ tính I taïi moät ñieåm thaáy ñöôïc naøo ñoù cuûa F, vaø duøng trò naøy cuûa I ñeå toâ maøu boùng cho taát caû phaàn thaáy ñöôïc cuûa F. • Phöông phaùp flat shading: Cho moãi maët F thaáy ñöôïc, thöïc thi nhö sau • 1. Choïn moät ñieåm p treân F • 2. Tìm vector thaúng goùc vôùi F taïi p • 3. Tính I taïi p duøng bieåu thöùc (*) • 4. Toâ maøu hình chieáu cuûa ña giaùc vôùi I.
Maét nhìn thaáy gì qua moät pixel? • Cöûa soå W trong maët phaúng quan saùt • ñöôïc phuû bôûi moät löôùi hình chöõ nhaät caùc ñieåm. Moãi ñieåm öùng vôùi taâm cuûa moät pixel V 0 Wt 1 0 2 3 4 1 2 3 Wb 4 maét N Wl Wr U
Maét nhìn thaáy gì qua moät pixel? (tieáp) • moãi pixel coù vò trí • (i, j) trong frame buffer, xem thí duï trong slide tröôùc! • vôùi i = 0,…, MaxColumn • j = 0,…, MaxRow • (ui , vj) trong maët phaúng quan saùt UV • vôùi Wl ui Wr • Wb vj Wt • u0 = Wl vaø uMaxColumn = Wr • v0 = Wt vaø vMaxRow = Wb • Vaäy • ui = Wl + iu, trong ñoù u = (Wr-Wl )/MaxColumn • vj = Wt-jv, trong ñoù v = (Wt-Wb )/MaxRow
Xaùc ñònh ñieåm cuûa ñoái töôïng maø maét nhìn thaáy qua pixel • Tiaöùng vôùi pixel (i, j) laø tia töø con maét xuyeân qua (ui , vj ). • Tia öùng vôùi pixel (i, j) coù bieåu dieãn daïng tham soá: • pi, j (t) = eye + diri, jt , trong ñoù • eye = eM + r laø vò trí cuûa maét trong toïa ñoä thöïc (world coordinates), • diri, j = ((ui , vj , 0) -e) M laø höôùng cuûa tia • Maët phaúng chöùa F coù bieåu dieãn daïng ñieåm vector thaúng goùc: • np = D • Vaäy tính ñöôïc trò cuûa t cho giao ñieåm cuûa tia öùng vôùi pixel (i, j) laø • thit = (D-neye)/ndiri, j , • vôùi ñieàu kieän ndiri, j 0 .
Toâ maøu boùng (shading) moät beà maët • Thuû tuïc toâ maøu boùng cho moät beà maët F. Goïi spot laø giao ñieåm (neáu coù) giöõa tia öùng vôùi pixel vaø F, cöôøng ñoä aùnh saùng I taïi spot ñöôïc tính bôûi (*), trò cuûa I seõ ñöôïc gaùn vaøo pixel. for j := 0 to MaxRow do for i := 0 to MaxColumn do begin < tìm spot nôi maø tia öùng vôùi pixel (i, j) chaïm maët phaúng cuûa F >; if< spot naèm trong F >then shade := Intensity(spot); SetPixel(i, j, shade) end;
Render löôùi ña giaùc • rendering the polygon mesh = sinh aûnh töø löôùi ña giaùc • Cho moät moâ hình löôùi ña giaùc. Coù hai tröôøng hôïp • 1. noù laø moät moâ hình chính xaùc cuûa moät ñoái töôïng • 2. noù laø moät moâ hình xaáp xæ cuûa moät ñoái töôïng cong. • Trong tröôøng hôïp 2, neáu duøng flat shading hay smooth shading thì trong aûnh ñöôïc sinh ra, ngöôøi nhìn phaân bieät ñöôïc caùc maët cuûa moâ hình löôùi ña giaùc. • Ñeå laøm toát hôn chaát löôïng aûnh, coù theå duøng • phöông phaùp toâ maøu boùng cuûa Gouraud (Gouraud shading) • phöông phaùp toâ maøu boùng cuûa Phong (Phong shading)
Gouraud shading • Phöông phaùp toâ maøu boùng cuûa Gouraud: noäi suy cöôøng ñoä • Thöïc thi caùc böôùc sau • 1. Tìm vector phaùp ñôn vò taïi moãi ñænh cuûa maët baèng caùch tính toång caùc caùc vector phaùp ñôn vò cuûa caùc maët chung quanh ñænh roài xaùc ñònh vector ñôn vò töông öùng nV n2 V n3 n1
Gouraud shading (tieáp) • 2. Tính cöôøng ñoä saùng taïi moãi ñænh duøng vector phaùp ñôn vò tìm ñöôïc trong böôùc 1 • 3. Noäi suy tuyeán tính caùc cöôøng ñoä saùng cuûa caùc ñænh ñeå coù cöôøng ñoä saùng taïi moïi ñieåm cuûa maët. • Nhaän xeùt: • Böôùc 3 coù theå ñöôïc hieän thöïc baèng moät phöông phaùp “scan line” trong maët phaúng quan saùt ñeå giaûm thôøi gian chaïy: • Vôùi moãi doøng queùt, xaùc ñònh cöôøng ñoä saùng taïi hai ñaàu muùt cuûa moãi ñoaïn nhoû treân maët baèng caùch noäi suy theo v. • Vôùi moãi pixel trong ñoaïn nhoû naøy, tìm cöôøng ñoä saùng baèng caùch noäi suy theo u.
cöôøng ñoä saùng Ia v cöôøng ñoä saùng Ib v u ua u ub Gouraud shading (tieáp) • Thí duï
Tieáp caän toâ maøu boùng cuûa Phong (Phong shading) • Phöông phaùp toâ maøu boùng cuûa Phong: noäi suy vector phaùp • Thöïc thi caùc böôùc sau • 1. (gioáng böôùc 1 cuûa phöông phaùp cuûa Gouraud) Tìm vector phaùp ñôn vò taïi moãi ñænh cuûa maët baèng caùch tính toång caùc caùc vector phaùp ñôn vò cuûa caùc maët chung quanh ñænh roài xaùc ñònh vector ñôn vò töông öùng. nV n2 V n3 n1
Tieáp caän toâ maøu boùng cuûa Phong (Phong shading) • (tieáp) • 2. Noäi suy tuyeán tính caùc vector phaùp ñôn vò cuûa caùc ñænh (coù ñöôïc töø böôùc 1) ñeå coù vector phaùp ñôn vò môùi taïi moïi ñieåm cuûa maët. • 3. Tính cöôøng ñoä saùng duøng vector phaùp ñôn vò môùi. • Thí duï
hình chieáu cuûa B vb v hình chieáu cuûa S hình chieáu cuûa A va u Tieáp caän toâ maøu boùng cuûa Phong (tieáp) • Nhaän xeùt • Böôùc 3 coù theå ñöôïc hieän thöïc baèng moät phöông phaùp “scan line” trong maët phaúng quan saùt ñeå giaûm thôøi gian chaïy nhö sau • Vôùi moãi doøng queùt, xaùc ñònh vector phaùp ñôn vò taïi hai ñaàu muùt cuûa moãi ñoaïn nhoû treân maët baèng caùch noäi suy theo v. • Vôùi moãi pixel trong ñoaïn nhoû naøy, tìm vector phaùp ñôn vò môùi baèng caùch noäi suy theo u.