Tìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow MappingTìm hiểu kỹ thuật tạo bóng cứng Shadow Mapping
Trang 2Em xin g i l i c i các th y cô khoa Công ngh thông
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.
n tình ch b ng d n chúng em th c hi n t t án t t
h ng ch c cho ti n tuy n chúng em trong su t nh ng
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.
Trang 3M C L 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
Trang 437
3.1 Bài toán 37
37
3.2 .38
3.3 39
3 39
42
45
Trang 5Trong 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
các v t th , hi ng trong th gi i th c thì s cung c i dùng m t
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,
chính vì v y các công ngh v h a ba chi c quan tâm và
H tr thi t k : M t trong nh ng ng d ng c h a ba chi u trên máy
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
Trang 6Giáo d o ng ( th c t i o) : mô ph ng sinh h c, hóa h c, v t lý h c, mô ph tr , lái xe, lái máy bay, các b n
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
Trang 71: 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.
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 i t 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
di n b i t ng nh t (Homogeneous Coordinates) v i w=1
cho vùng không gian mà ta mu n nhìn
Trang 8i 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
ng th c ch a trong ho c là có m t ph n trong
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 s d chi u sâu (Depth-Value) trong thu t toán Z-Buffer
Trang 9Hình 1.1: T ng quan v hi n th 3D và các phép chi u.
Trang 10ng 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
sang t ng nh t w=1: (x,y,z,1) Chúng ta th a nh n r ng t t ccác t th gi c bi u di n b ng cách này
{ }, tr c giao t ng t, s c chuy n v {X,Y,Z }.
Trang 11M t cách thu n ti nh v trí c a camera o là cho sãn v trí
c m nhìn E, M m trong khung nhìn R m tham chi u) và m t
ng s ch lên phía trên trong màn hình
Trang 12R E
R E
n V
n 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
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
m g n m có giá tr chi u sâu nh
Trang 13Hì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 c b ng cách th c hi n các phép bi i sau theo th t :
Trang 14Thành ph i, b i vì phép chi u tr c giao là m t phép
bi i affine Phép chi c s d ng trong các ng d ng c n các
1.1.5 Phép chi u ph i c nh (Perspective Projection)
(b ng m t m t) trong th gi i 3D T t c m trên m ng th
ánh x vào cùng m m trên màn hình, ta c n ph m nào s
Trang 15Hì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)
Trang 161.2 B m và các phép ki m tra.
Màn hình là m t m ng hình vuông c a các
v các pixel này, ta c n ph i bi c màu s c c a chúng là gì,
Buffer)
b m (Buffer) Các b m khác nhau s li u khác nhau
Trang 171.2.1 B 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
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
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
ki m tra chi u sâu (Depth test Fail)
1.2.2 B m khuôn (Stencil Buffer).
a m t v t th qua g
Stencil Test: Phép ki m tra Stencil ch c th c hi m
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
Ngoài ra OpenGL còn h tr m t hàm là:
Trang 18nh d li u trong stencil Buffer s i th nào n u
i gi nguyên giá tr hi , thay th i 0, thay th
i m t giá tr tham chi m giá tr
Trang 19Hì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 i l t 3
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.
Trang 20Hì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 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)
Trang 22s 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
Trang 242: 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
chúng ta Nó bao g m m t t p các tia sáng song song, b t k c a
Trang 25ph 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ì
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
Trang 26N u g a tia t i v i vector pháp tuy n c a b m t thì thu c vào tia t i a và vector pháp tuy n c a m t n theo công th c:
=
n a
n a
z0-plz), hay tia t i: a = (plx - x0, ply - y0,plz - z0)
Trang 27V y v i ngu n sáng nh h ng, chúng ta c n tính tia t i cho m i i m trên m t, t k t h p v i vector pháp tuy n c a m t tính c c ngsáng t i m n u tính toán tr c ti p thì có th m t khá nhi u th i gian
do ph i tính vector a và tính Cos( ) thông qua công th c (2.1) v i t t c các
m trên m t Nên nh r ng trong tình h ng ngu n sáng m thì chúng ta
bu c lòng ph i tính Cos( ) thông qua công th c (2.1) vì vector a s thay ikhi m t hay ngu n sáng thay i (tr khi m t song n u m t nh vàngu n sáng c nh thì suy ra chúng ta ch c n tính c ng sáng m t
Trang 28Hình 2.3: Chi u Shadow Map
2.3 Thu t toán.
sáng ra màn hình
sâu trong Z-buffer vào trong b sâu Các giá tr
float4 position : SV_POSITION;
float4 depthPosition : TEXTURE0;
Trang 29// Tính toán v trí c nh so v i t th gi i, xem và chi u.
output.position = mul(input.position, worldMatrix);
output.position = mul(output.position, viewMatrix);
output.position = mul(output.position, projectionMatrix);
các giá tr v trí trong m t giá tr u vào th tính toán giá tr chi u sâu.
output.depthPosition = output.position;
return output;
}
Trang 30float4 position : SV_POSITION;
float4 depthPosition : TEXTURE0;
// L y giá tr chi u sâu c m nh.
depthValue = input.depthPosition.z / input.depthPosition.w;
toàn b khung c nh t v trí c m nhìn(camera)
Trang 31T này chính là t nh giá tr sâu khi th c hi n depth test Gi s m này khi chuy n sang s là
Trang 32Hình 2.5: A > c chi u sáng
+Code: chuy n t sang h t c a ánh sáng
// Tính toán v trí c a các nh xem b i ngu n sáng.
output.lightViewPosition = mul(input.position, worldMatrix);
Trang 33// Tính toán v trí c nh theo t th gi i.
worldPosition = mul(input.position, worldMatrix);
nh v trí ánh sáng d a trên v trí c a ánh sáng và v trí c a
nh theo t th gi i.
output.lightPos = lightPosition.xyz - worldPosition.xyz;
// Chu n hóa các vector tho v trí ánh sáng.
nh màu khu ch tán cu i cùng d a trên các màu
Trang 34/ / Nhúng màu s c ánh sáng.
color = saturate(color);
} }
Trang 36Ti p theo th c hi n phép chi u thích h p (Phép chi u tr c giao)
h t thi t b tiêu chu n PS
[0,1] v i ma tr n S là:
Trang 37m: T n thêm th i gian cho quá trình render shadow map.
Th i gian xoá frame buffer
Th i gian sao chép d li u t frame buffer sang b nh chính (c CPU
Trang 38Microsoft Visual Studio là m t ng phát tri n tích h p (IDE)
t Microsoft c s d phát tri n giao di u khi n và giao di n
h a ng d ng cùng v i Windows Forms, các trang web , các
ng d ng web , và các d ch v web trong c mã ngu n g c cùng v i mã s
Windows , Windows Mobile ,Windows CE , NET Framework , NET Compact Framework và Microsoft Silverlight
Visual Studio bao g m m t trình biên t p mã h tr IntelliSense
refactoring code Là công c cho phép b n vi t mã, g r i và biên d ch
u ngôn ng l p trình NET khác nhau
c xây d ng b ng các ngôn ng bao g m C /C + + (thông qua Visual
C + + ), VB.NET (thông qua Visual Basic.NET ), C # (thông qua Visual C
# ), và F # H tr cho các ngôn ng M , Python , và c a Ruby s
nh i khác có s n thông qua d ch v ngôn ng t riêng r Nó
Trang 39Microsoft Visual C++ c g i là MSVC) là m t s n ph m Môi
ng phát tri n tích h p (IDE) cho các ngôn ng l p trình C, C++,
và C++/CLI c aMicrosoft Nó có các công c cho phát tri n và g l i mã
Windows API, DirectX API, vàMicrosoft.NET Framework
t ng hoàn thành vi c vi t mã) và các ch l i tiên ti n
t (header files) và liên k t t nh ti n (incremental link) - ch liên
k t nh ng ph n b i trong quá trình xây d ng ph n m m mà không làm
án ph n m m l n
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "winmm.lib")
Trang 41Phép chi u này chi u v t ch n sáng lên trên m t m t ph ng o
gi a ngu n sáng và v t th t o ra shadow map c a v t th
Hình 3.1: Chi u Shadow Map
Trang 42th c hi n phép chi t h t a
có g c là ngu n sáng và tr ng v phía v t ch n sáng Tr c Z
m t ph ng t o b i 2 tr c X- nh các tr c c a m t ph ng o mà
t ngu n sáng ta có th chi u nó lên m t ph ng o m t cách ddàng
Trang 43Hình 3.3: c t o v c b bóng là 512
, ph i tính toán nhi u.
S F c render m i giây
V c t o bóng
M t ph ng nh n bóng
Kích th c c a b bóng
Trang 44Hình 3.4: c t o v c b bóng là 256
.
Trang 45Hình 3.5: c t o v c b bóng là 128 c
Trang 46PH N K T LU N
án, sau khi phân tích, tìm hi u chung v