b. Nguồn sáng vùng
2.1.5. Tạo bóng bằng thuật toán Z-Fail
Thuật toán Z-Pass ở trên có một nhƣợc điểm rất lớn là chƣa xử lý đƣợc trƣờng hợp khi điểm nhìn (viewpoint) nằm ở trong vùng bóng khối. Có 3 giải pháp để xử lý trƣờng hợp này:
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
nhƣ thế này thì chi phí tính toán sẽ rất đắt.
Tạo một mặt phẳng nằm trƣớc và rất gần điểm nhìn cho mỗi phần bóng khối mà điểm nhìn nằm trong đó. Cách này cũng vậy, khá phức tạp và chi phí tính toán cũng đắt.
Cách thứ 3 là sử dụng thuật toán Z-Fail [13]. Thay vì tính toán giá trị Stencil bằng việc tăng các mặt trƣớc của bóng khối và giảm giá trị của các mặt sau khi Z-Buffer Pass, toàn bộ quá trình sẽ đƣợc thay đổi để đếm từ vô cực thay vì đếm từ điểm nhìn. Vì thế thuật toán này còn gọi là Z-Fails.
Thuật toán Z-fail đƣợc thể hiện bằng đoạn mã giả sau:
Procedure IN_SHADOW_TEST // Z-fail
For {tất cả các vật thể cần đổ bóng} do
- Xây dựng danh sách các cạnh viền.
- Tính toán các tứ giác bao quanh bóng khối dựa trên các cạnh viền và từ vị trí của nguồn sáng.
End for
For {Tất cả các mặt trƣớc của bóng khối nhìn từ vị trí của điểm nhìn} do
if Depth test fails then
- Giảm giá trị Stencil Buffer.
End if
End for
For {Tất cả các mặt sau của bóng khối nhìn từ vị trí của điểm nhìn} if Depth test fails then
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
- Tăng giá trị Stencil Buffer.
End if
End for
2.1.6. So sánh giữa 2 thuật toán
Thuật toán Z -Pass Thuật toán Z -fail Ƣu điểm Không cần thiết phải
“đậy nắp” (Cap)
Tạo ít mặt hơn (do không cần tạo capping ) Nhanh hơn Z-fail. Dễ thƣ̣c hiện hơn
Giải quyết đƣợc trƣờng hợp điểm nh ìn nằm trong bóng khối .
Nhƣợc điểm
Không giải quyết đƣợc vấn đề khi điểm nhìn ở trong bóng khối .
Không có tƣ̣ bóng (Self- shadow)
Chậm hơn Z-pass. Đòi hỏi bóng khối phải
đƣợc Capping.
Phải tạo ra nhiều mặt hơn do phải Capping . Khó thực hiện hơn . Không có tƣ̣ bóng (Self-
Shadow)
2.2. Kỹ thuật tạo bóng sử dụng bản đồ bóng
2.2.1. Giới thiệu
Shadow Mapping đƣợc giới thiệu đầu tiên bởi Lance Williams năm 1978. Từ đó nó đƣợc sử dụng rất rộng rãi cả trong tạo ảnh offline lẫn trong các ứng dụng thời gian thực. Shadow mapping đƣợc sử dụng bởi Pixar’s
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Shadow mapping [6] là kỹ thuật tạo bóng trên không gian ảnh (image- space algorithm) nên ta những thông tin về hình dạng của vật thể hay những kiến thức hình học là không cần thiết. Thuật toán này cũng giống nhƣ thuật toán bóng khối, thực hiện phép kiểm tra “trong bóng” (in shadow) trên từng pixel. Một pixel đƣợc chiếu sáng nếu không có vật nào chắn giữa đƣờng nối nó và nguồn sáng. Chìa khóa để hiểu đƣợc thuật toán Shadow Mapping (bản đồ bóng) là những điểm nằm trên bản đồ bóng chính là những điểm sẽ đƣợc hiển thị ra màn hình nếu nhƣ điểm nhìn đặt ở vị trí của ánh sáng.
Chúng ta có một thuật toán để xét xem điểm nào sẽ đƣợc hiển thị với ngƣời quan sát. Đó là sử dụng Z-buffer. Vì thế những điểm có depth test pass nếu chúng ta vẽ toàn bộ khung cảnh từ vị trí của nguồn sáng thì đó chính là những điểm không nằm trong bóng.
2.2.2. Thuật toán
Thuật toán sẽ gồm 2 bƣớc chính:
Đầu tiên ta sẽ vẽ toàn bộ khung cảnh (chƣa có bóng) từ vị trí của ánh sáng ra màn hình.
o Lƣu giá trị độ sâu trong Z-buffer vào trong bản đồ độ sâu. Các giá trị độ sâu này thực chất là giá trị z của những điểm có depth test pass và đƣợc hiển thị trên màn hình.
o Bản đồ độ sâu này sẽ đƣợc dùng trong bƣớc 2.
Sau đó chúng ta lại vẽ toàn bộ khung cảnh từ vị trí của điểm nhìn (camera).
o Với mỗi điểm ta sẽ chuyển tọa độ của chúng sang hệ tọa độ của ánh sáng.
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
o Tọa độ này chính là tọa độ để xác định giá trị độ sâu khi thực hiện depth test. Giả sử điểm này khi chuyển sang sẽ có tọa độ là (x,y,z’).
o Sau đó công việc còn lại là so sánh giá trị độ sâu z của điểm có tọa độ (x,y) trong bản đồ độ sâu với giá trị z’ của điểm (x,y,z’) đó.
Nếu z < z’ thì điểm này nằm trong bóng và sẽ không đƣợc vẽ ra màn hình khi thực hiện vẽ khung cảnh từ vị trí của điểm nhìn.
Nếu z >=z’ thì điểm đó đƣợc chiếu sáng và sẽ đƣợc vẽ ra màn hình từ vị trí của điểm nhìn.
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 2.13: Hình trên cùng bên trái: Khung cảnh không có bóng được vẽ từ vị trí của điểm nhìn . Hình trên cùng bên phải : Khung cảnh được nhìn từ nguồn sáng. Hình giữa trái : Bản đồ bóng được tạo ra kh i nhìn từ vị trí của nguồn sáng. Hình giữa phải (a): Bản đồ bóng được chiếu lên trên khung cảnh được nhìn từ mắt (giá trị A ). Hình dưới trái (b): Chiếu khoảng cách phẳng của nguồn sáng lên khung cảnh được nhìn từ mắt (Giá trị B ). Hình Dưới phải : Bóng được vẽ ra sau phép kiểm tra chiều sâu giữa (a) và (b).
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
tọa độ hiển thị ánh sáng.
Hình 2.14: Các hệ tọa độ và các ma trận biến đồi.
Đầu tiên ta phải chuyển từ hệ tọa độ mắt (Camera’s Eye Space) về hệ tọa độ thế giới bằng ma trận nghịch đảo của ma trận biến đổi hiển thị. (Camera’s View Matrix = Viewing matrix). Ta ký hiệu ma trận này là VEV
Sau đó ta sẽ phải đƣa từ hệ tọa độ thế giới về hệ tọa độ của ánh sáng bằng ma trận hiển thị của ánh sáng (Light’s Viewing Matrix). Kí hiệu ma trận này là VLV
Tiếp theo thực hiện phép chiếu thích hợp (Phép chiếu trực giao) để đƣa về hệ tọa độ thiết bị tiêu chuẩn. PS
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Cuối cùng thực hiện phép biến đổi cổng nhìn đƣa đoạn [-1,1] về đoạn [0,1] với ma trận S là:
Nhƣ vậy ma trận T đƣa một điểm từ hệ tọa độ của mắt về tọa độ hiển thị của ánh sáng sẽ có dạng:
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
3.1. Bài toán
Giới thiệu chƣơng trình mô phỏng hai kỹ thuật tạo bóng cứng là dùng bóng khối và bản đồ bóng dựa trên thuật toán bóng khối là thuật toán tạo bóng dựa trên các thông tin về hình dạng của vật thể cần tạo bóng , vì thế nó đòi hỏi phải có các thông tin về tính kết nối của các lƣới đa giác của tất cả các vật thể có trong khung hình (scene) để có thể tính toán một cách hiệu quả và chính xác. Thuật toán tạo bóng dựa trên bản đồ bóng là kỹ thuật tạo bóng trên không gian ảnh (image-space algorithm) nên những thông tin về hình dạng của vật thể hay những kiến thức hình học là không cần thiết. Thuật toán này cũng giống nhƣ thuật toán bóng khối, thực hiện phép kiểm tra “trong bóng” (in shadow) trên từng pixel. Một pixel đƣợc chiếu sáng nếu không có vật nào chắn giữa đƣờng nối nó và nguồn sáng. Chìa khóa để hiểu đƣợc thuật toán Shadow Mapping (bản đồ bóng) là những điểm nằm trên bản đồ bóng chính là những điểm sẽ đƣợc hiển thị ra màn hình nếu nhƣ điểm nhìn đặt ở vị trí của ánh sáng.
3.2. Chƣơng trình
3.2.1. Bóng khối (SHADOW VOLUME) Một số hƣớng dẫn:
Nhấn P: Để Pause. Nhấn U: Để Unpause.
Nhấn F: Để chuyển sang dùng thuật toán Z -fail. Nhấn G: Để chuyển sang dùng thuật toán Z -pass. Key Up (): Để dịch chuyển nguồn sáng lên trên .
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Click chuột trái vào và dịch chuyển để thay đổi vị trí camera .
Hình 3.1: Bóng được tạo bằng thuật toán Z-fail
Nguồn sáng Vật thể đƣợc
tạo bóng
Số frames đƣợc render mỗi giây
Thuật toán đƣợc sƣ̉ dụng
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 3.2: Bóng được tạo bởi thuật toán Z-pass. Số Frame tăng đáng kể so với thuật toán Z-fail do không cần Capping.
3.2.2. Bản đồ bóng (SHADOW MAPPING)
Một số hƣớng dẫn:
Nhấn C: Chuyển chế độ sang dịch chuyển Camera . Nhấn L: Chuyển chế độ sang dịch chuyển nguồn sáng.
Click chuột trái và di chuyển để dịch chuyển (nguồn sáng hoặc camera tùy thuộc đang ở chế độ nào )
Ấn Space: Để vẽ vùng quan sát (Frustum)
Nhấn T: Để chuyển vật thể sang hình chiếc vòng . Nhấn B: Để chuyển vật thể thà nh hình cầu .
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Nhấn () hoặc (): Để tăng hoặc giảm kích thƣớc của Bản đồ bóng.
Hình 3.3: Bóng được tạo với kích thước bản đồ bóng là 512. Sồ frames được render mỗi giây khá thấ p do kích thước bản đồ bóng tăng , phải tính toán nhiều.
Số Frames đƣợc render mỗi giây.
Kích thƣớc của bản đồ bóng. Mặt phẳng nhận bóng Vật đƣợc tạo bóng
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 3.4: Bóng được tạo với kích thước bản đồ bóng là 256. Số Frames được render mỗi giây tăng lên khá cao do số lượng tính toán giảm.
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
Hình 3.5: Bóng được tạo với kích thước bản đồ bóng là 128. Sồ Frames được render mỗi giây lên đến 101.
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
luận văn cũng là quá trình đúc kết kinh nghiệm của mỗi ngƣời.
Qua quá trình làm luận văn, sau khi phân tích, tìm hiểu chung về các ứng dụng của đồ hoạ 3D, tôi đã bổ sung thêm cho mình nhiều kiến thức
quý giá. Tôi đã tìm hiểu sâu hơn, đầy đủ hơn về các kỹ thuật tạo bóng. Tôi đã có thêm những kiến thức mới về các ứng dụng của đồ hoạ máy tính
trong việc tạo ra các loại bóng, ứng dụng của các kỹ thuật tạo bóng trong các lĩnh vực nhƣ Điện ảnh, Hoạt hình, kiến trúc và các ứng dụng xây dựng các mô hình thực tại ảo. Tôi đã tìm hiểu đƣợc 4 kỹ thuật tạo bóng cứng và 3 kỹ thuật tạo bóng mềm. Tuy nhiên trong luận văn tôi có đi sâu giới thiệu về kỹ thuật tạo bóng dùng bóng khối và dùng bản đồ bóng là 2 kỹ thuật có tính ƣu việt hơn cả.
Sau một quá trình nghiên cứu làm luận văn với sự chỉ dẫn nhiệt tình của thầy giáo hƣớng dẫn tôi đã học đƣợc cách tìm hiểu, phân tích và nghiên cứu một vấn đề khoa học mới. Trong thời gian làm luận văn tốt nghiệp, mặc dù bản thân đã rất nỗ lực, cố gắng, đầu tƣ nhiều thời gian, công sức cho việc tìm hiểu nghiên cứu đề tài và đã nhận đƣợc sự chỉ bảo, định hƣớng tận tình của thầy giáo hƣớng dẫn cùng các anh, chị đi trƣớc nhƣng do hạn chế về mặt thời gian và khó khăn trong việc tìm kiếm tài liệu, hạn chế về mặt kiến thức của bản thân, nên chƣa có đƣợc kết quả thực sự hoàn hảo. Kính mong các thầy cô giáo cũng nhƣ các bạn đồng nghiệp chỉ bảo và giúp đỡ.
Hƣớng phát triển:
Luận văn tuy đã đi sâu nghiên cứu về một số kỹ thuật tạo bóng, đƣa ra đƣợc mô phỏng 2 kỹ thuật tạo bóng cứng là dùng bản đồ bóng và dùng bóng khối. Nhƣng hiện nay với tốc độ phát triển nhanh chóng của ngành công nghệ
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
thông tin nói chung và của các kỹ thuật đồ hoạ nói riêng thì đòi hỏi cần phải đi sâu hơn nữa để nghiên cứu thêm các kỹ thuật tạo bóng mới, mô phỏng thêm một số kỹ thuật tạo bóng khác nữa.
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
1. Lƣơng Mạnh Bá, Nguyễn Thanh Thủy ( 1999), Nhập môn Xử lý ảnh số, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội.
2. Trần Thanh Hiệp ( 2004), “Tìm hiểu ngôn ngữ VRML và ứng dụng”, Khoá luận tốt nghiệp đại học, Khoa Công nghệ - Đại học Quốc gia, Hà Nội.
3. Phạm Anh Phƣơng , Nguyễn Hƣ̃u Tài ( 2006), Giáo trình Lý thuyết Đồ họa, Nhà xuất bản Khoa học và Kỹ Thuật, Hà Nội.
4. Nguyễn Hải Thanh (2005), “ Shadow Technique_Thesis”, Khoá luận tốt nghiệp đại học, Khoa Công nghệ - Đại học Quốc Gia, Hà Nội.
5. Đỗ Năng Toàn, Phạm Việt Bình (2008), Giáo trình Xử lý ảnh, Nhà xuất bản Khoa học và Kỹ thuật, Hà Nội.
Tiếng Anh
6. Andrew V.Nealen (2000), “Shadow Volume and Shadow Mapping, Recent Development in Real-time Shadow Rendering”, University of British Columbia.
7. Dietrich, Sim ( 2003), “Shadow Techniques”, Game Developers Convention 2001,
http://developer.nvidia.com/attach/1308, 2003-11-01.
8. Jackie Neider, Tom Davis, Mason Woo ( 1997), “The Red Book”, Addison Wesley Publisher.
9. Woo, Andrew Poulin, Pierre Fournier, Alain (1990) , “A Survey of shadow algorithms”, IEEE CG&A.
10. Williams, Lance ( 1978), “Casting curved shadows on curved surfaces”,
Số hóa bởi Trung tâm Học liệu - Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
11. Mark Kilgard, “Shadow Mapping with Today’s Hardware”, Technical Presentation: http://developer.nvidia.com/view.asp?IO=cedec_shadowmap. 12. Everitt, CassRege, Ashu Cebenoyan, Cem (2003), Hardware Shadow Mapping, http://developer.nvidia.com/attach/5708, 2003-12-17.