Tìm hiểu kỹ thuật tạo bóng cứng Shadow Volume (Đồ án tốt nghiệp)

40 115 0
Tìm hiểu kỹ thuật tạo bóng cứng Shadow Volume (Đồ án tốt nghiệp)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Tìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow VolumeTìm hiểu kỹ thuật tạo bóng cứng Shadow Volume

-o0o - ISO 9001:2008 TÌM HI U K THU T T O BÓNG C NG SHADOW VOLUME Sinh viên th c hi n: G Mã s sinh viên: H I PHÒNG Nguy n Ti PGS.TS 1351010036 2013 án t t nghi p p H i Phòng L IC Em xin g i l i c i 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 quý giá su t c qua, nh cho chúng em hành trang i Nguy n Ti - CT1301 án t t nghi p p H i Phòng M cL c L U H A BA CHI U VÀ BÀI TỐN T O BĨNG 1.1 Khái qt v h a chi u 1.1.1 Hi n th 3D(3D Viewing) 1.1.2 B m phép ki m tra 11 1.2 Bài toán t o bóng 12 1.2.1 Bóng d ng ngu n sáng 12 1.2.2 M t s cách ti p c n t o bóng 17 THU T T O BÓNG C NG B VOLUME 19 2.1 19 20 2.3 24 2.4 T o bóng kh i b ng thu t tốn Z-Pass 27 2.5 T o bóng b ng thu t toán Z-Fail 30 2.5.1 T t c m c c a bóng t v 2.5.2 T t c m t sau c a bóng t v 2.5.3 V yn 2.6 m nhìn 31 m nhìn 32 u c a kh i 33 35 C NGHI M 36 3.1 Bài toán 36 3.2 Phân tích, l a ch n công c 36 3.2.1 Gi i thi u ngôn ng l p trình 36 3.2.2 L a ch n công c 37 3.3 K t qu 37 K T LU N 39 TÀI LI U THAM KH O: 39 Nguy n Ti - CT1301 án t t nghi p p H i Phòng h a máy tính m t l nh v c phát tri n nhanh nh t tin h c Nó c áp d ng r ng rãi nhi u l nh v c khác thu c v khoa h c, k ngh , y khoa, ki n trúc gi i trí H c vi n Cơng ngh h a 3D b ng vi c phát minh thi t b hi n th tn (head- u n b nhìn có th th c hình thành m t nh u u u tiên i d ng l p th 3D T c phát tri n r c r nh t c i h a 3D tr h a máy tính c ng d ng r ng rãi h u h t t t c v n nh, Ho t hình, ki n trúc ng d ng xây d ng mơ hình th c t i khơng th khơng nh n vai trò t i quan tr ng c h a 3D vi c t o game s d h a hi s t o nên m t n n công nghi p game phát tri n m nh m h M h a 3D t o mơ t ng, mơ hình th gi i th t b ng máy tính cho gi ng v i th t t t Vi c nghiên c thu t khác c h n m t m c tiêu nh ng, mơ hình c t o máy tính gi ng th t nh t Và m t ng Xu t phát t v án c a em xây d ng g KHÁI QUÁT V H A BA CHI U VÀ BÀI TỐN T O BĨNG 3D, v bi u di m phép bi i C K THU T T O BÓNG C NG B SHADOW VOLUME v Shadow Volume d ng ngu n sáng C NGHI M Nguy n Ti - CT1301 án t t nghi p p H i Phòng ng th gi i th c ph n l ng chi u thi t b hi n th ch chi u Do v y, mu n có hình nh chi u ta c n ph i gi l p Chi n chuy it c Hình nh s c hình thành t t , ngày chi ti t nh v i t nh v c o kh th hình) nh vùng nhìn (là m Vi c chuy n t t c: th gi i sang t th gi i Cùng v i ng c a camera c hi n c th c hi n theo u tiên 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 tr c Y ch lên phía hình H t m i s c g i H t M t (Eye Coordinate System) Phép bi n i t t th gi i sang t m t m t phép bi c g i phép bi i hi n th (Viewing Transformation) C t th gi i t m c bi u di n b i t ng nh t (Homogeneous Coordinates) v i w=1 c th T a m t m t kh i l m g c cu i cùng, phép bi c chuy n qua t c a thi t b chu n hóa cho vùng khơng gian mà ta mu c n: có thành ph n z nh i c ng nhìn (Viewport Transformation) s k t h p c a phép co giãn n tính phép t nh ti n S chuy n thành ph n x Nguy n Ti - CT1301 án t t nghi p y c a t p H i Phòng thi t b chu n hóa sang t hình Thành ph n z ( z c chuy n [0,1] s chi u sâu (Depth-Value) thu t toán Z-Buffer (b d ng cho vi c x nh m t s c th bao g c s d ng cs c hi n th c : - M t phép chi u chuy n t vùng nhìn sang kh i l t Pixel c a ng nh t: nv i ng h p s d ng phép chi u tr c giao, vùng nhìn s có d ng m t ng song song 3D v i m t song song v i m t c a h t m ng h p s d ng phép chi i x ng, vùng nhìn s m t hình tháp c t v m t H t ng nh t (4 thành ph u mút g c t c sau phép chi c ah t c g i h t a c t (Clipping Coordinate System) Phép chi u s m t phép bi i affine ng h p phép chi u phép chi u tr c giao N u phép chi u phép chi u ph i c nh s không ph i m t phép bi 1) tiêu chu i affine (Vì w s nh n m t giá tr khác c ti p theo, vùng c a không gian hi n th mà không n m kh i c g i kh i nhìn tiêu chu n) s b c ng th c ch a ho c có m t ph n s c thay ch ph n n m kh i nhìn tiêu chu n m c gi l i Ph n l i khơng c n quan tâm nhi u n a Sau c t g t, 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 giá tr u, phép chia s ng ph i c nh mong mu c g i phép chia ph i c nh (Perspective Division) Nguy n Ti - CT1301 án t t nghi p p H i Phòng Hình 1.1: T ng quan v hi n th 3D phép chi u Phép bi i hi n th s v m nhìn trùng v i g c t (xem hình 2.1) 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 t camera c cho tùy ý v m t camera ng nhìn d c theo chi u âm c a tr c Z ng s ch lên phía c a nh v trí c a camera o cho sãn v trí c a m nhìn E , M m khung nhìn R ch lên phía hình Phép bi Nguy n Ti i hi n th s g - CT1301 m tham chi u) m ng s c: án t t nghi p p H i Phòng t phép t nh ti n s m nhìn E v g c t Ma tr n bi i ng s M t ( E ) K t qu s t phép quay s chuy m t ph ng YZ Vector s ch c v tr v c quay v trùng v i tr c Y n u c h t ta s xây d ng t vng góc v i n t c phù h p t th gi i n u v E R E R V n V n cv ng nhìn Z Ch v phía ph i, vng góc v i n Ch lên gi ng n u ( Oz ) X ng góc v i n u Y y ma tr n c a phép quay s là: M r (u,v, n) n c a phép bi u, v Nguy n Ti - CT1301 i s là: c tính t E , R V án t t nghi p p H i Phòng ng h p phép chi u tr c giao, vùng không gian hi n th m t ng song song h t m tc ah t m m t Các m t c a ng song song song song v i c v trí c a vùng không gian hi n th c xác nh b i t m t xleft, xright, ybottom, ytop, zfront zback (xleft, ybottom) (xright, ytop) nh m t c a s m t ph ng chi u (ho c b t k m t song song v i m t XY) mà vùng không gian hi n th s c hi n th d ng hình vuông [-1,+1]2 zfront zback a s ph i m t ph ng c t c c t sau T c at tc m không gian (ho c nh t nh ng m ta mu n nhìn) ph i th a mãn zback z zfront Kho ng giá tr c a z ph c giá tr chi u sâu (depth value) n có giá tr chi u sâu nh n [- mg nm t Hình 1.2 : 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 : nh ti n M t ( M ) s t c ah t c b ng cách th c hi n phép bi i sau a vùng không gian hi n th v g c m t c c a vùng hi n th v m i chi u Nguy n Ti - CT1301 án t t nghi p p H i Phòng i x ng qua m mn mg nh n giá tr z nh i x ng bi có th c ch b ng m t phép M s (S ) v i: y ma tr n c a phép chi u tr c giao s là: Thành ph i affine Phép chi hình h c (các t s kho i, b i phép chi u tr c giao m t phép bi n c s d ng ng d ng c n quan h Phép chi u ph i c nh phù h p g i quan sát c i (b ng m t m t) th gi i 3D T t c m m ng th m nhìn s c ánh x lên m m nh b it thi t b chu n hóa x y N c ánh x vào m m hình, ta c n ph m s c hi n th b ng thu t toán Zu sâu c a chúng Vì lý c m t thành ph n t khác c a thi t b chu n hóa z cho m u c a kho ng cách t n m t ph ng m t XY Kho ng cách t m t n m t ph ng XY không b ng v i kho ng cách t t g ct c m t s c hi n th y, phép chi u tr c giao s m (v i t ng nh t) h t m t (x,y,z,1) v m m (t ng nh t) h t c t (x ,y ,z ,w c a thi t b chu n hóa (affine) (x ,y ,z ) s c b ng cách chia x ,y ,z cho w (Phép chia ph i c nh): Nguy n Ti - CT1301 án t t nghi p p H i Phòng v4.y = (v2.y - L.y) * He_so_chieu; v4.z = (v2.z - L.z) * He_so_chieu; 2.5 T m ta s v c t giác bao ngồi bóng kh i V l i c n ph i gi i quy t v i bóng kh i ph yn u c a kh i l i tr thành m t kh th c hi n phép ki m tra m t cách xác nh n ta dùng m cc a v t th i v i v trí c a ánh sáng N p m t sau ta ch c n chi u t ng m t sau c a v t th v c Ph n không c n thi t l m b u g c Nên nh n nhi u 2.6 Nguy n Ti - CT1301 25 án t t nghi p p H i Phòng nh t giác bao quanh bóng kh i isFacingLight=new bool[numTriangles]; if(!isFacingLight) { errorLog.OutputError("Unable to allocate memory for %d booleans", numTriangles); return false; } //Create space for connectivity data neighbourIndices=new GLint[numTriangles*3]; if(!neighbourIndices) { errorLog.OutputError("Unable to allocate memory for %d neighbour indices", numTriangles*3); return false; } //Create space for "is silhouette edge" booleans isSilhouetteEdge=new bool[numTriangles*3]; if(!isSilhouetteEdge) { errorLog.OutputError("Unable to allocate memory for %d booleans", numTriangles*3); return false; } //Calculate the neighbours SetConnectivity(); return true; } Nguy n Ti - CT1301 26 án t t nghi p p H i Phòng -Pass t m c, m t sau ta s dùng m t b m cho m m c n ki m tra, mà s xuyên qua m t m c gi n c a bóng kh ub ph n bóng, Còn n u l s m cho giá tr b t m t sau m m n m vùng bóng c v Và Stencil Buffer s th c hi pixel hình m cung c p cho m i m pixel ki m tra b m c ghi hình hay khơng i Chúng ta ph i th c s v bóng c a v t th ra, hay nói xác v v t th v i bóng c a c vi c m t pixel có n m vùng bóng kh i nh m t pixel có n m vùng bóng kh ng c a là, n i m c n ki m tra v t camera (m t nhìn) N u s m c s m t sau c a bóng kh i mà c t b ng m vùng bóng kh i N u c t s m c c a bóng kh i nhi m t sau mà c m vùng bóng kh i Thu t tốn s c mơ t b ng mã gi Procedure IN_SHADOW_TEST // For {t t c v t th c Z-pass bóng} - Xây d ng danh sách c nh vi n - Tính tốn t giác bao quanh bóng kh i d a c nh vi n t v trí c a ngu n sáng End for For {T t c m c c a bóng kh i nhìn t v trí c m nhìn} if Depth test passes then - Stencil Buffer End if End for Nguy n Ti - CT1301 27 án t t nghi p p H i Phòng For {T t c m t sau c a bóng kh i nhìn t v trí c m nhìn} if Depth test passes then - Gi m giá tr Stencil Buffer End if End for 2.7 2.8 Nguy n Ti - CT1301 28 án t t nghi p p H i Phòng 2.9 2.10 : Không c th c hi Xóa h t Z-buffer Stencil-Buffer, Ch c ch n r ng Ch buffer ch c b t bóng) v ghi vào Z- T o nh c a toàn b khung c nh (bao g m v t th m t h ng cho Zc c p nh t - T t ch ghi vào Z-buffer - V m c c a bóng kh i, N u chúng th c s c v Stencil Buffer Nguy n Ti - CT1301 29 án t t nghi p - p H i Phòng V m t sau c a bóng kh i, N u chúng th c s m giá tr Stencil Buffer c v ra.(Có - B t ch Stencil test (ch nh m có giá tr Stencil = m i c v hình), Xóa Z-buffer, b t ch ghi vào Z-buffer, b t ngu n sáng - V tồn b khung c nh nh m có giá tr stencil Buffer -Fail Thu t toán Z-Pass ng h x có m m nhìn (viewpoint) n m ng h p này: Tr giá tr c n chi phí tính tốn s r m r t l c vùng bóng kh i Có gi i pháp cho ph n bóng kh ng h p có nhi u v t th ) Tuy nhiên n m nhìn t T o m t m t ph ng n m nhìn n t c r t g m nhìn cho m i ph n bóng kh i y, ph c t p chi phí tính tốn Cách th s d ng thu t tốn Z-Fail Thay tính tốn giá tr Stencil b ng vi c c a bóng kh i gi m giá tr c a m t sau ZBuffer Pass, tồn b q trình s m t vơ c mt m nhìn Vì th thu t tốn g i Z-Fails Thu t toán Z- c th hi n b Procedure IN_SHADOW_TEST // For {t t c v t th c n mã gi sau: Z-fail bóng} - Xây d ng danh sách c nh vi n - Tính tốn t giác bao quanh bóng kh i d a c nh vi n t v trí c a ngu n sáng End for For {T t c m c c a bóng kh i nhìn t v trí c m nhìn} if Depth test fails then - Gi m giá tr Stencil Buffer End if Nguy n Ti - CT1301 30 án t t nghi p p H i Phòng End for For {T t c m t sau c a bóng kh i nhìn t v trí c m nhìn} if Depth test fails then - Stencil Buffer End if End for 2.5.1 Void SHADOW_MODEL::SetConnectivity() { //set the neighbour indices to be -1 for(unsigned int i=0; i

Ngày đăng: 27/02/2018, 09:35

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan