Chương 2 Kỹ thuật Raytracing
2.1. Tính tốn đường đi của ánh sáng
2.1.2. Tia sáng và Tứ giác
Một tứ giác abcd được xác định bởi bốn đỉnh . Ta có thể biểu diễn tất cả các điểm trên bề mặt của tứ giác bằng việc kết hợp song song bốn đỉnh:
Hình vẽ sau cho thấy một hình tứ giác với các đường đẳng trị cho và . Điểm thuộc tứ giác nếu và nằm trong khoảng [0,1].
Hình 2.2: Tứ giác abcd và cặp tọa độ song tuyến (u, v).
Trong thực tế các tứ giác thường khơng phẳng. Việc tính tốn các giao điểm trong tứ giác phẳng thường hiệu quả hơn trong trường hợp không phẳng. Đầu tiên ta xét trường hợp tứ giác không phẳng.
a) Tứ giác không phẳng
Một tia sáng có thể cắt một tứ giác khơng phẳng tại 0, 1, hoặc 2 điểm. Thay phương trình tia sáng vào phương trình tứ giác nêu trên ta sẽ được 3 phương trình (mỗi phương trình ứng với một tọa độ ) với 3 biến và . Các phương trình trên là phương trình khơng tuyến tính, cách giải quyết trước tiên là giải một phương trình bậc hai với biến . Nếu nằm trong khoảng [0,1] thì tìm biến tương ứng. Nếu cũng thuộc khoảng [0,1]
25
thì tìm tiếp đến biến . Nếu biến tìm được là một số âm hoặc số dương có giá trị lớn hơn khoảng cách giao điểm tìm thấy trước đó thì kết luận không tồn tại giao điểm.
Một phương pháp hiệu quả hơn có thể được sử dụng nếu các tứ giác có diện tích nhỏ. Trường hợp này các tứ giác thường được chia xấp xỉ thành hai tam giác, như vậy tọa độ giao điểm tìm thấy có thể có sai số nhưng do các tứ giác là rất nhỏ nên sai số là khơng đáng kể.
Hình 2.3: Tứ giác abcd được tính xấp xỉ bằng hai tam giác.
b) Tứ giác phẳng
Một tia sáng chỉ có thể cắt một tứ giác phẳng ở 0 hoặc 1 điểm. Trường hợp này có thể sử dụng các cơng thức như đối với trường hợp tìm giao điểm của tia sáng và tam giác để tìm giao điểm của tia sáng với mặt phẳng chứa tứ giác sau đó xác định xem các giao điểm này nằm trong hay ngoài tứ giác. Nếu tứ giác là một hình chữ nhật hoặc hình vng thậm thì cách tìm đơn giản hơn, đó là xác định các tọa độ song song và sử dụng tích vơ hướng.
2.1.3. Tia sáng và các mặt bậc hai
Nhóm các mặt bậc hai bao gồm mặt đĩa, mặt cầu, mặt trụ, mặt nón, mặt ellip, mặt parabol và mặt hyperbol.
26
Một mặt đĩa được xác định bởi tâm , pháp tuyến và bán kính . Tâm và pháp tuyến của mặt đĩa xác định một mặt phẳng. Việc tìm một giao điểm giữa tia sáng và mặt đĩa tương tự như tìm giao điểm giữa tia sáng và tam giác. Trước tiên ta tìm giao điểm của tia sáng và mặt phẳng chứa đĩa, sau đó kiểm tra khoảng cách có là số dương và nhỏ hơn khoảng cách các giao điểm được tìm thấy trước đó khơng. Giao điểm thuộc mặt đĩa nếu .
Mặt đĩa được ứng dụng khá nhiều trong việc kết xuất đồ họa, nhất là việc mô phỏng các hệ thống nguyên tử.
b) Mặt cầu
Một mặt cầu được xác định bởi tâm và bán kính . Để tìm giao điểm giữa tia sáng và mặt cầu ta thay phương trình của tia vào phương trình biểu diễn mặt cầu :
Đây là một phương trình bậc 2 với biến . Hai nghiệm tìm được là: và
trong đó , , , và biệt thức D có giá
trị (nếu cho trước hướng của tia sáng là vng góc thì ). Nếu biệt thức D có giá trị âm thì phương trình vơ nghiệm và tia sáng khơng cắt mặt cầu. Nếu biệt thức bằng 0 thì tia sáng tiếp tuyến với mặt cầu và
27
chỉ tồn tại một giao điểm. Nếu biệt thức có giá trị dương thì tồn tại hai giao điểm của tia sáng và mặt cầu, giao điểm gần là giao điểm tương ứng với giá trị không âm nhỏ nhất. Nếu cho trước khoảng cách ta có thể tính tốn được giao điểm .
Pháp tuyến tại giao điểm là .
c) Các dạng mặt bậc hai khác
Đối với các trường hợp tia sáng giao với các mặt trụ, mặt nón nón, mặt ellip, mặt parabol và mặt hyperbol có thể giải quyết bằng cách giải các phương trình bậc hai theo cách tương tự. Đối với trường hợp xét mặt ellip ta có thể chuyển đổi mặt ellip thành mặt cầu và xét tia sáng đi qua mặt này tương tự như đi qua mặt cầu, như vậy cách tính giao điểm hồn tồn tương tự.
2.1.4. Tia sáng và Mặt ẩn
Một bề mặt ẩn được xác định bởi hàm là tập hợp các điểm sao cho giá của hàm có giá trị , . Như vậy để tìm giao điểm của tia sáng và bề mặt, ta phải tìm điểm gần nhất thuộc tia sao cho có giá trị 0:
Phương trình này có thể giải bằng các phương pháp lặp như phương pháp Newton-Raphson. Pháp tuyến của bề mặt tại giao điểm được xác định bởi hàm:
2.1.5. Tia sáng và Mặt NURBS
Việc phát triển NURBS được bắt đầu vào thập niên 1950 bởi những kĩ sư cần biểu diễn dạng thức chính xác trong tốn học của các bề mặt tự do
28
giống như vỏ của tàu thủy, bề mặt bên ngồi của tàu khơng gian vũ trụ, vỏ ôtô v.v…, những loại bề mặt vật thể yêu cầu được sản xuất lại một cách chính xác bằng kĩ thuật. Trước khi có sự biểu diễn theo cách này thì các loại bề mặt như trên chỉ có thể biểu diễn bằng một mơ hình thật được tạo bởi một người thiết kế mỹ thuật công nghiệp.
Lúc đầu mặt NURBS chỉ được sử dụng trong thuộc tính của gói phần mềm CAD của các công ty ôtô. Sau này chúng trở thành một phần của chuẩn gói chuẩn đồ họa máy tính. Q trình dựng ảnh tương tác thời gian thực của đường cong và mặt NURBS được tạo bởi máy trạm làm việc silicon vào năm 1989. Vào năm 1993 cơng cụ mơ hình hóa tương tác NURBS cho máy tính cá nhân, gọi là NưRBS, đã được phát triển bởi CAS Berlin, một công ty nhỏ mới hình thành liên kết với trường đại học kĩ thuật Berlin. Ngày nay hầu hết các ứng dụng đồ họa máy tính chun nghiệp có sẵn cho máy tính để bàn đều sử dụng kỹ nghệ NURBS, các ứng dụng này thông thường được thực hiện bởi việc kết hợp một công cụ NURBS từ một công ty chuyên sâu.
Mặt NURBS thường chứa nhiều đường cong biên, biểu diễn các phần của bề mặt bị "cắt bỏ". Như vậy, giao điểm tia sáng và mặt NURBS phải được kiểm tra đối với các đường cong cắt để xác định giao điểm nhau nằm trong hay ngoài đường cong biên, nếu nằm ngoài sẽ bị loại.
2.1.6. Tia sáng và Mặt con
Mặt con được sử dụng rộng rãi trong ngành công nghiệp điện ảnh để mơ hình các bề mặt nhẵn với cấu trúc liên kết phức tạp, ví dụ đối với con người, động vật, v.v… Mặt con phổ biến nhất là Catmull-Clark và Loop. Việc tính tốn dị theo các tia sáng trực tiếp trên các bề mặt con có phần phức tạp, đặc biệt là gần các đỉnh lạ. Cách xử lý phổ biến đó là phân rã mặt con thành một khối đa giác và sau đó thực hiện ray tracing khối đó.
29
2.1.7. Tia sáng và Khối hộp
Một khối hộp thông thường được xác định bởi một đỉnh và ba vectơ (xem hình a). Một phép thử nghiệm đơn giản về việc giao nhau sẽ kiểm tra việc giao cắt tại tất cả sáu mặt của khối hộp. Hoặc một phép thử nhanh hơn có thể được thực hiện bằng cách chỉ kiểm tra ba mặt của khối hộp quay về phía nguồn sáng.
Hình 2.4: (a) Khối hộp thơng thường; (b) Khối hộp trục liên kết.
Đối với các khối hộp trục liên kết, các phép thử tìm giao điểm được thực hiện hiệu quả hơn. Một khối hộp trục liên kết có hai hình chữ nhật trong mỗi mặt phẳng , và . Khối hộp trục liên kết được xác định bởi đỉnh nhỏ nhất và đỉnh lớn nhất của nó (xem hình b).
Nếu khối hộp được xem xét là loại khối hộp kín, ta khơng cần phải xác định giao điểm gần nhất và pháp tuyến mà chỉ cần xác định tia sáng có cắt khối hộp hay khơng. Khối hộp kín rất hữu ích cho việc tăng tốc ray tracing trong các cảnh phức tạp.
30