Photon Tracing

Một phần của tài liệu Kỹ thuật PHOTON MAPPING trong sinh ảnh và ứng dụng (Trang 25 - 28)

Để lƣu giữ ánh sáng một cách riêng biệt từ hình học của cảnh, cấu trúc photon là cần thiết. Đại diện cho thông lƣợng mỗi photon phải chứa các thông tin về hƣớng của dòng năng lƣợng, lƣợng năng lƣợng và vị trí của các photon. Một kiểu cấu trúc photon thể hiện trong C sẽ nhƣ sau:

struct photon {

float x,y,z; // position ( 3 x 32 bit floats ) float color[3]; // power ( 3 x 32 bit floats ) float vector[3]; // incident direction ( 3 x 32 bit floats )

short sortFlag; // flag used in kd-tree }

Trong trƣờng hợp bộ nhớ là vấn đề cần quan tâm, photon có thể đƣợc nén bằng cách chọn các photon đại diện lũy thừa bằng bốn byte bằng cách sử dụng chia sẻ của Ward-RGB-định dạng số mũ và sử dụng tọa độ theo hƣớng photon.

Phần đầu tiên của thuật toán photon mapping là photon tracing đƣợc nghiên cứu bởi Jensen. Photon tracing là một quá trình phát photon từ

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

các nguồn ánh sáng và dựng (vẽ) lại mô hình từ nguồn sáng đó. Công việc của photon tracing nói chính xác là giống nhƣ ray tracing. Nhƣng sự khác biệt trong photon tracing là thông lƣợng truyền của các photon trong khi các tia trong ray tracing lại tập trung về sự bức xạ của các photon. Sự tƣơng tác của một photon với một đối tƣợng nào đó có thể khác biệt với sự tƣơng tác của một tia với một đối tƣợng. Ví dụ khi một tia bị khúc xạ bức xạ của nó thay đổi dựa trên các chỉ số tƣơng đối của sự khúc xạ, điều này không xảy ra đối với các photon.

Các bản đồ photon đại diện cho chiếu sáng trực tiếp và gián tiếp. Các bản đồ photon đƣợc tạo ra là kết quả của photon tracing đó là phần đầu tiên của thuật toán. Photon nằm phân tán từ các nguồn ánh sáng thành các cảnh và cuối cùng đƣợc lƣu trữ trong một bản đồ photon. Bản chất của một photon khi tƣơng tác với một điểm trên một bề mặt có thể đƣợc mô tả nhƣ sau:

Khi một photon gặp một bề mặt khuếch tán, phƣơng tỷ lệ và năng lƣợng đƣợc lƣu trữ trong các bản đồ photon tại điểm giao nhau và nó cũng đƣợc

phản xạ trong một hƣớng ngẫu nhiên. Các bản đồ photon chỉ lƣu trữ các photon có sự khuếch tán tƣơng tác.

Khi một photon gặp một bề mặt phản xạ, bản đồ photon không đƣợc cập nhật. phƣơng pháp photon là một trong tính chất hai phản xạ hoặc khúc xạ tùy theo tính chất bề mặt.

Nếu bề mặt là một phần khuếch tán và một phần phản chiếu sau đó một phƣơng pháp phải đƣợc sử dụng để xác định ngẫu nhiên mà thành phần của vật liệu quan trọng hơn. Một trong những phƣơng pháp là Russian roulette [4].

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

Nếu một photon đƣợc hấp thụ bởi bề mặt, nó đƣợc lƣu trữ trong các bản đồ photon và thời gian tồn tại photon là kết thúc.

Một kỹ thuật rất quan trọng trong photon tracing là Russian roulette. Kỹ thuật Russian roulette đƣợc sử dụng để quyết định xem một photon sẽ đƣợc phản xạ, hấp thụ hoặc truyền qua đƣờng truyền. Sau đó nó đƣợc sử dụng để quyết định xem một photon đƣợc phản xạ cần đƣợc phản xạ khuếch tán hoặc phản chiếu. Nói cách khác nó xác định thành phần của vật liệu quan trọng hơn. Điều này đƣợc minh họa trong đoạn code sau, ở đó d đóng vai trò là phản xạ của một bề mặt và Φ là năng lƣợng của photon đến:

Sức mạnh của thuật toán Russian roulette là rõ ràng khi tƣởng tƣợng một tình huống mà 1000 photon đƣợc bắn vào một bề mặt với độ phản xạ là 0,5. Chúng tôi có thể phản ánh tất cả 1000 photon với năng lƣợng cho một nửa hoặc chỉ phản xạ một nửa (500) của các photon với toàn bộ năng lƣợng. Russian roulette cho phép tùy chọn sau đó sẽ đƣợc thực hiện và đây rõ ràng là một kỹ thuật mạnh để giảm bớt các yêu cầu tính toán cho photon tracing.

Nhƣ đã đề cập đến lƣợng tử ánh sáng mà va đập vào những bề mặt không phản chiếu đƣợc lƣu trữ trong một cấu trúc dữ liệu bản đồ toàn cảnh gọi là photon map. Mỗi photon có thể đƣợc lƣu trữ một vài lần dọc theo hƣớng của nó. Các thông tin về một photon đƣợc lƣu trữ tại các điểm trên bề mặt nơi

probability of reflection p = d

ξ is a uniformly distributed random number between 0 and 1, ξ = random() if (ξ < p)

reflect photon with power Φ or else

absorb photon

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

nó đƣợc hấp thụ. Ban đầu bản đồ photon đƣợc sắp xếp nhƣ là một mảng phẳng đơn giản của các photon. Vì lý do hiệu quả mảng này đƣợc tổ chức lại thành một cấu trúc kd-tree cân bằng trƣớc khi sinh ảnh.

Một phần của tài liệu Kỹ thuật PHOTON MAPPING trong sinh ảnh và ứng dụng (Trang 25 - 28)