Dò tia (đồ họa)

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Trong đồ họa máy tính, dò tia là kỹ thuật tạo ra một hình ảnh bằng cách dò đường đi của ánh sáng thông qua các điểm ảnh trên một tấm kính ảnh. Kỹ thuật này có khả năng đạt tới một mức độ rất cao của chủ nghĩa thật như ảnh chụp; thường thật hơn các phương pháp kết xuất dạng quét dòng thông thường, nhưng tốn nhiều thời gian hơn (dùng nhiều hiệu năng máy tính). Điều này làm phương pháp dò tia phù hợp nhất cho các ứng dụng kết xuất ảnh từ từ theo thời gian, như ảnh tĩnh, hiệu ứng đặc biệt cho phim hay TV, và rất kém phù hợp cho các ứng dụng thời gian thực như trò chơi máy tính khi tốc độ là tối quan trọng. Dò tia có khả năng mô phỏng một lượng lớn các hiệu ứng quang học, chẳng hạn như phản xạkhúc xạ, tán xạ, và sự quang sai đơn sắc.

Phương pháp dò tia đệ quy cho các hình cầu hiển thị các hiệu ứng độ sâu trường nhìn, các nguồn sáng diện tích, sự khuếch tán tương hỗ, màu môi trường, và sự phản xạ fresnel.

Khái lược về giải thuật[sửa | sửa mã nguồn]

Giải thuật dò tia kiến tạo một bức ảnh bằng cách bắn các tia vào một cảnh

Dò tia quang học mô tả một phương pháp tạo ra ảnh trực quan được xây dựng trong môi trường đồ họa máy tính 3 chiều, với độ chân thực cao hơn các kỹ thuật như ray casting hay quét dòng. Nó làm việc bằng cách dò một đường từ một con mắt tưởng tượng qua mỗi điểm ảnh trong một màn hình ảo, và tính toán màu sắc của các đối tượng thông qua đó.

Các cảnh trong phép dò tia được mô tả toán học bởi một lập trình viên hoặc một nghệ sĩ thể hiện trực quan (thường sử dụng những công cụ trung gian). Các cảnh cũng có thể kết hợp chặt chẽ các dữ liệu từ hình ảnh và mô hình ghi lại bởi các phương tiện ví dụ như máy ảnh kỹ thuật số.

Một cách điển hình, mỗi tia phải được kiểm tra sự giao nhau với một vài tập con của toàn bộ các đối tượng trên cảnh. Một khi đối tượng gần nhất được xác định, giải thuật sẽ ước lượng ánh sáng tới tại giao điểm khảo sát, xem xét tính chất vật liệu của đối tượng, và tổng hợp thông tin để tính toán màu sắc cuối cùng (chuẩn) của điểm ảnh tương ứng. Các giải thuật tổng thể cụ thể và các vật liệu phản xạ, khúc xạ có thể đòi hỏi nhiều tia hơn để lấp đầy cảnh.

Thoạt nghe thì có vẻ như phương pháp này hơi ngược lại với những gì trong tự nhiên, vì trong tự nhiên ánh sáng sẽ đi từ nguồn sáng, tương tác với các vật thể trong khung cảnh rồi mới vào ống kính camera. Tuy nhiên, nếu chúng ta dò tia sáng bắt đầu từ nguồn sáng, chúng ta không thể biết chắc liệu tia sáng đó có sẽ đi vào camera hay không. Trong khi nếu bắt đầu tia sáng từ camera thì chúng ta luôn biết chắc là tia sáng sẽ đi vào camera. Tuy nhiên một số hiện tượng quang học (như "tụ quang") rất khó có thể được mô phỏng lại nếu dùng phương pháp dò ngược này.

Bởi vậy, cách làm tắt được chọn trong phép dò tia với mục đích từ trước là những tia giao nhau trong khung nhìn. Sau một số tối đa các tia phản xạ hay một tia du hành đến một khoảng cách nhất định mà vẫn không cắt nhau, tia tạm ngừng du hành và giá trị của điểm ảnh tương ứng được cập nhật. Cường độ ánh sáng của điểm ảnh này được tính toán dùng một số các giải thuật, có thể bao gồm một số các phương pháp cổ điển cũng còn kết hợp với những kỹ thuật như độ phát xạ.

Mô tả chi tiết về phương pháp dò tia dùng giải thuật máy tính và căn nguyên của nó[sửa | sửa mã nguồn]

Điều gì xảy ra trong tự nhiên[sửa | sửa mã nguồn]

Phương pháp dò tia có thể đạt tới cấp độ chân thực rất cao.

Trong tự nhiên, một nguồn sáng chiếu một tia sáng với lộ trình mà chung cuộc chạm tới một bề mặt phá vỡ tiến trình của nó. Có thể xem "tia" này như một luồng các quang tử du hành dọc theo cùng một đường đi. Trong chân không tuyệt đối tia này sẽ là một đường thẳng (bỏ qua hiệu ứng tương đối tính). Trong thực tế, bất kỳ tổ hợp nào của 4 thành phần có thể xảy ra với tia sáng này: sự hấp thụ, sự phản xạ, sự khúc xạsự phát huỳnh quang. Một bề mặt có thể phản xạ toàn bộ hoặc một phần các tia chiếu tới, theo một hay nhiều hướng khác nhau. Nó cũng có thể hấp thụ một phần tia sáng, dẫn tới kết quả làm giảm cường độ của các tia phản xạ hoặc/và khúc xạ. Nếu bề mặt có bất kỳ tính chất nào như trong suốt hoặc trong mờ, nó khúc xạ một phần của của chùm tia vào trong chính nó theo một phương khác trong khi hấp thụ một vài (hoặc toàn bộ) của quang phổ (và có khả năng biến đổi màu). Ít phổ biến hơn, một bề mặt có thể hấp thụ một phần của ánh sáng và huỳnh quang để tái phát xạ ánh sáng với bước sóng dài hơn theo một phương ngẫu nhiên, mặc dù điều này thường rất hiếm đủ để nó có thể bị tách khỏi quá trình áp dụng vào các phần mềm kết xuất đồ họa trong thực tế. Giữa sự hấp thụ, phản xạ, khúc xạ và sự phát huỳnh quang, tất cả ánh sáng tới phải được tính đến, không được hơn. Một bề mặt không thể, trong một lúc, phản xạ 66% tổng lượng ánh sáng tới, và khúc xạ 50%, vì cả hai tiến trình sẽ làm thành tổng là 116%. Từ đây, các tia phản xạ hoặc/và khúc xạ có thể chạm tới các bề mặt khác, nơi các tính chất phản xạ, khúc xạ, hấp thụ và phát huỳnh quang lại một lần nữa ảnh hưởng tới sự tiến triển của các tia tới. Một vài trong số các tia này du hành theo quỹ đạo mà chúng chạm tới mắt chúng ta, là nguyên nhân khiến ta nhìn thấy cảnh vật và cũng phân phối cho ảnh chung cuộc của sự kết xuất.

Giải thuật ray casting[sửa | sửa mã nguồn]

Một ví dụ về ray casting thể tích

Giải thuật ray casting đầu tiên được sử dụng cho kết xuất đồ họa đã được đề cập bởi Arthur Appel[1] vào năm 1968. Ý tưởng đằng sau ray casting là bắn các tia từ mắt, mỗi tia cho một điểm ảnh, và tìm đối tượng gần nhất cản đường đi của tia đó – nghĩ về một ảnh như một cửa màn hình, với mỗi ô vuông trong màn hình là một điểm ảnh. Rồi cho mắt nhìn bình thường xuyên qua điểm ảnh đó. Sử dụng những tính chất của vật liệu và hiệu ứng của ánh sáng trong cảnh, giải thuật này có thể xác định được bóng đổ của các đổi tượng. Sự thừa nhận việc đơn giản hóa làm điều đó nếu một bề mặt lộ sáng, ánh sáng sẽ chạm tới bề mặt đó không bị vô hiệu hóa hoặc nằm trong vùng bóng đổ. Tương phản sáng tối của bề mặt được tính toán dựa trên các mô hình sáng tối đồ họa máy tính 3 chiều cổ điển. Một lợi ích mà ray casting đem lại vượt trên giải thuật quét dòng xưa cũ là là khả năng của nó trong việc xử lý các bề mặt không phẳng và đặc khối, như hình nónhình cầu. Nếu một bề mặt toán học có thể bị giao cắt bởi một tia, nó có thể được kết xuất bởi kỹ thuật ray casting. Những đối tượng phức tạp có thể được tạo bằng các kỹ thuật tạo mô hình đặc và được kết xuất một cách dễ dàng.

Ray casting dùng trong đồ họa máy tính đã được sử dụng lần đầu tiên bởi các nhà khoa học tại Công ty Toán học Ứng dụng, (MAGI) của Elmsford, New York, New York. Năm 1966, công ty được thành lập để thực hiện các tính toán nhiễm bức xạ cho Department of Defense ̣(Sở Bảo Vệ Quốc Gia Hoa Kỳ). Phần mềm của MAGI không chỉ tính toán làm thế nào tia gamma tương tác với một bề mặt (ray casting dùng cho quá trình bức xạ được hoàn thành vào những năm 1940), mà còn tính toán nó xuyên thủng và khúc xạ ra sao. Những nghiên cứu này giúp chính phủ xác định những ứng dụ quân sự cụ thể; thiết kế các phương tiện quân sự (các loại xe) sẽ bảo vệ các toán quân khỏi do thám bức xạ, thiết kế các phương tiện bay thám hiểm không gian. Dưới sự chỉ đạo của tiến sĩ Philip Mittelman, các nhà khoa học đã phát triển một phương pháp tạo ảnh sử dụng cùng một phần mềm giống hệt. Vào năm 1972, MAGI đã trở thành một studio hoạt họa (các dạng đồ họa động nói chung) thương mại. Studio này đã dùng ray casting để tạo các đoạn hoạt họa máy tính 3D cho các quảng cáo trên truyền hình, phim giáo dục và cuối cùng là các phim nổi bật khác – họ đã diễn hoạt rất nhiều trong bộ phim Tron sử dụng duy nhất ray casting. MAGI đã rời khỏi thị trường năm 1985.

Giải thuật dò tia[sửa | sửa mã nguồn]

Số lượng các lần phản xạ mà một “tia” có thể thực hiện và làm thế nào nó ảnh hưởng tới tổng thể sau mỗi lần nó tiếp xúc với một bề mặt khác tất cả được điều khiển thông qua các thiết lập phần mềm trong quá trình dò tia. Ở đây, mỗi tia được cho phép phản xạ tối đa 16 lần. “Phản chiếu của phản chiếu” đa cấp có thể được biểu thị rõ ràng.

Nghiên cứu quan trọng tiếp theo đã xuất hiện bởi Turner Whitted vào năm 1979. Các giải thuật trước đây phát tia từ mắt vào cảnh, nhưng các tia không còn bị dò theo nữa. Whitted đã tiếp nối tiến trình đó. Khi một tia tiếp xúc một bề mặt, nó có thể khởi tạo ra 3 loại tia khác nhau: phản xạ, khúc xạ, và bóng đổ. Một tia bị phản xạ tiếp tục theo phương của phản xạ gương từ một bề mặt sáng bóng. Sau đó nó giao cắt với các đối tượng trong cảnh; đối tượng gần nhất mà nó giao cắt là thứ được thấy trong sự phản chiếu. Các tia phản xạ du hành xuyên qua vật liệu trong suốt hoạt động theo cách tương tự, sự khác biệt thêm vào là một tia bị khúc xạ có thể vào hoặc ra khỏi vật liệu. Để trách việc phải dò theo xa hơn nữa toàn bộ các tia trong cảnh, một tia tạo bóng được dùng để kiểm tra xem liệu về mặt nào đó có hiển thị trước ánh sáng. Một tia chạm một bề mặt tại vài điểm. Nếu bề mặt tại điểm này lộ sáng, một tia (đối với máy tính, một phân đoạn) được dò giữa giao điểm này và nguồn sáng. Nếu có bất kỳ đối tượng đặc nào chiếm vị trí giữa 2 điểm này, bề mặt nằm trong bóng đổ và ánh sáng không được phân phối tới nó. Lớp mới này của tính toán tia thêm vào hiệu quả chân thực cho ảnh tạo bởi phép dò tia.

Ưu điểm so với các phương pháp khác[sửa | sửa mã nguồn]

Sự phổ biến của phép dò tia nảy sinh từ nền tảng của nó trong sự mô phỏng thực tế của ánh sáng vượt qua các phương pháp khác (như quét dòng hay ray casting). Các hiệu ứng như phản xạ và bóng đổ, khó mô phỏng dùng các giải thuật khác, lại là kết quả tự nhiên của giải thuật dò tia. Tương đối đơn giản để thực hiện mà lại có những kết quả trực quan mềm dẻo dễ tùy chỉnh, phép dò tia thường được mô tả như một pha đột phá đầu tiên vào lập trình đồ họa. Sự độc lập về mặt tính toán của mỗi tia làm cho phép dò tia phải tuân thủ quá trình đa nhiệm hóa .

Nhược điểm[sửa | sửa mã nguồn]

Một nhược điểm rất nghiêm trọng của phương pháp dò tia là hiệu năng. Các giải thuật quét dòng và các giải thuật khác sử dụng dữ liệu gắn kết chặt chẽ để chia sẻ gánh nặng tính toán giữa các điểm ảnh, trong khi dò tia luôn thực hiện tiến trình mới, đối đãi (về mặt tính toán) với mỗi tia một cách độc lập. Tuy nhiên, sự riêng rẽ này mang lại một lợi thế, khả năng bắn nhiều tia hơn vào cảnh để thực hiện khử răng cưa và nâng cao chất lượng ảnh khi cần thiết. Mặc dù nó quán xuyến được sự phản xạ tương hỗ và các hiệu ứng quang học như khúc xạ một cách chính xác, theo truyền thống mà nói phương pháp dò tia không nhất thiết phải thật như ảnh chụp. Chất lượng thực như ảnh chụp xuất lộ khi phương trình kết xuất đồ họa là tương đối suýt soát hoặc đã hoàn thành. Thực hiện phương trình kết xuất đem lại chất lượng thực, cũng như cái cách phương trình đó bao quát các hiệu ứng vật lý về sự lan truyền và tương tác của ánh sáng với vật thể. Tuy nhiên, điều này thường không thể thực hiện được với những máy móc theo yêu cầu. Sự chân thực của các phương pháp kết xuất, do đó mà phải được ước lượng như một dạng gần đúng của phương trình, và trong trường hợp của phương pháp dò tia, nó không cần phải thực ở mức độ cao nhất. Các phương pháp khác, bao gồm ánh xạ quang tử, được dựa trên phép dò tia cho những đường đi cụ thể của tia, sẽ đem lại kết quả tốt hơn nhiều.

Nghịch đảo hướng các tia có giao điểm với nhau trong cảnh[sửa | sửa mã nguồn]

Tiến trình bắn các tia từ điểm quan sát (mắt) tới nguồn sáng để tạo hình ảnh thỉnh thoảng được gọi là phép dò tia giật lùi, bởi vì nó ngược lại chiều du hành của các quang tử trong thực tế. Tuy nhiên, có sự lẫn lộn, mập mờ trong thuật ngữ chuyên ngành này. Phép dò tia trước đây luôn bắt đầu từ mắt, và được nghiên cứu từ lâu bởi James Arvo sử dụng thuật ngữ phép dò tia giật lùi để cho thấy nó được ưu ái hơn so với việc bắn các tia từ nguồn sáng và tính toán kết quả. Như vậy, nó hoàn toàn phân biệt giữa dựa trên mắt với dựa trên nguồn sáng trong phép dò tia.

Trong khi tính toán chiếu sáng trực tiếp nhìn chung tốt nhất là sử dụng phép dò tia dựa trên điểm quan sát, những hiệu ứng gián tiếp cụ thể có thể được bổ sung vào bằng tính toán tia đi ra từ nguồn sáng. Tụ quang là những mảng sáng gây ra bởi sự tập trung ánh sáng từ một diện tích phản xạ lớn vào một vùng nhỏ gần diện tích bề mặt khuếch tán. Một giải thuật tính toán tia trực tiếp từ nguồn sáng vào các đổi tượng phản xạ, dò quỹ đạo tới mắt của chúng, sẽ là giải pháp tốt hơn để mô phỏng hiện tượng này. Sự tích hợp cả dò tia dựa trên điểm quan sát cũng như nguồn sáng thường được biết tới dưới cái tên phương pháp dò tia thuận nghịch, trong đó mỗi quỹ đạo đều được thăm dò theo cả 2 hướng đi từ mắt và đi từ nguồn sáng, rồi các quỹ đạo được nối lại bằng cách liên kết các tia.[2][3]

Phương pháp ánh xạ quang tử là một phương pháp khác cũng sử dụng cả dò tia dựa trên điểm quan sát và dựa trên nguồn sáng; trong pha tính toán ban đầu, các quang tử năng lượng được dò dọc theo các tia từ nguồn sáng nên để tính toán một ước lượng về thông lượng bức xạ như một chức năng của không gian 3 chiều (quang tử tương ứng định vị chính nó). Trong pha tính toán tiếp theo, các tia được dò từ mắt vào cảnh để xác định những mặt hiển hiện, và họa đồ quang tử được dùng để ước lượng kết quả chiếu sáng tại các điểm trên bề mặt lộ sáng.[4][5] Lợi ích của phép ánh xạ quang tử so với phép dò tia thuận nghịch là ở khả năng đạt tới số lượng quang tử đáng kể được sử dụng lại cho tính toán, giảm công việc tính toán, với cái giá là làm kết quả bị thiên lệch theo dạng thống kê.

Một vấn đề phụ xuất lộ khi phải đi xuyên qua một khe hở rất nhỏ để chiếu sáng toàn cảnh (xem xét một căn phòng tối, với một cách cửa khép hờ hướng ra một căn phóng khác sáng trưng ánh điện), hoặc một cảnh với tất cả các điểm không tia nhìn trực tiếp tới bất cứ nguồn sáng nào (như với ceiling-directed light fixtures or torchieres). Trong những trường hợp đó, chỉ một phần rất nhỏ của các quỹ đạo tia sáng mới cung cấp năng lượng; phương pháp truyền tải ánh sáng Metropolis là một phương pháp bắt đầu với sự tìm kiếm ngẫu nhiên một quỹ đạo trong không gian, và khi các quỹ đạo cung cấp năng lượng được tìm thấy, tái sử dụng những thông tin này bằng cách khám phá những khoảng không kế cận các tia.[6]

Giải thuật: quá trình dò tia đệ quy cổ điển[sửa | sửa mã nguồn]

Cho mỗi điểm ảnh trên hình {
  Tạo tia từ điểm quan sát xuyên qua điểm ảnh tương ứng
  Nhập giá trị đầu vào t_GầnNhất cho tới VÔ_CỰC và ĐốiTượngGầnNhất bằng NULL

  Cho mọi đối tượng trong cảnh  {
     Nếu tia giao cắt với đối tượng {
        Nếu t của giao điểm ít hơn t_GầnNhất {
           Đặt t_GầnNhất là t của giao điểm
           Đặt ĐốiTượngGầnNhất tới đối tượng này
        }
     }
  }

  Nếu ĐốiTượngGầnNhất là NULL {
     Lấp đầy điểm ảnh này với màu phông nền
  } Nếu không {
     Bắn ra một tia cho mỗi nguồn sáng để kiểm tra bóng đổ
     Nếu bề mặt là phản xạ, tạo tia phản xạ: trả về
     Nếu bề mặt là trong suốt, tạo tia khúc xạ: trả về
     Dùng ĐốiTượngGầnNhất và t_GầnNhất để tính toán hàm bóng đổ.
     Lấp đầy điểm ảnh này với kết quả của hàm tính toán bóng đổ.
  }
}
PathOfRays vi.svg

Bên tay phải là một hình ảnh trình diễn một VD đơn giản về 1 quỹ đạo của tia được tạo ra một cách đệ quy từ camera (hoặc mắt) tới nguồn sáng sử dụng giải thuật trên. Một bề mặt khuếch tán tia sáng ra mọi hướng.

Đầu tiên, một tia được tạo tại điểm quan sát và được dò theo đường xuyên qua điểm ảnh vào đến cảnh, nơi nó chạm một bề mặt tán xạ. Từ bề mặt đó giải thuật khởi tạo đệ quy một tia phản xạ mà tia đó được dò qua cảnh, nơi nó lại chạm phải một bề mặt tán xạ khác. Cuối cùng, tia phản xạ khác lại được khởi tạo và dò theo cảnh, nơi nó tiếp xúc với nguồn sáng và bị hấp thụ. Màu sắc của điểm ảnh giờ đây phụ thuộc vào màu sắc của bề mặt tán xạ đầu tiên, bề mặt kế tiếp cùng với màu của ánh sáng phát ra từ nguồn sáng. Ví dụ như nguồn sáng phát ánh sáng trắng và 2 bề mặt kia màu xanh dương thì kết quả màu của điểm ảnh tương ứng là xanh dương.

Thời gian thực[sửa | sửa mã nguồn]

Công trình thực tế đầu tiên về một trình dò tia "thời gian thực" đã được công nhận năm 2005 tại hội thảo đồ họa máy tính SIGGRAPH dưới dạng các công cụ REMRT/RT phát triển năm 1986 bởi Mike Muuss dành cho hệ thống tạo mô hình khối đặc BRL-CAD. Công khai đầu tiên năm 1987 ở USENIX, trình dò tia BRL-CAD là bản thực tế đầu tiên được biết đến như một hệ thống dò tia phân phối theo mạng song song đạt tới vài khung hình một giây tính theo hiệu năng kết xuất hình ảnh.[7] Hiệu năng này đạt được bằng cách tạo hiệu ứng đòn bẩy trên hệ thống kết xuất đồ họa LIBRT vừa được tối ưu hóa cao vừa độc lập với các nền tảng hệ điều hành trong BRL-CAD và bằng cách dùng hình học hoàn hảo khối đặc CSG trên hàng loạt máy tính song song chia sẻ bộ nhớ qua một mạng tiện nghi. Chương trình dò tia của BRL-CAD, bao gồm các công cụ REMRT/RT, được tiếp tục phát triển tới ngày nay dưới dạng phần mềm mã nguồn mở.[8]

Từ đó trở đi, có những nỗ lực đáng ghi nhận và các nghiên cứu nhằm ứng dụng dò tia trong chế độ thời gian thực cho nhiều mục đích khác nhau trên một cấu hình máy để bàn riêng biệt. Các mục đích này bao gồm các ứng dụng đồ họa 3 chiều có tính tương tác như các đoạn mẫu sản phẩm, máy tính và trò chơi điện tử, và kết xuất ảnh đồ họa. Một số phần mềm dò tia 3D đã được phát triển bởi những lập trình viên tạo mẫu từ cuối những năm 1990.[9]

Dự án OpenRT bao gồm một lõi phần mềm đã được tối ưu hóa cao độ sử dụng phương pháp dò tia dựa trên OpenGL-giống như API theo cách cung cấp một sự thay thế cho rasterisation dựa trên cơ sở cách tiếp cận tương tác 3D đồ họa. Phần cứng phục vụ dò tia, chẳng hạn như một đơn vị xử lý tia đã được phát triển ở Đại học Saarland, được thiết kế để tăng tốc một vài tác vụ tính toán nặng nề của phương pháp dò tia. Ngày 16 tháng 3 năm 2007, Đại học Saarland giới thiệu thực nghiệm đầu tiên của chương trình dò tia hiệu suất cao cho phép trò chơi máy tính đạt hiệu quả xử lý dò tia cao trong khi không ngốn nhiều tài nguyên hệ thống.[10]

12 tháng 6 năm 2008, Intel giới thiệu trò chơi Enemy Territory: Quake Wars sử dụng phép dò tia cho công đoạn kết xuất đồ họa, chạy ở độ phân giải HD cơ bản (720px). Trò chơi ETQW hoạt động ở mức 14-29 khung hình một giây. Bản giới thiệu này chạy trên một hệ thống Tigerton 16-nhân (4 khe cắm, 4 nhân) tốc độ 2.93 GHz.[11]

Tại SIGGRAPH 2009 Nvidia thông báo về OptiX, một API (Application Programing Interface - Giao diện lập trình ứng dụng) dành cho dò tia thời gian thực trên các bộ xử lý đồ họa của Nvidia (GPU). API exposes seven programmable entry points within the ray tracing pipeline, cho phép tùy biến camera, các giao điểm nguyên thủy của tia, định dạng vật liệu, bóng, v.v...[12]

Ví dụ[sửa | sửa mã nguồn]

Như một chứng minh của các nguyên lý được bao hàm trong phương pháp dò tia, ta hãy xem xét làm thế nào một CM tìm được giao điểm giữa tia và một mặt cầu. Trong phép biểu diễn vector, phương trình mô tả mặt cầu với tâm \mathbf c và bán kính \mathbf r

\left\Vert \mathbf x - \mathbf c \right\Vert^2=r^2.

Bất kỳ điểm nào trên tia xuất phát từ điểm \mathbf s theo phương \mathbf d (ở đây \mathbf d là một vector đơn vị) có thể được viết dưới dạng

\mathbf x=\mathbf s+t\mathbf d,

trong đó  t là khoảng cách giữa \mathbf x\mathbf s. Trong bài toán của chúng ta, ta biết \mathbf c, \mathbf r, \mathbf s (VD: vị trí của một nguồn sáng) và \mathbf d, và ta cần tìm  t. Cho nên, thế \mathbf x vào phương trình mặt cầu ở trên ta có:

\left\Vert\mathbf{s}+t\mathbf{d}-\mathbf{c}\right\Vert^{2}=r^2.

Ta \mathbf{v}\ \stackrel{\mathrm{def}}{=}\  \mathbf{s}-\mathbf{c} cho đơn giản hóa; ta được

\left\Vert\mathbf{v}+t\mathbf{d}\right\Vert^{2}=r^{2}
\mathbf{v}^2+t^2\mathbf{d}^2+2\mathbf{v}\cdot t\mathbf{d}=r^2
(\mathbf{d}^2)t^2+(2\mathbf{v}\cdot\mathbf{d})t+(\mathbf{v}^2-r^2)=0.

Biết được d là một vector đơn vị cho phép ta sử dụng dạng giản hóa dưới:

t^2+(2\mathbf{v}\cdot\mathbf{d})t+(\mathbf{v}^2-r^2)=0.

Phương trình bậc bốn này có các nghiệm sau:

t=\frac{-(2\mathbf{v}\cdot\mathbf{d})\pm\sqrt{(2\mathbf{v}\cdot\mathbf{d})^2-4(\mathbf{v}^2-r^2)}}{2}=-(\mathbf{v}\cdot\mathbf{d})\pm\sqrt{(\mathbf{v}\cdot\mathbf{d})^2-(\mathbf{v}^2-r^2)}.

Hai giá trị của t tìm thấy sau khi giải phương trình này là hai thành phần mà \mathbf \mathbf s+t\mathbf d là các điểm nơi tia giao cắt mặt cầu.

Nếu một (hoặc cả hai) trong số chúng có giá trị âm, thì các giao điểm không nằm trên tia mà mà trên nửa đường thẳng đối nghịch (VD: một tia bắt đầu từ \mathbf s với hướng ngược lại).

If the quantity under the square root (the discriminant) mang giá trị âm, thì tia không giao cắt với mặt cầu.

Ta giả sử còn ít nhất một giải pháp tích cực, và coi t là phần tử tối thiểu. Thêm vào đó, ta giả sử mặt cầu là đối tượng gần nhất trong cảnh của chúng ta giao cắt các tia, điều đó làm nên vật liệu phản xạ. Ta cần tìm trong phương nào tia sáng bị phản xạ. Định luật về phản xạ cho biết góc tới bằng góc phản xạ, tia tới đối xứng với tia phản xạ qua pháp tuyến bề mặt của mặt cầu.

Pháp tuyến tới mặt cầu được cho bởi PT:

\mathbf n=\frac{\mathbf y- \mathbf c}{\left\Vert\mathbf y- \mathbf c\right\Vert},

với \mathbf y=\mathbf s+t\mathbf d là giao điểm đã tìm thấy trước đó. Hướng phản xạ có thể tìm thấy bằng một phép đối xứng của \mathbf d với pháp tuyến \mathbf n, là

\mathbf r = \mathbf d - 2(\mathbf n \cdot \mathbf d ) \mathbf n.

Vì thế tia phản xạ được biểu diễn bằng PT:

\mathbf x = \mathbf y  + t \mathbf r. \,

Giờ chúng ta chỉ cần tính toán giao điểm của tia sau cùng với trường nhìn, để có được điểm ảnh mà tia sáng phản xạ của chúng ta sẽ chiếu tới. Cuối cùng, điểm ảnh này được đặt một màu sắc gần đúng, tính cả ảnh hưởng từ màu của nguồn sáng nguyên thủy cũng như màu sắc của mặt cầu có liên quan trong quá trình phản xạ các tia.

Đây đơn thuần là nội dung toán học liên quan đến giao điểm của đường thẳng với mặt cầu và sự xác định tiếp sau đó màu sắc của điểm ảnh được tính toán. Tất nhiên là còn xa mới mô tả đầy đủ tiến trình dò tia, nhưng chứng minh này được coi là ví dụ cho giải thuật này.

Phần mềm[sửa | sửa mã nguồn]

Tham khảo[sửa | sửa mã nguồn]

  1. ^ Appel A. (1968) Một số kỹ thuật dành cho kết xuất đồ họa bằng máy. AFIPS Conference Proc. 32 pp.37-45
  2. ^ Eric P. Lafortune and Yves D. Willems (tháng 12 năm 1993). “Bi-Directional Path Tracing”. Proceedings of Compugraphics '93: 145–153. 
  3. ^ Péter Dornbach. “Implementation of bidirectional ray tracing algorithm”. Truy cập ngày 11 tháng 6 năm 2008. 
  4. ^ http://graphics.ucsd.edu/~henrik/papers/photon_map/global_illumination_using_photon_maps_egwr96.pdf Global Illumination using Photon Maps
  5. ^ Photon Mapping - Zack Waters
  6. ^ http://graphics.stanford.edu/papers/metro/metro.pdf
  7. ^ See Proceedings of 4th Computer Graphics Workshop, Cambridge, MA, USA, tháng 10 năm 1987. Usenix Association, 1987. pp 86–98.
  8. ^ “About BRL-CAD”. Truy cập ngày 28 tháng 7 năm 2009. 
  9. ^ Piero Foscari. “The Realtime Raytracing Realm”. ACM Transactions on Graphics. Truy cập ngày 17 tháng 9 năm 2007. 
  10. ^ Mark Ward (16 tháng 3 năm 2007). “Rays light up life-like graphics”. BBC News. Truy cập ngày 17 tháng 9 năm 2007. 
  11. ^ Theo Valich (12 tháng 6 năm 2008). “Intel converts ET: Quake Wars to ray tracing”. TG Daily. Truy cập ngày 16 tháng 6 năm 2008. 
  12. ^ Nvidia (18 tháng 10 năm 2009). “Nvidia OptiX”. Nvidia. Truy cập ngày 6 tháng 11 năm 2009. 

Liên kết ngoài[sửa | sửa mã nguồn]