Bài toán tạo bóng trong đồ họa ba chiều

Một phần của tài liệu nghiên cứu một số kỹ thuật tạo bóng khối trong đồ họa ba chiều (Trang 31)

1.2.1. Nguồn sáng và phân loại nguồn sáng

1.2.1.1. Khái niệm

Ánh sáng: là một loại bức xạ, nó có thể được hiểu, giải thích theo hai tính chất vật lý, thứ nhất là tính chất sóng điện từ trường (quang học sóng), thứ hai là

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

23

tính chất hạt (quang học hạt). Bóng: trên thực tế bóng và ánh sáng là hai vấn đề liên quan mật thiết với nhau “có ánh sáng thì mới có bóng, và bóng là sự thể hiện của

ánh sáng”. Ánh sáng truyền đi trong không gian khi đến một bề mặt nó tương tác

với bề mặt, sự tương tác này được thể hiện thông qua hai hiệu ứng chính là “bóng bề mặt”, và “bóng đổ” có thể gọi chung chúng là bóng. Hiệu ứng “bóng bề mặt” xảy ra khi ánh sáng đến bề mặt, và phản xạ lại môi trường một lượng ánh sáng nhất định theo các hướng khác nhau, trong đó có một phần đến được mắt, tác động lên hệ thần kinh thị giác, vì vậy chúng ta quan sát được đối tượng. Theo định luật truyền thẳng ánh sáng khi đến một bề mặt không trong suốt thì bị cản lại, và không thể tiếp tục được truyền đi theo hướng đến, vì vậy mọi điểm phía sau sẽ không có sự chiếu sáng từ nguồn sáng hiện tượng như vậy được gọi là hiệu ứng “bóng đổ”.

Trong quang học sóng, ánh sáng là một loại sóng điện từ trường do đó nó cũng tuân theo các định luật của sóng như định luật truyền thẳng, định luật phản xạ, khúc xạ, .... Trong trường hợp này năng lượng của ánh sáng được thể hiện hiện bằng các dao động điện từ trường. Hướng dao động điện trường và từ trường vuông góc với nhau tạo ra cách ánh sáng truyền đi trong không gian. Loại ánh sáng có thành phần sóng điện trường (từ trường) giao động trên một mặt phẳng cố định được gọi là ánh sáng “phân cực tuyến tính”, hoặc đơn giản là “phân cực”. Dựa vào đặc tính phân cực của ánh sáng khi đi qua một số loại vật liệu nhất định mà người ta đã xây dựng lên các hệ thống hiển thị hình ảnh ba chiều, ví dụ như hệ thống máy chiếu ba chiều, ti vi ba chiều, kính ba chiều ... Sự xuất hiện của các thiết bị này là một trong những động lực quan trọng nhất tạo nên sự phát triển của lĩnh vực đồ họa hiện nay.

Trong quang học hạt, năng lượng ánh sáng được thể hiện dưới hình thức của các hạt photon dịch chuyển trong không gian với vận tốc ánh sáng. Mỗi photon

mang một mức năng lượng nhất định, mức năng lượng này phụ thuộc vào tần số hay độ dài bước sóng của ánh sáng.

Khả năng quan sát của con người với mỗi loại ánh sáng là khác nhau, bằng thực nghiệm người ta đã chứng minh con người có khả năng nhìn được ánh sáng

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

24

với bước sóng nằm trong khoảng (380nm - 780nm), ánh sáng có bước sóng lớn hơn được gọi là hồng ngoại, và nhỏ hơn là tử ngoại đây là những loại ánh sáng mà con người không có khả năng quan sát được.Khả năng nhìn của con người với mỗi loại ánh sáng trong khoảng nhìn được là không giống nhau. Hình 1.11 là đồ thị thể hiện khả năng quan sát của con người với từng mức sóng cụ thể của ánh sáng.

Hình 1.11. Khả năng quan sát của con người tương ứng với từng mức sóng. Trong đồ họa ba chiều tính chất sóng - hạt của ánh sáng được trừu tượng hóa thông qua các quy luật, việc xây dựng các quy luật này phần lớn dựa vào các quy luật hình học, và các quy luật quang học. Các phần nội dung dưới đây sẽ trình bày một số quy luật quan trọng, nhưng trước tiên để hiểu được các quy luật này chúng ta hãy xem xét một số đơn vị sử dụng trong việc đo lường ánh sáng [1], [2], [3].

Theo mô hình ánh sáng của OpenGl thì ánh sáng gồm có 4 thành phần chính: Emissive Light, Ambient Light, Diffuse Light, Specular Light. Các thành phần này có thể được tính toán độc lập với nhau, và cuối cùng được kết hợp lại với nhau.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

25

Ambient Light là ánh sáng bị phân rã bởi môi trường và không thể xác định hướng của chúng. Nếu trong một khung cảnh ta không xác định nguồn sáng thì kết quả đưa ra cũng giống như khi chúng ta sử dụng Ambient Light.

Hình 1.12. Chiếc ấm được chiếu bằng Ambient Light.

Diffuse Light (ánh sáng khuếch tán) là ánh sáng chiếu theo một hướng nhất, tuy nhiên khi nó gặp một bề mặt nó sẽ bị phân rã bằng nhau về mọi hướng, Vì thế nó sáng bằng nhau cho dù có đặt mắt nhìn ở đâu chăng nữa. Mọi nguồn sáng đến từ một điểm hay từ một hướng nhất định đều có thành phần Diffuse Light.

Hình 1.13. Ấm chè được chiều bằng Diffuse Light

Specular Light là ánh sáng phản xạ. Khi gặp một bề mặt nó sẽ phản xạ lại đúng theo quy luật phản xạ. Nó có thể được nhìn thấy trên những bề mặt cong.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

26

Hình 1.14. Ấm chè được chiếu bằng Specular Light

1.2.1.2. Phân loại

Nguồn sáng là mọi thứ bức xạ ra ánh sáng, muốn quan sát được các sự vật trong thế giới phải có nguồn sáng. Đặc biệt nó là thành phần không thể thiếu để tạo ra bóng. Có nguồn sáng chỉ chiếu theo một hướng nhất định (giống ánh sáng mặt trời), có nguồn sáng chiếu ra toàn khung cảnh….Trong một khung cảnh có thể có nhiều nguồn sáng. Có thể phân loại nguồn sáng theo nhiều tiêu trí khác nhau ví dụ như:

Phân loại theo tiêu trí khả năng phát sáng ta có thể chia làm hai loại như sau: Nguồn phát sáng: là các nguồn sáng tự phát ra tia sáng ví dụ như mặt trời, bóng đèn, ngọn nến vv.. Trong đồ họa ba chiều chúng ta chỉ xét đến loại nguồn sáng này mà thôi.

Nguồn sáng phản chiếu: là nguồn sáng mà ánh sáng xuất phát từ đó là ánh sáng phản xạ của các nguồn phát khác. Ví dụ gương hoặc mặt nước, các vật kim loại có độ bóng cao vvv… Trong nguồn sáng loại này cũng có thể phân thành các dạng khác nhau như nguồn sáng phản xạ lập tức, hay nguồn huỳnh quang, nguồn lân quang vv…

Khi phân loại nguồn sáng dựa trên tiêu trí kích thước, không gian, và phạm chiếu sáng, chúng ta có thể phân nguồn sáng thành các loại như sau (đây chính là cách phân loại nguồn sáng của hầu hết các hệ thống render):

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

27

Á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ột không gian lý tưởng là không gian mà tại đó mọi vật đều được cung cấp một lượng ánh sáng lên bề mặt là như nhau, từ mọi phía ở mọi nơi. Thông thường ánh sáng xung quanh được xác đị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ể đó cư ngụ, sau đó ta cộng với cường độ sáng có được từ các nguồn sáng khác để có được cường độ sáng cuối cùng lên một điểm hay một mặt của vật thể.

Hình 1.15. Sự phản xạ của ánh sáng Tương đương với cách phân loại sau:

Nguồn sáng định hướng

Nguồn sáng định hướng giống như nhữ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ường độ của chúng có giống nhau hay không. Có hai loại kết quả của ánh sáng định hướng khi chúng chiếu đế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ống như mặt gương) thì các tia phản xạ sẽ có hướng ngược với hướng của góc tới (Hình 1.15). Trong trường hợp ngược lại, nếu bề mặt là không phản xạ toàn phần (có độ nhám, xù xì) thì một phần các tia sáng sẽ bị toả đi các hướng khác hay bị hấp thụ, phần còn lại thì phản xạ lại, và lượng ánh sáng phản xạ lại này tỷ lệ với góc tới. Ở đây chúng ta sẽ quan tâm đến hiện tượng phản xạ không toàn phần vì đây là hiện tượng phổ biến (vì chỉ có những đối tượng được cấu tạo từ những mặt như mặt gương mới xảy ra hiện tượng phản xạ toàn phần), và đồng thời tìm cách tính cường độ của ánh sáng phản xạ trên bề mặt. Ánh sáng tới Ánh sáng phản Ánh sáng phản xạ Ánh sáng tới Vector pháp tuyến của mặt

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

28

(a) (b)

Hình 1.16. Sự phản xạ không toàn phần của ánh sáng

Trong hình 1.16 thể hiện sự phản xạ ánh sáng không toàn phần. độ đậm nét của các tia ánh sáng tới thể hiện cường độ sáng cao, độ mảnh của các tia phản xạ thể hiện cường độ sáng thấp. Nói chung, khi bề mặt là không phản xạ toàn phần thì cường độ của ánh sáng phản xạ (hay tạm gọi là tia phản xạ) luôn bé hơn so với cường độ của ánh sáng tới (hay gọi là tia tới), và cường độ 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ỏ thì cường độ phản xạ càng cao, nếu góc này lớn thì cường độ phản xạ rất thấp. Ở đây ta chỉ quan tâm đến thành phần ánh sáng khuyếch tán và tạm bỏ qua hiện tượng phản xạ toàn phần. để cho tiện trong việc tính toán ta tạm đổi hướng của tia tới thực sự, vậy bây giờ hướng của tia tới được xem là hướng ngược lại của tia sáng tới.

Nếu gọi θ là góc giữa tia tới với vector pháp tuyến của bề mặt thì Cos(θ) = tích vô hướng của a và n = a.x*n.x+a.y*n.y+a.z*n.z

Vì Cos(θ) có giá trị từ +1 đến -1 nên ta có thể suy ra công thức tính cường độ của ánh sáng phản xạ là:

Cường độ ánh sáng phản xạ = Cường độ của ánh sáng định hướng * [(Cos(θ)+1)/2] Trong đó [(Cos(θ)+1)/2] có giá trị trong khoảng từ 0 đến 1. Có thể tính được cường độ của ánh sáng phản xạ trên bề mặt khi biết được cường độ của ánh sáng định hướng cũng như các vector pháp tuyến của mặt và

Ánh sáng phản Ánh sáng tới Vector pháp tuyến của mặt

Ánh sáng phản xạ Ánh sáng tới Vector pháp tuyến của mặt

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

29

tia tới.

Nguồn sáng điểm

Nguồn sáng định hướng là tương đương với nguồn sáng điểm đặt ở vô tận. Nhưng khi nguồn sáng điểm được mang đến gần đối tượng thì các tia sáng từ nó phát ra không còn song song nữa mà được toả ra theo mọi hướng theo dạng hình cầu. Vì thế, các tia sáng sẽ rơi xuống các điểm trên bề mặt dưới các góc khác nhau. Giả sử vector pháp tuyến của mặt là n=(xn, yn, zn), điểm đang xét có toạ độ là (x0, y0, z0) và nguồn sáng điểm có tọa độ là (plx, ply, plz) thì ánh sáng sẽ rọi đến điểm đang xét theo vector (x0-plx, y0-ply, z0-plz), hay tia tới:

a = (plx - x0, ply - y0,plz - z0).

Từ đó cường độ sáng tại điểm đang xét sẽ phụ thuộc vào Cos(θ) giữa n và a như đã trình bày trong phần nguồn sáng định hướng.

Vậ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ường độ sáng tại đ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(θ) với tất cả các điểm trên mặt. Nên nhớ rằng trong tình huống nguồn sáng điểm thì chúng ta buộc lòng phải tính Cos(θ) thông qua công thức (8.1) vì vector a sẽ thay đổi khi mặt hay nguồn sáng thay đổi (trừ khi mặt tĩnh, song nếu mặt 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 lần).

Đó là ba loại nguồn sáng sử dụng rất phổ biến trong mô hình render sử dụng thiết bị tăng tốc đồ họa. Còn có một số loại nguồn sáng không phổ dụng khác như nguồn sáng phát từ một đối tượng, nguồn sáng song song có hạn chế ví dụ một nguồn song song chỉ chiếu trong một khu vực hình trụ vv.. Tuy vậy do yêu cầu tốc độ và đặc tính phức tạp của các dạng nguồn sáng này nên trong đồ họa ba chiều người ta hầu như chỉ sử dụng ba loại nguồn sáng trên mà thôi [1], [2]

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

30

Hầu hết các thuật toán và các phương pháp tạo bóng đề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.

Vùng bóng đượ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 bóng được gọi là vùng bóng, vùng bao bên ngoài nó và có một phần nằm trong bóng đượ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 vì mọi thứ đều chỉ có 2 trạng thái là bóng (1) và đượ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ửa bóng bên ngoài vùng bóng trung tâm và phải xử lý tính toán phần mờ đục . (Kết quả từ sự phân bố cường độ ánh sáng bất quy tắc trong vùng nửa bóng)

1.17.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

31

Chƣơng 2.

MỘT SỐ KỸ THUẬT TẠO BÓNG KHỐI TRONG ĐỒ HỌA BA CHIỀU 2.1. Giới thiệu . [2] 2.1. Bối cảnh không có đổ bóng

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

32

2.2. Bối cảnh có bóng khối

2.3. Mô tả các phần của bóng khối

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 (Geometry Based Shadow Algorithm), 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.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

33

Các thông tin về vật thể có thể được lấy từ một mô hình WireFrame, trong đó nó thể hiện hình dạng của đối tượng ba chiều bằng 2 danh sách:

Danh sách các đỉnh: Lưu tọa độ các đỉnh.

Danh sách các cạnh: Lưu các cặp điểm đầu và cuối của từng cạnh. Trong đó các đỉnh và các cạnh được đánh số thứ tự cho thích hợp.

Hình 2.4. Biểu diễn của một căn nhà.

Ngoài ra còn có thể lấy từ file .obj được tạo ra khi ta sử dụng các công cụ xây dựng mô hình ba chiều như Google Sketchup, 3DSmax….

Thuật toán bóng khối còn là thuật toán trên từng pixel (Per Pixel Algorithm) Vì ta sẽ thực hiện một phép kiểm tra “trong bóng” (in shadow) cho mỗi điểm được vẽ ra màn hình. Nó bao gồm 2 phần riêng biệt. Phần đầu tiên chúng ta phải thực hiện các tính toán liên quan đến việc tạo ra cái mà gọi là bóng khối.

2.2. Danh sách cạnh viền

Mỗi vật thể đối với mỗi nguồn sáng sẽ có một bóng khối. Để đơn giản ta sẽ chỉ xét với một nguồn sáng duy nhất. Ý tưởng để tạo ra bóng khối là ta sẽ xây dựng một lưới các đa giác bao quanh vùng bóng khối mà vật thể tạo ra do được chiếu sáng. Để làm được điều đó, ta phải tìm ra danh sách các cạnh viền của vật thể, chúng là những cạnh chủ yếu để tạo ra bóng khối, khi ánh sáng chiếu đến những

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

34

cạnh đó, nó sẽ không dừng lại mà đi tiếp. Có thể hiểu đó là những cạnh tiếp xúc của vật thể với tia sáng.

Hình 2.5. Cạnh viền (Silhouette Edge) được tô đỏ.

Hình 2.6. Khi nhìn từ vị trí của nguồn sáng ta sẽ không thấy bóng và rất dễ để xác định cạnh và đỉnh viền.

Một cạnh (bất kỳ) được cấu tạo bởi hai điểm và có từ 1 đến 2 mặt kề liền với nó, cạnh đó được gọi là cạnh viền khi nó chỉ có 1 mặt kề hay có 2 mặt kề nhưng một mặt hướng về phía ánh sáng trong khi mặt còn lại thì không. [4]

Một phần của tài liệu nghiên cứu một số kỹ thuật tạo bóng khối trong đồ họa ba chiều (Trang 31)