-------o0o-------
ISO 9001:2008
TÌM HI U K THU T T O BÓNG C NG SHADOW
MAPPING
Sinh viên th c hi n:
Giá
Mã s sinh viên:
PGS.TS.
1351020027
H I PHÒNG - 2013
án t t nghi p
p H i Phòng
Em xin g i l i c
i các th y cô khoa Công ngh thông
i h c Dân L p H i Phòng, nh
nd y
d cho chúng em nh ng ki n th c b ích và quý giá trong su t 4
c qua, nh
cho chúng em hành trang
i.
Em xin g i l i c
c t i th y
n tình ch b
ng d n chúng em th c hi n t t
nghi p này. Chúng em xin g i l i c
i
án t t
n bè,
h
ng ch c cho ti n tuy n chúng em trong su t nh ng
c gian kh , và g
ng viên to
l n v tinh th n và v t ch
chúng em có th hoàn thành t t
án t t nghi p này.
- CT1301
1
án t t nghi p
p H i Phòng
M CL C
............................................................................................ 4
ÁNH SÁNG VÀ BÀI
....................................................................................... 6
1.1.
.................................................................. 6
1.1.1.
............................................................................................... 6
1.1.2.
.................................................... 9
1.1.3.
tion) ............................. 10
1.1.4.
................................ 11
1.1.5.
.................................. 13
1.1.6.
tion)......................... 14
1.2.
..............................................................15
1.2.1.
(Z-Buffer)..............................................................15
1.2.2.
Stencil Buffer)...........................................................16
1.3.
ng ................................................................ 17
1.3.1.
............................................................................................ 17
1.3.2.
..................................................................................... 19
1.3.3.
................................................................. 20
1.3.4.
................................................................. 21
VÀ
.................................................................................. 23
2.1.
......................................23
2.1.1.
......................................................................23
2.1.2.
.....................................................................23
2.1.3.
................................................................................25
2.2.
........................................................................................ 26
2.3.
............................................................................................. 27
2.4.
....................................................................................... 35
2.5.
................................................................................................ 36
- CT1301
2
án t t nghi p
p H i Phòng
....................................... 37
3.1. Bài toán.................................................................................................. 37
................................................................................. 37
3.2
..................................38
3.3.
............................... 39
..................................................................39
3
................................................................................42
......................................................... .............................45
- CT1301
3
án t t nghi p
p H i Phòng
U
Trong th c t
i c m nh n th gi i b ng các giác quan c a
mình. M t v t th có th
c c m nh n b ng các xúc giác qua s s mó hay
c c m nh n b ng mùi qua kh u giác , tuy nhiên trong m t ch ng m c nào
nói c m nh n v t th
ng th giác qua màu s
m, hình
d ng,
i m t c m nh
, tr c quan và rõ ràng nh t. Vì
v y n u có th xây d
c
các v t th , hi
ng trong th gi i th c thì s cung c
i dùng m t
cách ti p c n b ng th giác tr
các v
mà h
h a máy tính là m t lãnh v c phát tri n nhanh nh t trong tin h c.
c áp d ng r ng rãi trong nhi u lãnh v c khác nhau thu c v khoa h c,
k ngh , y khoa, ki n trúc và gi i trí.
c
H c vi n Công ngh
i
tn
h a 3D b ng vi c phát minh ra thi t b hi n th
u (headu khi n b
u tiên. Nó
i nhìn có th th
c hình
i d ng l p th 3D. T
h a 3D tr thành m t trong nh
c phát tri n r c r nh t
h a máy tính.
V i công ngh ph n c ng máy tính hi n nay, các h n ch
nv
ph n c ng c
h a ba chi u ph
c gi i quy t,
chính vì v y các công ngh v
h a ba chi
c quan tâm và
phát tri n trên th gi
ng d ng c
h a ba chi u
có th
ck
H tr thi t k : M t trong nh ng ng d ng c
h a ba chi u trên máy
tr thi t k
Max, Maya, Poser,
c s d ng cho các công vi
t k nhà c a,
qu
n giao thông, các d ng c , các mô hình và c con
- CT1301
4
án t t nghi p
p H i Phòng
Giáo d
o
sinh h c, hóa h c, v t lý h c, mô ph
các b n
ng ( th c t i o) : mô ph ng
tr , lái xe, lái máy bay,
Gi i trí và ngh thu t
t k m thu t, t o mô hình cho
vi c quy ho
o d ng và hi u ch nh ki n trúc c a các công
trình, cho phép quan sát nhi
có m t cái nhìn t ng quan v công
trình t
nh s a phù h
h a ba chi u còn giúp
t
i trí; h tr các k x
n nh
V
quan tr ng c
h a ba chi u hi n nay là làm th nào th hi n
các hình nh c a th gi i lên màn hình máy tính m t cách trung th c nh t.
Xu t phát t v
án c a em xây d ng g
KI N TH
H A 3D VÀ T O BÓNG
3D, b
phép ki m tra, v bi u di
.
c
m và các phép bi
m và các
i
K THU T T O BÓNG C NG SHADOW MAPPING
v
Shadow Mapping
và các d ng ngu n sáng.
C NGHI M
- CT1301
5
án t t nghi p
p H i Phòng
1: KHÁI QUÁT V
H A 3 CHI U VÀ BÀI TOÁN T O
BÓNG.
1.1. Khái quát v
h a 3 chi u.
1.1.1. Gi i thi u.
Hình
c xu t hi n có chi u cao, chi u r ng và chi
g i là 3 chi u 3D(three-dimensional).
c
nh v i t
Cùng v i các t
ng c a camera
th gi i.
nh v trí và
nh vùng nhìn (là m t
c
c hi n th trên màn hình)
Vi c chuy n t các t
c:
th gi i sang t
c th c hi n theo
c th 1: Th c hi n m t phép bi
o tr v v trí
ng tiêu chu
m nhìn (eyepoint) s
t g ct
,
ng nhìn trùng v
ng âm c a tr c Z. Tr c X ch v phía ph i và tr c Y
ch lên phía trên trong màn hình. H t
m i này s
c g i là H t
M t (Eye Coordinate System). Phép bi
it t
th gi i sang các t a
m t là m t phép bi
c g i là phép bi
i hi n th
(Viewing Transformation). C t
th gi i và t
m
c bi u
di n b i t
ng nh t (Homogeneous Coordinates) v i w=1.
c th 2: T
t trong m t kh i l
m
g
m
c chuy n qua t
c a thi t b chu n hóa
cho vùng không gian mà ta mu n nhìn
n:
có thành ph n z nh
- CT1301
6
án t t nghi p
c này g
p H i Phòng
c con:
M t phép chi u chuy n t vùng nhìn sang 1 kh i l
v it
ng nh t: 1 x 1, 1 y 1, 1 z 1
n
ng h p s d ng
phép chi u tr c giao, vùng nhìn này s có d ng m t ng song song 3D v i các
m t song song v i các m t c a h t
m
ng h p s d ng phép
chi
i x ng, vùng nhìn s là m t hình tháp c t v
u mút là g c t
c ah t
m t. H t
ng nh t (4 thành ph
c sau phép
chi
c g i là h t
c t (Clipping Coordinate System). Phép chi u s
là m t phép bi
ng h p phép chi u là phép chi u tr c
giao. N u phép chi u là phép chi u ph i c nh s không ph i là m t phép bi n
i affine (Vì w s nh n m t giá tr khác 1)
c ti p theo, các vùng c a không gian hi n th mà không n m trong
kh i tiêu chu
c g i là kh i nhìn tiêu chu n) s b c t
ng th
c ch a trong ho c là có m t ph n trong
s
ch ph n n m trong kh i nhìn tiêu chu n m
c gi
l i. Ph n còn l i không c n quan tâm nhi u n a.
Sau khi c t g t, các t
ng nh t s
c chuy n sang t
c a
thi t b b ng cách chia x,y,z cho w. N u w nh n 1 giá tr
u,
thì phép chia này s
ng ph i c nh mong mu n trên màn hình. Vì lý
c g i là phép chia ph i c nh (Perspective
Division)
c th a 3: Phép bi
i c ng nhìn (Viewport Transformation) là s
k t h p c a 1 phép co giãn tuy n tính và 1 phép t nh ti n. S chuy n thành
ph n x và y c a t
thi t b chu n hóa
1 x 1, 1 y 1 sang t
Pixel
c a màn hình. Thành ph n z ( 1 z 1
c chuy
n [0,1] và s
cs d
chi u sâu (Depth-Value) trong thu t toán Z-Buffer
(b
c s d ng cho vi
nh m t s
c hi n th .
- CT1301
7
án t t nghi p
p H i Phòng
Hình 1.1: T ng quan v hi n th 3D và các phép chi u.
- CT1301
8
án t t nghi p
1.1.2. Bi u di
p H i Phòng
m và các phép bi
i
S chuy
it t
th gi i sang t
c a thi t b là m t chu i
các phép bi
i affine và các phép chi u trong không gian Decarts 3 chi u.
Các phép bi
i affine và các phép chi u trong không gian Decarts 3
chi u có th
c bi u di n t t nh t b i các ma tr
ng v i các
t
ng nh
i m 3D v i t
ng nh t (x,y,z,w) s
affine là (x/w,y/w,z/w).
M i quan h gi a t
affine và t
ng nh t không ph i là quan
h 1n nh
chuy n t t
affine (x,y,z) c a m
m
sang t
ng nh
t w=1: (x,y,z,1). Chúng ta th a nh n r ng t t c
các t
th gi
c bi u di n b ng cách này.
Ta s bi u di n các phép bi
transformations), phép quay (rotations), và phép t nh ti n (translations)) b ng
các ma tr n mà s
i thành ph n w (w=1).
T nh ti n b
T
(Tx , Ty , Tz ) :
S
(S x , S y , S z )
c t
{
}, tr c giao t ng
- CT1301
t, s
n t c là
c chuy n v { X , Y , Z }.
9
án t t nghi p
1.1.3. Phép bi
p H i Phòng
i hi n th (Viewing Transformation)
Phép bi
i hi n th s
camera v
m nhìn trùng v i g c t
c a tr c Z. Tr c Y sau phép bi
hình. Tr c X s ch v phía ph i.
M t cách thu n ti
c
m nhìn E , M
ng
t camera
c cho tùy ý v m t
ng nhìn d c theo chi u âm
ng s ch lên phía trên c a màn
nh v trí c a camera o là cho sãn v trí
m trong khung nhìn R
m tham chi u) và m t
s ch lên phía trên trong màn hình.
Phép bi
i hi n th s g
t phép t nh ti n s
c:
m nhìn E v g c t
. Ma tr n bi
i
ng s là M t ( E ) . K t qu s
Hình 1.2: Phép bi
M t phép quay s chuy
i t nh ti n
c v tr
v
m t ph ng YZ. Vector s ch
c quay v trùng v i tr c Y n u vuông
góc v
c h t ta s xây d ng t
n t c phù
h p trong t
th gi i.
- CT1301
10
án t t nghi p
n
p H i Phòng
E R
cv
E R
u
V n
V n
ng nhìn
(
Z
Ch v phía ph i, vuông góc v i n
Ch lên gi ng
)
X
ng góc v i n và u
Y
y ma tr n c a phép quay s là:
n c a phép bi
u, v và v
i s là:
c tính t E , R và V
1.1.4. Phép chi u tr c giao (Orthographic Projection)
ng h p phép chi u tr c giao, vùng không gian hi n th là
m t ng song song trong h t
m t. Các m t c a ng song song này song
song v i các m t c a h t
m
c và v trí c a vùng không gian
hi n th
nh b i t
m t xleft, xright, ybottom, ytop, zfront và
nh m t c a s trong m t ph ng
chi u (ho c là b t k m t nào song song v i m t XY) mà vùng không gian
hi n th s
c hi n th
a s này ph
d ng hình
vuông [t ph ng c
c và c t sau.
T
c at tc
m trong không gian (ho c ít nh t là nh
m ta
mu n nhìn) ph i th a mãn zback z zfront . Kho ng giá tr c a z ph i
các giá tr chi u sâu (depth value) n
n [-1,+1]. Các
mg nm
có giá tr chi u sâu nh
- CT1301
11
án t t nghi p
p H i Phòng
Hình 1.3:Vùng không gian hi n th c a phép chi u tr c giao
Phép chi u tr
theo th t :
c b ng cách th c hi n các phép bi
nh ti n M t ( M ) s
c ah t
i sau
a vùng không gian hi n th v g c t a
m t.
t
chi u.
c c a vùng hi n th v
i x ng qua m
mn mg
m i
nh n giá tr z
nh
i x ng
phép bi
trên có th
c ch b ng m t
M s (S ) v i:
y ma tr n c a phép chi u tr c giao s là:
- CT1301
12
án t t nghi p
Thành ph
bi
i affine. Phép chi
quan h hình h c (các t s kho
p H i Phòng
i, b i vì phép chi u tr c giao là m t phép
c s d ng trong các ng d ng c
n các
à trong CAD.
1.1.5. Phép chi u ph i c nh (Perspective Projection)
Phép chi u ph i c nh phù h p và g
i quan sát c
i
(b ng m t m t) trong th gi i 3D. T t c
m trên m
ng th
m nhìn s
c ánh x lên cùng m
mt
m
nh b i t
thi t b chu n hóa x và y. N
c
ánh x vào cùng m
m trên màn hình, ta c n ph
m nào s
c hi n th b ng thu t toán Zu sâu c a chúng.
Vì lý do này chúng ta c
t thành ph n t
khác c a thi t b
chu n hóa là z sao cho nó là m
u c a kho ng cách t
m
n m t ph ng m t XY. Kho ng cách t m
n
m t ph ng XY không b ng v i kho ng cách t
c
t g ct
xác
c các m t s
c hi n th .
y, phép chi u tr c giao s
m (v i t
ng nh t)
trong h t
m t (x,y,z,1) v m
m (t
ng nh t) trong h t
c
c a thi t b chu
s
cb
i c nh):
V i phép chi u ph i c nh, vùng không gian hi n th là m t hình tháp
c tv
u mút là g c t
.
- CT1301
13
án t t nghi p
p H i Phòng
Hình 1.4: Vùng không gian hi n th c a phép chi u ph i c nh cân
x ng (Symmetrical Perspective Projection)
1.1.6. Phép bi
i c ng nhìn (Viewport Transformation)
Phép bi
it l
:
i c ng nhìn ch g m m t phép t nh ti n và m t phép thay
thi t b chu n hóa (x, y) v i
qua t
c chuy n
pixel.
nzv i
Giá tr Zw này s
giá tr Zw nh s n
c co l
cs d
c nh
Xây d ng ma tr n bi
n u ta th c hi n phép bi
- CT1301
n
.
lo i b nh ng b m t b n. Nh
m có giá tr Zw l
m có
i là công vi
n. Tuy nhiên s hi u qu
i m t cách tr c ti p:
14
án t t nghi p
1.2. B
p H i Phòng
m và các phép ki m tra.
M tm
ng c a h u h
h a là v
. Màn hình là m t m ng hình vuông c a các
pixel. M
hi n th
c 1 màu nh
nh. Sau các quá trình
quét (bao g m Texturing
li
n ch là
im
li u chung cho m
c là giá tr chi u sâu. Các m
qua
m
m tra và các thao tác khác t
c v ra màn
hình.
N um
c các phép ki
v các pixel này, ta c n ph i bi
và thông tin v màu s c c a m
Buffer).
tr thành
c màu s c c a chúng là gì,
m màu (Color
d li u cho t ng pixel xu t hi
c g i là
b
m (Buffer). Các b
m khác nhau s
li u khác nhau
cho pixel và b nh cho m
s khác nhau gi a các b
m.
tb
m thì 2 pixel b t k s
c c p cùng m
ng
b nh gi ng nhau. M t b
m t bít thông tin cho m i pixel
cg i là m t bitplane
m ph bi
Buffer, Stencil Buffer, Accumulation Buffer.
- CT1301
15
án t t nghi p
1.2.1. B
p H i Phòng
m chi u sâu (Z-Buffer).
Khái ni m: Là b
m l u tr giá tr chi u sâu cho t
c dùng trong vi
các b m t n. Gi s
m sau các phép chi u
c ánh
t pixel trên màn hình. Nh v
chi u sâu (z) nh
c vi
chi u sâu l
Chính vì v y nên ta g i b
m này là Z-buffer.
Depth test: V i m i pixel trên màn hình, b
m chi u sâu l u kho ng
cách
. Nên n u giá tr chi u sâu c a m t
m
c l u trong b
u
sâu thì
c coi là qua Depth test (depth test pass) và giá tr chi u
sâu c a
c thay th cho giá tr l u trong b
m. N u giá tr chi u sâu
c
m
l
ki m tra chi u sâu. (Depth test Fail).
1.2.2. B
m khuôn (Stencil Buffer).
Khái ni m: B
khung c
màn hình. B
a m t v t th qua g
gi
cs d
t vùng nh
u m t vùng nào
nh ph
Stencil Test: Phép ki m tra Stencil ch
c th c hi
m
khuôn. (N
m khuôn thì phép ki
c coi là
luôn pass). Phép ki m tra Stencil s so sánh giá tr l
m t Pixel v i m t giá tr tham chi u theo m t hàm so sánh cho tr
.
OpenGL cung c p các hàm nh là GL_NEVER, GL_ALWAYS, GL_LESS,
GL_LEQUAL, GL_EQUAL, GL_GEQUAL, GL_GREATER hay là
GL_NOTEQUAL. Gi s hàm so sánh là GL_LESS, m
c coi là qua phép ki m tra (pass) n u nh giá tr tham chi u
nh
l u trong Stencil Buffer.
Ngoài ra OpenGL còn h tr m t hàm là:
glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
- CT1301
16
án t t nghi p
p H i Phòng
nh d li u trong stencil Buffer s
i gi nguyên giá tr hi
, thay th
i m t giá tr tham chi
m giá tr
Hàm fail s
c s d ng n
hàm zfail s
c dùng n u Depth test
cn
hi n. M
nh c 3 tham s này là GL_KEEP.
i th nào n u
i 0, thay th
.N
c dùng n u
c th c
1.3. T o bóng và phân lo i bóng.
1.3.1. Khái ni m.
xu t hi n khi m t v t th
t vùng t i n m gi a m t vùn
c chi u sáng,
c chi u sáng toàn b ho c m t ph
Bóng là m t trong nh ng y u t quan tr ng nh t c
i
v vi c nh n bi t các v t th trong th gi i 3 chi u. Bóng giúp cho ta nh n
bi
c v
i c a v
bóng (occluder) v i m t nh n bóng
(receiver), nh n bi
c và d ng hình h c c a c v
bóng và
m t nh n bóng.
- CT1301
17
án t t nghi p
p H i Phòng
Hình 1.5: Bóng cung c p thông tin v v
i c a v t th . V i
nh bên trái ta không th bi
c v trí c a con r
il
t3
nh bên ph i ta th y v kho ng cách c a chúng so v i m
t xa d n
Hình 1.6:Bóng cung c p thông tin v d ng hình h c c a m t ti p nh n.
Hình bên trái ta không th bi
c d ng hình h c c a m t ti p nh n,
còn m t bên ph i thì d dàng th
c.
- CT1301
18
án t t nghi p
p H i Phòng
Hình 1.7:Bóng cung c p thông tin v d ng hình h c c a con r i. Hình
bên trái con r i c
gi a nó c m cái vòng, và bên ph i nó
c m cái m trà
1.2.2. Phân lo i bóng
H u h t các thu
u có th
c
chia làm 2 lo i chính là bóng c ng (Hard shadow) và bóng m m (Soft
shadow), ph thu c vào lo i bóng mà nó t o ra.
c hi n th
c chia làm 2 ph n phân bi t: Ph n chính
mà n m hoàn toàn trong
cg
, vùng bao bên
ngoài nó và có m t ph n n
c g i là vùng n a bóng. Các
thu t toán t o bóng c ng là nh ph n vi m i th
u ch có 2 tr ng thái là
c chi u sáng (0) Chúng ch hi n th duy nh t ph n bóng c a
bóng. Các thu t toán t o bóng m m hi n th vùng n
i x lý tính toán ph n m
.(K t qu t s phân b
ánh sáng b t quy t c trong
vùng n a bóng)
- CT1301
19
án t t nghi p
p H i Phòng
Hình 1.8:
.
1.2.3. Các k thu t t o bóng c ng
(Fakes Shadow)
Các thu
bao g
n b ng cá
c s d ng trong nh
cho nh
c bi
ng h
c . Nh nh
(Ví d
c bi
cv
th t.
i (Shadow Volume)
i là m
nh
n c u trúc hình h c c a v
, là nh
. Nh
.T
m
- CT1301
nh vi n này s
a vào các phép ki m tra ta s ki
.
20
án t t nghi p
p H i Phòng
(Shadow Mapping)
(Depth Buff
.
(Ray Tracing)
T
:
V im
m t ta vào m t không gian là m
ng th ng
s c t vào c a s (màn hình) và ch m vào v t th trong không gian (g n nh t
t m t). T
m ch m vào v t th
m
m ch m c a v t th
có tính ch
nào mà ta chia ra các tia sáng ti p theo
N
m ch
, ph n x thì ta l
theo t ng tia ph n x , khúc x
N ut
m ch
t th có tính xuy n th u, ph n x t c là 1 ph n
c
t th
t ph
c ph n x ta l i xét
t ng tia....ti p t c m i tia l i ch m vào v t th khác l i chia ra t ng tia khúc
x ph n x riêng m
m ch m .
Sau khi c t m i v t th có th trong không gian ta tính màu t i tia t
m tc t c as
t
ng quét t t c các tia t
m
n màn hình...
.
1.2.4. Các k thu t t o bóng m m.
.
- CT1301
21
án t t nghi p
p H i Phòng
:
(Frame Buffer Algorithms)
.
(Distributed and Bidirectional Ray
Tracing)
-
.
(Radiosity)
.
- CT1301
22
án t t nghi p
p H i Phòng
2: K THU T T O BÓNG C NG SHADOW MAPPING
VÀ CÁC LO I NGU N SÁNG.
2.1. Các lo i ngu n sáng.
2.1.1. Ngu n sáng xung quanh.
Ánh sáng xung quanh là m c sáng trung bình, t n t i trong m t vùng
không gian. M
ng là không gian mà t
iv
u
c cung c p m
ng ánh sáng lên b m
m i phía m i
nh v i m t m c c th
g i là m c sáng xung quanh c a vùng không gian mà v t th
, sau
ng v
c t các ngu
c
sáng cu i cùng lên m
m hay m t m t c a v t th
nc am t
Ánh sáng ph n
Ánh sáng ph n x
Ánh sáng t i
Ánh sáng t i
Hình 2.1: S ph n x ánh sáng
2.1.2. Ngu
ng.
Ngu
ng gi ng n
ng gì mà m t tr i cung c p cho
chúng ta. Nó bao g m m t t p các tia sáng song song, b t k
c a
chúng có gi ng nhau hay không. Có hai lo i k t qu c
ng
khi chúng chi
n b m t là: khuy ch tán và ph n chi u. N u b m t ph n
x toàn b (gi
nx s
cv i
- CT1301
23
án t t nghi p
p H i Phòng
ng c a góc t
ng h
c l i, n u b m t là không ph n x
toàn ph
nhám, xù xì) thì m t ph n các tia sáng s b to
ng
khác hay b h p th , ph n còn l i thì ph n x l
ng ánh sáng ph n x
l i này t l v i góc t i.
n hi
ng ph n x
không toàn ph
ng ph bi n (vì ch có nh
ng
c c u t o t nh ng m
i x y ra hi
ng ph n x
toàn ph
ng th
c a ánh sáng ph n x trên b
m t.
nc am t
Ánh sáng ph n x
Ánh sáng t i
Hình 2.2: S ph n x không toàn ph n c a ánh sáng
Trong hình 2.2 th hi n s ph n x ánh sáng không toàn ph
m
nét c a các tia ánh sáng t i th hi
m nh c a các tia
ph n x th hi
sáng th p. Nói chung, khi b m t là không ph n x
toàn ph
c a ánh sáng ph n x (hay t m g i là tia ph n x ) luôn
c a ánh sáng t i (hay g i là tia t
c a
tia ph n x còn t l v i góc gi a tia t i v i vector pháp tuy n c a b m t,
n u góc này càng nh
ng
ph n x càng cao, n u góc này l n thì
ph n x r t th p.
n thành ph n ánh sáng
khuy ch tán và t m b qua hi
ng ph n x toàn ph
cho ti n trong
vi c tính toán ta t
ng c a tia t i th c s , v y bây gi
ng c a tia
t
c l i c a tia sáng t i.
- CT1301
24