2.3 HIỆU ỨNG BÓNG ĐỔ
2.3.2 Tạo bóng đổ bằng bản đồ bóng (Shadow Mapping)
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 lĩnh vực tạo ảnh offline lẫn trong các ứng dụng thời gian thực. Shadow mapping đƣợc sử dụng đầu tiên bởi Pixar’s RenderMan và là kỹ thuật tạo bóng chính thức sử dụng trong các bộ phim lớn nhƣ “Toy Story”.
Đến nay hầu hết những hệ thống mô phỏng đều hỗ trợ phương pháp tạo bóng đổ này.
Hình 2.19. Bóng đổ bằng bản đồ bóng “Shadow Mapping”
Trong “Hình 2.19” ta xét P nếu nó không nằm trong khu vực có bóng đổ thì khoảng cách từ P tới nguồn sáng sẽ là nhỏ nhất hay nói cách khác là không có điểm nào trong cảnh nằm trên đường thẳng nối P với nguồn sáng tới nguồn sáng có khoảng cách nhỏ hơn tại điểm P, ngƣợc lại với P thuộc khu vực có bóng đổ thì có nghĩa là trên đường thẳng từ P đến nguồn sáng tồn tại ít nhất một điểm trong cảnh sao cho khoảng
cách từ điểm đó đến nguồn sáng là nhỏ hơn từ P. Đây chính là tư tưởng chính của thuật toán tạo bóng đổ dựa vào bản đồ bóng.
Có thể phát biểu cụ thể tư tưởng này như sau: Xét một nguồn sáng bất kỳ trong cảnh, giả sử ta có được một bản đồ khoảng cách lưu trữ khoảng cách nhỏ nhất từ nguồn sáng đến một điểm bất kỳ thuộc một đối tƣợng bất kỳ trong cảnh, bản đồ này đƣợc gọi là “Shadow Mapping”. Với mỗi một điểm khi tiến hành tô bóng ta cũng có thể tính đƣợc khoảng cách từ điểm đó đến nguồn sáng, so sánh khoảng cách đó với giá trị tương ứng trong “Shadow Mapping” nếu nó nhỏ hơn giá trị trong bản đồ thì điểm đó là điểm không có bóng đổ, ngược lại thì điểm đó là điểm có bóng đổ. Bằng phương pháp nhƣ vậy ta có thể thể hiện đƣợc bóng đổ cho toàn cảnh.
b. Thuật toán
Bước 1: Xây dựng một bản bản đồ bóng “Shadow Mapping”
Bước 2: Vẽ cảnh tại điểm nhìn với từng điểm tính khoảng cách từ đó tới nguồn sáng D, so sánh với giá trị lưu trong bản đồ bóng, nếu D<=S có nghĩa không có bóng, ngƣợc lại có nghĩa có bóng. Khi có bóng thì ta sẽ chỉ tô bóng cho điểm đó với sự ảnh hưởng duy nhất của ánh sáng nền. Việc vẽ bình thường được tiến hành khi điểm đang xét không có bóng đổ.
Việc xây dựng bản đồ bóng chính là việc tính toán khoảng cách từ nguồn sáng tới các điểm trong cảnh, nó có thể thực hiện thông qua một phép chiếu phối cảnh có ma trận phép chiếu là Pl, và ma trận xác định vị trí phép chiếu (vị trí nguồn sáng) là Tl. Quá trình render để đƣa ra bản đồ bóng chỉ cần kết quả duy nhất là khoàng cách từ các điểm trong cảnh đến nguồn sáng (mặt phẳng chiếu của nguồn sáng), vì vậy ngoài Depth-buffer, các bộ đệm khác nên được tắt hết, các thông số môi trường cũng nên đƣợc tắt để đảm bảo tốc độ, và tối ƣu tính toán. Kết quả việc render cảnh với hai ma trận Pl, và Tl, ở Depth-bufer chính là bản đồ mà ta cần tính. Việc tiếp theo là phải lưu trữ bản đồ này ra một vùng nhớ khác để sử dụng cho bước sau, vùng nhớ này là một Textures.
Để xác định được một điểm P trong không gian tương ứng với điểm nào trong
(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03
54
biến đổi này là các giá trị (u, v, s, t) trong đó u, v chính là các giá trị để xác định vị trí cần so sánh trên ảnh, s là khoảng cách tại p đến nguồn sáng.
Hình 2.20. Biểu đổ không gian của các đối tượng
“Hình 2.20” thể hiện mối quan hệ giữa các không gian của các thành phẩn đối tƣợng – điểm quan sát – và nguồn sáng. Từ đó dễ thấy rằng phép chuyển đổi từ không gian của đối tƣợng sang không gian của nguồn sáng là một phép biến đổi To2l = M*L-1, hay phép biến đổi từ không gian quan sát sang không gian của nguồn sáng là Tc2l=V*L-1. Giả sử phép chiếu sử dụng tại bước 1 là Pl khi đó một điểm po(x, y, z, w) trong không gian đối tƣợng khi chuyển không gian và thực hiện phép chiếu sẽ đƣợc kết quả là pl(u, v, s, t), ta có:
pl(u,v,s,t)T = Pl*M*L-1p0(x,y,z,w)T (2.15) Tương tự như vậy ta cũng có mối quan hệ giữa Pl và Pc(điểm đã được chuyển sang không gian của camera) nhƣ sau :
pl(u,v,s,t)T = Pl*V*L-1pc(x,y,z,w)T (2.16) Kết quả cuối cùng của pl đƣợc tính là pl(u,v,s,t) = pl/t. Không gian giá trị của các thành phần pl trong khoảng [-1, 1]. Tuy vậy không gian của ảnh bản đồ bóng lại là từ [0,1] do đó trước khi tính giá trị cuối cùng pl cần phải nhân với một ma trận để biến đổi không gian giá trị về khoảng [0,1]. Do đó (2.15), và (2.16) đƣợc viết thành:
pl(u,v,s,t)T = S*Pl*M*L-1p0(x,y,z,w)T (2.17) Không gian
đối tƣợng
Không gian quan sát
Không gian ánh sáng M
M-1
V V-1
L-1 L
pl(u,v,s,t)T = S*Pl*M*L-1p0(x,y,z,w)T (2.18) Trong đó S là ma trận tỷ lệ đƣợc cho nhƣ sau:
Ngoài ra khi so sánh hai giá trị tính đƣợc, mặt dù là so sánh hơn nhƣng do các giá trị trong bản đồ bóng được lưu trữ bằng số thực, thường là số thực 16 bit nên sai số là rất lớn, vì lý do đó mặc dù hai giá trị a, b trên thực tế là bằng nhau nhƣng đôi khi sẽ xảy ra a>b hoặc ngƣợc lại. Nhƣ vậy, để đảm bảo việc một điểm P không bao giờ tự đổ bóng lên chính nó thì chúng ta phải thêm một giá trị rất nhỏ vào thành phần s của mọi điểm pl kết quả cuối cùng của phép chiếu.
Tạo bóng đổ bằng bản đồ bóng có ƣu điểm rất lớn đó là có khả năng thể hiện đƣợc theo thời gian thực, độ phức tạp thời gian, công việc là không cao do hầu hết các thao tác đều đƣợc tiến hành trên ảnh mà không phải trên hình dạng đối tƣợng nhƣ với bóng khối, hầu hết các thiết bị tăng tốc đồ họa hiện nay đều hỗ trợ một loại Textures trực tiếp để thể hiện sự so sánh bóng, một ưu điểm tương đối quan trọng nữa là việc chuyển đổi thành thuật toán thể hiện bóng đổ mềm từ thuật toán này là tương đối đơn giản (chỉ cân nội suy một số mẫu xung quanh các điểm p(s, t ) trên bản đổ bóng).
Tuy vậy tạo bóng đổ bằng bản đồ bóng cũng có một số những nhƣợc điểm, khó khăn nhất định: khi kích thước của bản đồ bóng là nhỏ, hoặc khoảng quan sát gần đối tƣợng thì hiệu ứng răng cƣa thể hiện rất rõ, để giảm hiệu ứng răng cƣa thì phải tăng kích thước của bản đồ việc này đồng nghĩa với việc giảm hiệu năng của hệ thống.
Nhƣợc điểm lớn nhất của Shadow mapping là với mỗi nguồn sáng ta tạo đƣợc một ma trận phép chiếu để quan sát không gian, tuy nhiên khi không gian là lớn rất khó có thể xây dựng được phép chiếu sao cho không gian của bóng đổ là tương đồng hoàn toàn với không gian của nguồn sáng, vì cả hai phép chiếu đều là phép chiếu phối cảnh. Tuy đã có nhiều nghiên cứu khắc phục nhƣợc điểm này, nhƣng khả năng áp dụng chúng là không cao vì cả hai lý do tốc độ, và độ phức tạp của phương pháp [16], [27], [12].
ẵ 0 0 ẵ 0 ẵ 0 ẵ 0 0 ẵ ẵ 0 0 0 1
(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03(LUAN.van.THAC.si).nghien.cuu.mot.so.ky.thuat.chieu.sang.trong.trung.bay.ao.luan.van.ths.cong.nghe.thong.tin.60.47.01.03
56
có sử dụng phương pháp tính bóng đổ bằng bản đổ bóng với bản đồ bóng cụ thể là ảnh thứ hai:
Hình 2.21. Ảnh thể hiện cảnh một ngôi đền.Từ trái qua phải là:
“ảnh chưa có bóng”, “ảnh bản đồ bóng”, “ảnh sử dụng thuật toán Shadow Mapping”