Luận văn Nghiên cứu các thuật toán tạo bóng trong đồ họa ba chiều tương tác thời gian thực

TRƯỜNG ĐH KHOA HC TNHIÊN TP.HCM  
KHOA CÔNG NGHTHÔNG TIN  
BMÔN CÔNG NGHTRI THC  
oOo  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ĐẾ TÀI  
NGHIÊN CU CÁC THUT TOÁN TO  
BÓNG TRONG ĐỒ HA BA CHIU  
TƯƠNG TÁC THI GIAN THC  
HƯỚNG DN : Th.S ĐINH NGUYN ANH DŨNG  
THC HIN : NGUYN VĂN THÀNH 9912072  
NGUYN THANH SƠN 9912062  
Tp. HChí Minh, 7/2003  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
LI CM ƠN  
Chúng em xin gi li cm ơn ti các thy cô khoa Công nghthông tin  
trường Đại hc Khoa hc tnhiên, nhng người đã ân cn dy dcho  
chúng em nhng kiến thc bích và quý giá trong sut 4 năm hc qua,  
nhng người đã trang bcho chúng em hành trang quý giá để bước vào đời  
Chúng em xin gi li cm ơn sâu sc ti thy Đinh Nguyn Anh Dũng,  
người đã tn tình chbo và hướng dn chúng em thc hin tt lun văn tt  
nghip này  
Chúng em xin gi li cm ơn ti gia đình và bn bè, hu phương vng chc  
cho tin tuyến chúng em trong sut nhng năm hc gian kh, và gn đây đã  
cho chúng em ngun động viên to ln vtinh thn và vt cht để chúng em  
có thhoàn thành tt lun văn tt nghip này  
Chúng em xin gi li cm ơn ti sgiúp đỡ ca anh Trn Thế Vinh dành  
cho chúng em trong thi gian thc hin lun văn này  
- 2 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
MC LC  
LI CM ƠN................................................2  
MC LC...................................................3  
PHN 1 : MỞ ĐẨU...........................................5  
I. BÓNG TRONG ĐỒ HA BA CHIU TƯƠNG TÁC...............6  
II. MC TIÊU CA LUN VĂN..............................9  
III. CU TRÚC CA LUN VĂN.............................10  
IV. CÁC THUT NGVÀ CHVIT TT.....................10  
PHN 2 : KTHUT KIM TRA STENCIL TRÊN TNG ĐIM NH....13  
I. GII THIU........................................13  
II. Ý TƯỞNG CHÍNH.....................................14  
III. KTHUT KIM TRA STENCIL TRÊN TNG ĐIM NH......15  
PHN 3 : CÁC THUT TOÁN TO BÓNG.........................19  
I. PLANAR SHADOW.....................................19  
1)GII THIU.....................................19  
2)KHÔNG ÁP DNG KTHUT STENCIL TEST............22  
3)ÁP DNG KTHUT STENCIL TEST..................23  
4)CÁC CI TIN QUAN TRNG........................26  
5)ƯU ĐIM........................................28  
6)KHUYT ĐIM....................................28  
7)NHN XÉT.......................................28  
II. SHADOW VOLUME.....................................29  
1)GII THIU.....................................29  
2)SHADOW VOLUME..................................30  
a.TÍNH SILHOUETTE..........................30  
b.TÍNH SHADOW VOLUME.......................33  
- 3 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
3)THUT TOÁN SHADOW VOLUME.......................33  
a.THUT TOÁN...............................33  
b.CÁC CI TIN QUAN TRNG..................37  
4)ƯU ĐIM........................................49  
5)KHUYT ĐIM....................................50  
6)NHN XÉT.......................................50  
III. PROJECTIVE SHADOW MAPPING.........................51  
1)Ý TƯỞNG CHÍNH..................................51  
2)TO SHADOW MAP.................................52  
3)CHIU SHADOW MAP LÊN VT HNG BÓNG.............57  
4)ƯU ĐIM........................................59  
5)KHUYT ĐIM....................................59  
6)NHN XÉT.......................................60  
PHN 4 : ĐÁNH GIÁ VÀ CÁC HƯỚNG PHÁT TRIN................61  
I. HTHNG ĐIU KHIN...............................61  
II. YÊU CU...........................................61  
III. ĐÁNH GIÁ VÀ KT LUN..............................62  
PHLC..................................................64  
TÀI LIU THAM KHO.......................................68  
- 4 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
PHN 1 : MỞ ĐẦU  
Trong thc tế, con người cm nhn thế gii bng các giác quan ca mình.  
Mt vt thcó thể được cm nhn bng các xúc giác qua ssmó hay  
được cm nhn bng mùi qua khu giác , tuy nhiên trong mt chng mc  
nào đó có thnói cm nhn vt thể đó bng thgiác qua màu sc, đặc  
đim, hình dng, … scho con người mt cm nhn đầy đủ, trc quan và  
rõ ràng nht. Vì vy nếu có thxây dng được các chương trình trên máy  
tính mô phng được các vt th, hin tượng trong thế gii thc thì sẽ  
cung cp cho người dùng mt cách tiếp cn bng thgiác trc quan hơn  
vcác vn đề mà họ đang xem xét.  
Vi công nghphn cng máy tính hin nay, các hn chế cơ bn vphn  
cng ca các chương trình đồ ha ba chiu phn nào đã được gii quyết,  
chính vì vy các công nghvề đồ ha ba chiu đang rt được quan tâm và  
phát trin trên thế gii. Các nhóm chương trình ng dng ca đồ ha ba  
chiu có thể được kra như :  
ƒ Htrthiết kế : Mt trong nhng ng dng ca đồ ha ba chiu  
trên máy tính là các chương trình htrthiết kế như CAD, 3D  
Max, Maya, Poser, … Các chương trình này được sdng cho các  
công vic như thiết kế nhà ca, qun áo, phương tin giao thông,  
các dng c, các mô hình và ccon người, …  
ƒ Giáo dc và đào to : Các chương trình mô phng ( thc ti o) :  
mô phng sinh ha, hóa hc, vt lý hc, mô phng phóng tàu vũ  
tr, lái xe, lái máy bay, các bng đồ thông tin địa lý GIS…  
- 5 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ Gii trí và nghthut : Các chương trình thiết kế mthut, to mô  
hình cho vic quy hoch,… cho phép to dng và hiu chnh kiến  
trúc ca các công trình, cho phép quan sát nhiu góc độ để có  
mt cái nhìn tng quan vcông trình từ đó đưa ra các chnh sa  
phù hp. Ngoài ra đồ ha ba chiu còn giúp to ra các chương  
trình trò chơi gii trí; htrcác kxo đin nh  
ƒ Du lch o : cho du khách có ththam quan và tương tác vi các  
thế gii ging như thế gii tht mà không cn phi ti tn nơi, và  
tn các chi phí cho mt chuyến du lch  
Vn đề quan trng ca đồ ha ba chiu hin nay là làm thế nào thhin  
được các hình nh ca thế gii lên màn hình máy tính mt cách trung  
thc nht  
I. BÓNG TRONG ĐỒ HA BA CHIU TƯƠNG TÁC  
Trên thế gii thc con người nhìn được thế gii qua ánh sáng, ánh sáng li  
đi đôi vi bóng, cứ ở đâu có ánh sáng là ở đó có bóng. Do đó nếu thhin  
được hai yếu tbóng và ánh sáng thì slàm tăng tính trung thc ca các  
hình nh ba chiu trên máy tính.  
Khi người dùng giao tiếp vi mt chương trình đồ ha ba chiu trên máy  
tính hthường có cm giác như các đối tượng đang lơ lng trong không  
gian trong khi thc tế là chúng đang nm trên mt bmt nào đó, do đó  
nếu camera chỉ đứng yên mt ch, người dùng rt khó nhn ra được chiu  
sâu cũng như vtrí tương đối ca các đối tượng. Nếu chương trình đồ ha  
ba chiu đó có cài đặt kthut làm bóng cho các đối tượng thì sgiúp  
người dùng ddàng cm nhn đúng hơn vthế gii trong chương trình đó.  
Chính vì vy, trong các chương trình đồ ha ba chiu, cho dù to bóng cho  
các đối tượng rt dvn hơn là không to bóng cho chúng  
- 6 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
A
B
Chúng ta sdnhn biết được vtrí ca khi hp ti hình B hơn là hình A  
Trong thc tế, ánh sáng là các ht photon năng lượng, khi ánh sáng chiếu  
vào mt vt thnào đó, các ht photon mt phn sẽ được hp th, mt  
phn sẽ được phn xli bi vt thể đó. Nơi nào không có các ht photon  
chiếu ti hay được chiếu ti nhưng vi cường độ yếu là nơi có bóng. Trong  
đồ ha ba chiu, cách tính toán để to bóng này sto ra được bóng như ở  
ngoài thế gii thc tuy nhiên kthut này rt phc tp và tn nhiu chi phí.  
Chúng ta sphi gii quyết nhiu bài toán khó trong cách tiếp cn này, đó  
là bài toán phn x, hp th, bài toán giao gia mt tia và mt đa giác,…  
và quan trng hơn là chúng ta sphi tính toán trên tng đim nh trong  
không gian ca thế gii ba chiu, nếu không gian là mt thế gii rng ln  
thì tc độ xlý srt chm, và vì hthng phn cng máy tính thông dng  
hin này cón hn chế nên kthut này không ththc hin được trong các  
hthng thi gian thc.  
Các kthut to bóng thc thường được áp dng trên các thiết bchuyên  
dng đặc bit ri xut ra thành phim hay dng lên các mô hình ba chiu  
tĩnh. Có hai kthut to bóng thc ni tiếng là Ray Trace và Radiosity tuy  
nhiên lun văn này không chú trng ti vic xây dng các thut toán to  
- 7 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
bóng này mà tp trung vào nghiên cu các thut toán to bóng trong các hệ  
thng mang tính thi gian thc  
Trong các hthng thi gian thc, chúng ta phi áp dng các thut toán to  
bóng gi, các thut toán này không có độ chính xác 100% tuy nhiên chúng  
cho ra bóng có thchp nhn được đối vi thgiác con người. Độ phc tp  
cũng như chi phí tính toán ca các thut toán này thp hơn nhiu so vi các  
thut toán to bóng thc do đó các thut toán này rt khthi trên các hệ  
thng máy tính thông thường và áp dng được trong các chương trình đồ  
ha ba chiu mang tính tương tác, thi gian thc. Tphn này ca lun  
văn khi nói vthut toán to bóng, xin hiu là thut toán to bóng giả  
Các thut toán to bóng (gi) trong đồ ha ba chiu đã được nghiên cu từ  
nhng năm 80 ca thế ktrước. Có thkra nhng thành tu ln vvic  
nghiên cu bóng trong thi gian này, đó là :  
ƒ Thut toán vto bóng da trên phép chiếu ca Jim Blinn năm 1988  
và ci tiến ca nó vào năm 1996  
ƒ Thut toán to bóng trên mt phng ca Thant Tessman năm 1989  
ƒ Ý tưởng sơ khai vshadow volume ca Pllippe Bergeron năm 1986  
ƒ Ý tưởng vvic sdng thành phn độ sâu ca William Reeves,  
David Salesin và Robert Cook năm 1987  
Tuy nhiên đây chlà các ý tưởng thut toán sơ khai, chưa hoàn chnh và  
thiếu shtrvmt công nghnên chưa ththc hin tt được trong  
thi gian đó và phi ti gia thp k1990 các vn đề vvic to bóng  
trong đồ ha ba chiu tương tác mi có ththc hin đúng theo các thut  
toán được trên máy tính  
Tgia thp k1990 ti nay là thi gian có nhiu thành tu to ln nht về  
bóng vi :  
- 8 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ Thut toán to bóng trên các mt phng (Planar Shadow) ca  
Schilling, Andreas, G.Knittel và Wolfgang năm 1996  
ƒ Thut toán vùng bóng (shadow volume) ca Heidmann năm 1991 –  
và các ci tiến ca Tom McReynolds và David Blythe năm 1997 –  
ca Yen Kwoon, Eric Lengyel năm 2002, ci tiến ca Tom Hall năm  
2003  
ƒ Thut toán Shadow Mapping ca Mark J.Kilgard năm 2000  
ƒ Thut toán Projective Shadow Mapping ca Mark A.Deloura năm  
2000  
Mc dù vy, vì tính phc tp khi cài đặt các thut toán trong các thế gii  
rng ln và các thut toán đều có nhng ưu đim và khuyết đim, rt khó  
để áp dng trong trường hp tng quát nên trên thc tế chcó mt sít  
chương trình hin nay có cài đặt các kthut to bóng.  
II. MC TIÊU CA LUN VĂN  
Bài toán to bóng gilà mt bài toán khó trong đồ ha ba chiu thi gian  
thc, và hin đang là mt trong nhng đề tài thu hút nhiu squan tâm ti  
các trung tâm nghiên cu và các trường đại hc trên thế gii. Đây cũng là  
mt lĩnh vc chưa được gii quyết trn vn, vn còn mra nhiu hướng  
nghiên cu, phát trin trong tương lai. Trước thc trng như vy đề tài này  
hướng ti 2 mc tiêu như sau  
ƒ Nghiên cu và cài đặt thnghim các thut toán to bóng phbiến  
và hiu qucao trong đồ ha ba chiu thi gian thc hin nay, bao  
gm :  
o Thut toán to bóng phng Planar Shadow  
o Thut toán to bóng Shadow Volume  
o Thut toán Projective Shadow Mapping  
- 9 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ Xây dng mô hình nhà tù Chung Cp thuc Bo Tàng Di Tích  
Chiến Tranh ti thành phHChí Minh, và cài đặt các thut toán  
to bóng trên mô hình này nhm minh ha bóng trong mt thế gii  
tương tác thi gian thc  
III. CU TRÚC CA LUN VĂN  
Ni dung ca lun văn được chia ra làm 4 phn  
ƒ Phn 1 – Phn mở đầu  
ƒ Phn 2 – Kthut kim tra stencil trên tng đim nh : Phn này  
trình bày vkthut kim tra stencil trên tng đim nh sẽ được áp  
dng cho các thut toán to bóng để gii hn vùng bóng. Đây là  
phn tùy chn mô tmt kthut ca đồ ha ba chiu có thbqua  
nếu đã biết  
ƒ Phn 3 – Các thut toán to bóng : Gii thiu vcác thut toán to  
bóng được nghiên cu trong lun văn, đưa ra đánh giá về ưu và  
khuyết đim ca mi thut toán  
ƒ Phn 4 Đánh giá và các hướng phát trin : Đánh giá kết quả đạt  
được ca lun văn và các hướng phát trin  
IV.THUT NGVÀ CHVIT TT  
Thut ngữ  
Ý nghĩa  
Mt đim nh trong không gian ba chiu, có các  
thuc tính chính là màu, độ sâu, độ alpha và giá  
trstencil  
Pixel  
Các hình nh được dán lên mt bmt nào đó,  
làm cho bmt ging tht hơn  
Texture  
- 10 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Thc hin mt quá trình biến đổi để cho ra mt  
Render  
hình nh ba chiu dng đầy đủ ra màn hình  
Mt thuc tính ca đim nh trong không gian  
ba chiu  
Stencil  
Bộ đệm cha các giá trthuc tính stencil ca  
đim nh  
Stencil Buffer  
Quá trình kim tra thuc tính stencil ca tng  
đim nh, sdng các hàm kim tra (stencil  
function) được htrbi phn cng và phn  
mm  
Stencil Test  
Depth Buffer  
Depth Test  
Bộ đệm cha các giá trthuc tính chiu sâu  
ca đim nh  
Quá trình kim tra thuc tính chiu sâu ca tng  
đim nh, sdng các hàm kim tra (depth  
function) được htrbi phn cng và phn  
mm  
Là bộ đệm cha đim nh đã có đầy đủ các tính  
cht, chờ được render ra màn hình  
Frame Buffer  
Camera  
Chta độ ca đim quan sát thế gii, ta có thể  
hình dung đây là đim đặt camera và chúng ta  
nhìn thy được thế gii qua camera này  
Mt vùng không gian được to ra khi chiếu mt  
vt thta xa tmt đim  
Volume  
Khi quan sát, chcó các đối tượng nm trong  
view volume mi được hin thra màn hình  
Là mt khi chóp ct, là kết qutphép chiếu  
View Volume  
View Frustum  
- 11 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
phi cnh trên khi quan sát  
Mt phng đáy gn phía camera ca View  
Mt phng Near  
Mt phng Far  
Frustum  
Mt phng đáy xa phía camera ca View  
Frustum  
Field of View  
Silhouette  
Góc ca View Frustum  
Hình bao ca mt vt thnhìn tmt đim  
Thut ngchkthut dùng các toán tbiến  
đổi hai ngôi trên hai đim nh  
Blend  
- 12 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
PHN 2 : KTHUT KIM TRA  
STENCIL TRÊN TNG ĐIM NH  
I. GII THIU  
Nếu chcó mt ngun sáng, mt vt hng sáng, mt mt hng bóng thì các  
thut toán to bóng rt đơn gin do chcó mt bóng duy nht đổ lên mt  
mt, tuy nhiên khi chúng ta dng lên mt thế gii ba chiu mô phng thế  
gii thc thì thế gii ba chiu đó không chcó mt mà có rt nhiu ngun  
sáng, vt chn sáng và mt hng bóng, do đó có rt nhiu bóng đổ lên  
nhiu mt khác nhau và có khi mt bóng đổ lên rt nhiu mt. Vn đề đặt  
ra là làm sao chúng ta có thể điu chnh bóng sao cho chúng chỉ đổ lên  
nhng nơi nào bchn sáng bi các vt thchn sáng và vi ngun sáng  
tương ng mà thôi. Trong kthut planar shadow và shadow volume  
chúng ta sdng kthut kim tra stencil trên tng đim nh (stencil test)  
để gii quyết vn đề này  
Silicon Graphics đã gii thiu vkthut kim tra stencil trên tng đim  
nh trong phn cng cách đây hơn mười năm trước, tuy nhiên vào thi  
đim đó giá cho mt thiết bphn cng htrkthut stencil test rt đắt  
và chhtr4-bit stencil buffer. Hin nay các card đồ ha có htrkỹ  
thut stencil test đã xut hin rt phbiến và giá thành thp, htrt8 Æ  
64 bit stencil buffer, các card đồ ha này cũng cung cp mt bcác hàm  
3D API htrcho kthut stencil test trên phn cng. Quá trình dliu  
- 13 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
qua các quá trình kim tra trước khi được đưa vào framebuffer để render ra  
màn hình được mô tnhư sau :  
Trong đó Fragment là mt đim nh đã có đầy đủ các tính cht ca mình  
như màu, độ alpha, giá trstencil, giá trị độ sâu, … . Các quá trình kim tra  
như Sissor Test, Alph Test,Blending, … là các quá trình kim tra các thuc  
tính ca đim nh để có nhng xlý tương ng, chúng ta chquan tâm ti  
stencil test và depth test. Hai quá trình kim tra này chúng tôi sgii thiu  
chi tiết hơn các phn phía sau  
Stencil buffer được htrctrong hai thư vin đồ ha ba chiu rt mnh  
và phbiến hin nay là OpenGL và DirectX. Trong mt chương trình ta có  
bt tt chế độ htrstencil buffer và điu chnh sbit ca stencil buffer.  
Hu hết các phn mm, thư vin đều htr8-bit stencil buffer còn phn  
cng thì htrnhiu loi thông dng nht là 4, 8, 16 và 32-bit. Khi thc  
hin kthut stencil trên tng đim nh, nếu phn cng có htrstencil  
buffer thì phn mm stự động chuyn quyn xlý qua cho phn cng  
còn nếu không sdùng phn mm để thc hin và tc độ gim đi đáng kể  
- 14 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
II. Ý TƯỞNG CHÍNH  
Kthut kim tra stencil trên tng đim nh (stencil test) là mt kthut  
thc hin trên tng đim nh tương tnhư kthut kim tra độ sâu ca  
tng đim nh trong đồ ha ba chiu (depth test), depth test kim tra và  
điu chnh giá trị độ sâu ca đim nh trong depth buffer còn stencil test  
kim tra và điu chnh giá trstencil ca đim nh trong stencil bufer.  
Trong kthut stencil test khi render, mi mt đim nh được gán cho mt  
giá trstencil và giá trnày sẽ được thay đổi và được kim tra li ln  
render kế tiếp, các xlý tương ng sẽ được thc hin đối vi tng sthay  
đổi.  
Trong mt thế gii ba chiu có bóng, mt đim nh có thể ở mt trong hai  
trng thái, nm trong vùng bóng hay nm ngoài vùng bóng. Chúng ta sẽ  
gán giá trstencil tương ng cho tt cccác đim nh, sau đó điu chnh  
các hàm ca kthut stencil test sao cho chcp nht giá trstencil ca các  
đim nh nm trong vùng bóng và render li thế gii ba chiu này mà  
không có ánh sáng. Sau đó li điu chnh các hàm ca kthut stencil test  
sao cho chcp nht giá trstencil cucác đim nh nm ngoài vùng bóng,  
render li thế gii ba chiu mt ln na vi ánh sáng. Các đim nh nm  
trong vùng bóng sẽ được render trong trng thái không có ánh sáng và các  
đim ngoài vùng bóng sẽ được render trong trng thái có ánh sáng và to ra  
bóng trong thế gii ba chiu. Vn đề đặt ra là làm sao điu chnh giá trị  
stencil ca các đim nh nm trong hay ngoài vùng bóng?  
III. KTHUT KIM TRA STENCIL TRÊN TNG ĐIM NH  
Mt đim nh thông thường scó giá trmàu (lưu trong color buffer) và  
giá trị độ sâu (lưu trong depth buffer), khi được render ra màn hình, đim  
nh scó giá trmàu tương ng trong khi giá trị độ sâu không được thể  
- 15 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
hin tường minh mà chỉ để quyết định đim nào nm trước đim nào nm  
sau, đim nào được nhìn thy, đim nào không từ đó chương trình squyết  
định có render đim nh đó ra màn hình hay không. Cũng ging như depth  
buffer, stencil buffer là tp hp các giá trkhông được vra màn hình ca  
mt đim nh, stencil buffer cha các giá trstencil dùng để bsung thêm  
thông tin cho các giá trca đim nh  
Giá trstencil là mt snguyên không du, các thao tác tăng, gim, so sánh  
đánh du bit có ththc hin được trên các giá trnguyên này. Khi bt  
đầu render mt thế gii ba chiu sdng kthut stencil test và stencil  
buffer phi thiết lp tt ccác giá trstencil ca các đim nh trong stencil  
buffer vmt giá trnào đó, sau đó sbt hay tt quá trình kim tra giá trị  
stencil cho tng đim nh, nếu kết qukim tra sai không thc hin quá  
trình xác lp các thuc tính mong mun nào đó cho mt đim nh trong  
frame buffer để render ra màn hình, nếu kết qukim tra đúng hay chế độ  
kim tra stencil không được bt lên thì thc hin quá trình xác lp các  
thuc tính mong mun nào đó cho mt đim nh trong frame buffer để  
render ra màn hình. Quá trình kim tra stencil sso sánh giá trstencil  
trong stencil buffer vi giá trstencil đang tham chiếu ti. Để minh ha các  
hàm trong kthut này, chúng tôi xin mượn các hàm trong thư vin đồ ha  
OpenGL để đưa ra mt ví dthc tin  
Trước khi render mt thế gii, stencil buffer phi được xóa vmt giá trị  
nào đó đã được định sn, trong OpenGL công đon này được thc hin  
như sau :  
glClearStencil(0);  
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT |  
GL_STENCIL_BUFFER_BIT);  
- 16 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Cũng như kthut depth test, kthut stencil test cũng có thể được bt lên  
hay tt đi. Khi được bt lên kthut stencil test sẽ được thc hin trên tng  
đim nh. Chúng ta bt tt kthut này như sau :  
glEnable(GL_STENCIL_TEST);  
glDisable(GL_STENCIL_TEST);  
Có 8 hàm so sánh : NEVER, ALWAYS, LESS THAN, LESS THAN OR  
EQUAL, GREATER THAN, GREATER THAN OR EQUAL, EQUAL và  
NOT EQUAL. Để thc hin nhanh hơn so vi vic so sánh trược tiếp,  
trước khi so sánh cgiá trstencil trong stencil buffer ln giá trstencil  
đang được tham chiếu ti đều được so sánh tng bit vi mt mt nbit so  
sánh stencil. Trong OpenGL hàm so sánh giá trstencil, giá trstencil tham  
chiếu, mt nbít so sánh các giá trstencil được thhin như sau :  
glStencilFunc(GL_EQUAL, // hàm so sánh  
0x1, // giá trtham chiếu  
0xff); // mt nso sánh  
Vì sau khi quá trình kim tra độ sâu các giá trtrong depth buffer sẽ được  
cp nht để quyết định đim nào được render ra màn hình và chúng ta chỉ  
quan tâm đến đim nào được render ra màn hình thôi nên quá trình kim  
tra stencil phthuc vào quá trình kim tra độ sâu do đó kết quca quá  
trình kim tra stencil li được chia nhra thành 3 loi :  
ƒ Kim tra stencil sai  
ƒ Kim tra stencil đúng + kim tra độ sâu sai  
ƒ Kim tra stencil đúng + kim tra độ sâu đúng  
ng vi tng kết quchúng ta sthc hin các thao tác tương ng cho các  
giá trstencil trong buffer.  
Có 6 thao tác thay đổi giá trtrong stencil buffer :  
ƒ keep : không thay đổi giá trstencil ca đim nh trong stencil buffer  
- 17 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ replace : thay đổi giá trstencil ca đim nh trong stencil buffer vi  
giá trtham chiếu  
ƒ zero : xóa giá trstencil ca đim nh trong stencil buffer v0  
ƒ increment : tăng thêm mt đơn vvào giá trstencil ca đim nh  
trong stencil buffer cho ti sao cho vn nhhơn giá trln nht  
ƒ decrement : gim mt đơn vvào giá trstencil ca đim nh trong  
stencil buffer cho ti sao cho vn ln hơn 0  
ƒ invert : đảo ngược bit ca giá trstencil ca đim nh trong stencil  
buffer  
Mt hàm thc hin các thao tác stencil trong OpenGL có dng như sau :  
glStencilOp(GL_KEEP, // kim tra stencil sai  
GL_DECR, // kim tra stencil đúng, kim tra độ sâu sai  
GL_INCR); // kim tra stencil đúng, kim tra độ sâu đúng  
glStencilMask(0xff);  
- 18 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
PHN 3 : CÁC THUT TOÁN  
TO BÓNG  
I. PLANAR SHADOW  
1. Gii thiu  
Trường hp đơn gin nht ca bóng là khi mt vt thể đổ bóng trên mt  
mt phng, lúc đó ta có thchiếu vt thể đó lên mt phng và rút ra  
được ma trn chiếu ng vi ngun sáng và mt phng, hình chiếu này  
chính là hình dng ca bóng ca vt thtrên mt phng ; đó chính là ý  
tưởng chính ca thut toán to bóng planar  
Ngun sáng L chiếu mt đim P xung mt phng thành P’  
- 19 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Gisngun sáng L đổ bóng mt vt thxung mt phng D, gi  
P(x,y,z,1) là mt đim bt ktrên vt th, hình chiếu ca nó trên mt  
phng là P’(x’,y’,z’,1). Gi E là mt đim thuc mt phng hng bóng  
và n là vector pháp tuyến ca mt phng. Ta có :  
ƒ Đường thng đi qua ngun sáng và đim P là :  
ƒ Mt phng hng bóng (dng Euler)  
ƒ Đường thng này ct mt phng ti P’, thế x trong đường thng  
vào mt phng ta được :  
ƒ Từ đó suy ra  
ƒ Thế li vào phương trình đường thng ta được đim P’ tính như  
sau :  
ƒ Ta đã có ta độ ca mt đim chiếu tmt đim trên vt chn  
sáng, vn đề là làm sao đưa ra ma trn chiếu M, để đơn gin hóa  
các hsca ma trn ta gán  
và  
- 20 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ P’ được tính li như sau  
và  
ƒ Từ đó ta có thviết li ba thành phn ca vector P’ để tính toán  
ra ma trn chiếu  
ƒ Khai trin tích vô hướng nP  
ta được  
ƒ Quy đồng mu số ở mi thành phn  
- 21 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ Khai trin ra ta được  
ƒ Gom nhóm theo Px, Py và Pz ta được  
Gi ma trn chiếu là M và có các hslà m11 Æ m44 ta có tích ca  
mt đim trên vt chn sáng vi ma trn chiếu sđim chiếu ca nó  
trên mt phng, hay M*P = P’. Nhân M vi P(x,y,z,1) ta được  
Kết quthu được chính là đim P’ nên  
- 22 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Từ đây ta có thddàng rút ra ma trn chiếu M như sau  
2. Không áp dng kthut stencil  
Để to bóng cho mt vt tmt ngun sáng xung mt mt phng ta  
chcn tính toán ma trn chiếu tcác thông sca mt phng và ngun  
sáng và sau đó chuyn đổi vt thnày bng ma trn chiếu sẽ được hình  
hình chiếu ca nó trên mt phng sau đó render hình chiếu này này vi  
màu đen và không có ánh sáng ta sẽ được bóng ca vt thxung mt  
phng  
Thut toán được phát biu như sau :  
Đầu vào :  
ƒ Mt ngun sáng đim  
ƒ Mt mt phng  
ƒ Mt vt chn sáng  
Thut toán :  
ƒ Tính toán ma trn Model View trong phép biến đổi view  
tranform  
- 23 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
ƒ Tính toán phương trình mt phng, bt chế độ ánh sáng lên và  
render mt phng hng bóng, vt chn sáng  
ƒ Lưu ma trn Model View  
ƒ Tính toán ra ma trn chiếu tphương trình mt phng và ngun  
sáng, sau đó nhân ma trn Model View vi ma trn này  
Render li vt chn sáng ( lúc này đã được chuyn đổi qua  
ma trn chiếu ) vi màu đen, trong chế độ không có ánh sáng  
ƒ Phc hi ma trn Model View  
3. Áp dng kthut stencil  
Phương trình mt phng biu đin cho mt mt phng vô hn trong khi  
đó mt phng hng bóng li là hu hn nên đôi khi bóng đổ ra ngoài  
mt phng hng bóng, đòi hi phi sdng kthut stencil test để gii  
quyết  
Bóng đổ ra ngoài do chiếu xung mt phng trên lý thuyết là vô hn  
trong khi mt hng bóng trong thc tế li hu hn  
- 24 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Đầu tiên ta render mt phng hng bóng vào stencil buffer vi giá trị  
stencil là 1 hay nói cách khác các đim nh nm trong mt phng hng  
bóng scó giá trstencil là 1, sau đó chúng ta render bóng vi điu kin  
là chrender bóng ti đim nh nào có giá trstencil là 1. Bóng được to  
ra schnm trong vùng gii hn bi mt phng hng bóng mà không  
được render các vùng nm ngoài mt phng hng bóng  
Thut toán phát biu như sau :  
Đầu vào :  
ƒ Mt ngun sáng đim  
ƒ Mt mt phng  
ƒ Mt vt chn sáng  
Thut toán :  
ƒ Tính toán ma trn Model View trong phép biến đổi view  
tranform  
ƒ Bt chế độ kim tra stencil, đặt hàm kim tra giá trstencil là  
luôn gán giá trstencil = 1  
ƒ Tính toán phương trình mt phng, bt chế độ ánh sáng lên và  
render mt phng hng bóng, vt chn sáng  
ƒ Lưu ma trn Model View  
ƒ Tính toán ra ma trn chiếu tphương trình mt phng và ngun  
sáng, sau đó nhân ma trn Model View vi ma trn này  
ƒ Đặt hàm kim tra là chthông qua khi giá trstencil là 1  
ƒ Render li vt chn sáng ( lúc này đã được chuyn đổi qua ma  
trn chiếu ) vi màu đen, trong chế độ không có ánh sáng  
ƒ Phc hi ma trn Model View  
ƒ Tt chế độ kim tra stencil  
- 25 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Chrender bóng nơi nào thuc vmt phng hng bóng dùng kỹ  
thut stencil test  
4. Các ci tiến quan trng  
Màu ca bóng là đen và sche mt nn do đó chúng ta phi blend bóng  
vi nn để cho ra bóng thc hơn  
- 26 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
Bóng đổ lên nn gch trông không thc vì bóng có màu đen và che  
khut các chi tiết ca nn  
Bóng đổ lên đã được blend đi để trông thc hơn  
Bóng planar là hình chiếu ca vt chn sáng xung mt phng, tuy  
nhiên do vic tính toán và làm tròn strên sthc nên bóng không  
hoàn toàn nm trên mt phng mà có phn ca bóng nm trên mt  
phng, có phn ca bóng nm dưới mt phng gây ra hin tượng chp  
- 27 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
chn chthy chkhông, để gii quyết vn đề này chúng ta phi tt quá  
trình kim tra depth test để cho bóng không bnn che khut.  
Bóng planar có phn thy và có phn không thy do có phn nm trên  
và có phn nm dưới mt hng bóng  
Ma trn bóng luôn luôn được tính và bóng luôn được render li mi  
mt khung hình, cho dù bóng không hbthay đổi. Để gii quyết vn  
đề này ta render toàn bbóng vào mt texture mà đã được to ra từ  
trước. Texture bóng này schỉ được tính li khi bóng thay đổi (do mt  
hng bóng hay vt chn sáng hay ngun sáng thay đổi), texture này  
chúng ta có thlưu li dưới dng texture có thành phn alpha, nó sẽ  
được render trên bmt ca mt hng bóng vi kthut blend vì thế  
nhng đim nh nm trong vùng bóng sti đi và các đim nh nm  
ngoài vùng bóng không bthay đổi  
Áp ma trn chiếu vào vt thchn sáng đôi khi cũng cho ra bóng không  
chính xác đó là khi ngun sáng nm gia mt phng hng bóng và vt  
thchn sáng. Trường hp này đáng llà không đổ bóng tuy nhiên khi  
áp ma trn chiếu vào scho ra bóng đổ ngược để gii quyết vn đề này  
- 28 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
mi khi đổ bóng ta phi chn các mt phng để đổ bóng tương ng vi  
1 ngun sáng và vt chn sáng, tuy nhiên điu này rt khó thc hin cho  
vt thcó số đa giác ln  
5. Ưu đim  
Planar shadow cài đặt khá đơn gin, bóng ca vt thto ra có độ chính  
xác trên mt phng hng bóng tương ng vi ngun sáng.  
Chi phí tính toán cho bóng không cao nên không làm chm tc độ ca  
chương trình, đây là mt ưu đim ln ca planar shadow  
Đối vi bóng to vi kthut stencil, nếu phn cng có htrstencil  
buffer thì không nh hưởng ti tc độ  
6. Khuyết đim  
Chto được bóng trên các mt phng  
Bóng ca vt thhình chiếu ca vt thnên có slượng đa giác và độ  
phc tp và tn chi phí render như nhau trong khi bóng trong thc tế  
đơn gin hơn vt chn sáng nhiu  
Không có khnăng tự đổ bóng lên chính vt thchn sáng  
7. Nhn xét  
Thut toán to bóng Planar Shadow tuy không cài đặt được trong mt  
thế gii có các đối tượng hình hc phc tp và các mt cong, nhưng rt  
phù hp trong các thế gii có dng hình khi như mt căn phòng, toà  
nhà, hay đổ bóng tĩnh ca mt vt thlên sàn nhà, …  
- 29 -  
LUN VĂN TT NGHIP CNHÂN TIN HC KHÓA 99  
II. SHADOW VOLUME  
1. Gii thiu  
Trong thc tế nhiu khi bóng đổ lên các bmt không phi là mt  
phng đòi hi phi có mt kthut mnh hơn kthut planar shadow  
để to ra bóng trong trường hp này đó là kthut to bóng da vào  
vùng bóng (shadow volume)  
Trong thế gii thc khi mt vt thchn mt ngun sáng nó sto ra  
mt vùng không gian không được chiếu sáng bi ngun sáng đó, vùng  
không gian này này được gi là shadow volume. Ý tưởng chính ca  
thut toán to bóng da vào vùng bóng (shadow volume) là coi vùng  
bóng là mt volume  
Thut toán gm 2 bước  
ƒ Tính toán shadow volume được hình thành bi ngun sáng và tp  
các vt chn sáng  
ƒ Xác định rng mt đim nm trên bmt hng bóng được chiếu  
sáng hay bche bi mt hay nhiu vt thchn sáng , để làm  
được điu này ta phi xác định xem đim đó nm trong hay ngoài  
shadow volume. Nếu đim đó nm ngoài shadow volume nó  
được chiếu sáng bi ngun sáng, còn nếu nm trong shadow  
volume nó không được chiếu sáng bi ngun sáng và to ra bóng  
- 30 -  

Tải về để xem bản đầy đủ

pdf 70 trang yennguyen 23/07/2025 730
Bạn đang xem 30 trang mẫu của tài liệu "Luận văn Nghiên cứu các thuật toán tạo bóng trong đồ họa ba chiều tương tác thời gian thực", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfluan_van_nghien_cuu_cac_thuat_toan_tao_bong_trong_do_hoa_ba.pdf