MỘT SỐ PHƢƠNG PHÁP XỬ LÝ ÁNH SÁNG

Một phần của tài liệu Nghiên cứu một số kỹ thuật chiếu sáng trong trưng bày ảo (Trang 35)

Trong lĩnh vực đồ họa máy tính vấn đề tạo ra một bức ảnh chân thực rất quan trọng và đặc biệt với đồ họa ba chiều cần đòi hỏi thời gian thực. Trong các nghiên cứu trong lĩnh vực đồ họa đối với xử lý ánh sáng có thể nói đến các phƣơng pháp nổi tiếng nhƣ Radiosity, Raytracing và Photon mapping. Nhƣ chúng ta đã biết vấn đề trƣng bày ảo cũng đòi hỏi thời gian thực và độ chân thực phải cao, nghĩa là các hiệu ứng ở bên ngoài nhƣ thế nào thì bên trong trƣng bày ảo cũng cần đảm bảo tƣơng tự nhƣ vậy. Mặc dù tốc độ tính toán của máy tính hiện nay rất nhanh và sức mạnh về phần cứng rất tốt nhƣng cũng cần tối ƣu nhất khả năng tính toán của máy tính. Nhƣ đã phân loại đối tƣợng trong trƣng bày ảo, đối tƣợng tĩnh là những thứ sẽ không di chuyển trong quá trình tƣơng tác, ví dụ nhƣ nhà cửa, bàn ghế..., những thứ này hầu hết đứng yên trong quá trình du khách vào thăm quan. Vì vậy khi chiếu sáng để giảm thiểu tính toán chúng tôi tạo lightmap cho những vật này. Về bản chất nó là một Textures của vật thể khi đƣợc chiếu sáng bởi một nguồn cố định, thƣờng những nguồn này có ánh sáng vừa phải không tạo hiệu ứng bóng đổ. Sau khi tạo đƣợc Textures cho đối tƣợng sẽ gắn ngƣợc lại cho đối tƣợng, nhƣ vậy khi đƣa vào không gian trƣng bày tạo cảm giác hiện vật nhƣ đƣợc chiếu sáng. Trong phần này luận văn đề cập tới hai phƣơng pháp radiosity và ray tracing là hai phƣơng pháp chính để tạo lightmap cho hiện vật. Radiosity là giải thuật đầu tiên và nổi tiếng nhất, phƣơng pháp này mô phỏng sự tƣơng tác ánh sáng giữa các bề mặt với nhau. Giải thuật Ray tracing mô phỏng lần theo

cả các bề mặt của vật thể. Mặc dù việc tính toán khá phức tạp nhƣng nó tạo ra đƣợc những hiệu ứng thực tế rất tốt cho đến nay ngƣời ta vẫn sử dụng nó. Nó đạt đƣợc điều này bằng cách dựa trên năng lƣợng của ánh sáng. Nó chủ yếu đề cập đến ánh sáng khuếch tán, các hiệu ứng nhƣ gƣơng đƣợc xử lý bằng một phƣơng pháp khác. Nó cũng là một phƣơng pháp trong đó các hiệu ứng ánh sáng là một phần của quá trình xây dựng mô hình, so với một số phƣơng pháp khác nhƣ photon thì việc tính toán tiết kiệm hơn khi render hoặc xem khung cảnh [11].

Phƣơng pháp radiosity đƣợc phát triển đầu tiên trong khoảng năm 1950 trong lĩnh vực kỹ thuật truyền nhiệt. Sau đó đã đƣợc cải tiến để áp dụng cho các vấn đề render đồ họa máy tính vào năm 1984 bởi các nhà nghiên cứu tại Đại học Cornell. Chúng đƣợc sử dụng trong các trò chơi Battlefield 3 and Need for Speed: The Run, 3D Studio Max, form•Z, LightWave 3D.

Radiosity mô phỏng ánh sáng bật khắp mọi nơi trong khung cảnh và dùng năng lƣợng của ánh sáng để tính toán, do đó nó đƣợc cho là sử dụng một mô hình chiếu sáng toàn cục. Ngƣợc lại Gouraud và Phong là mô hình ánh sáng địa phƣơng vì nó không tính toán ánh sáng của bề mặt đƣợc chiếu sáng đến mà không cần quan tâm đến sự ảnh hƣởng của bề mặt đó tới đối tƣợng xung quanh. Ray-Tracing là một mô hình toàn cục nó có thể tính toán ánh sáng của đối tƣợng đƣợc phản xạ từ một đối tƣợng khác, ví dụ nhƣ một bề mặt sáng bóng, tuy nhiên nó không phải là mô hình trao đổi năng lƣợng giữa các đối tƣợng mà nó hoàn toàn phụ thuốc vào điểm quan sát.

Việc tính toán Radiosity cho một cảnh đƣợc giả định rằng mức độ ánh sáng không thay đổi, nó tính toán một cách xấp xỉ năng lƣợng đến từng mặt từ ánh sáng của những mặt khác. Điều này cho phép các hiệu ứng mềm mại, giống nhƣ bóng mềm và chảy màu (colour bleeding), đó là hiện tƣợng một đối tƣợng màu đỏ đặt trên vật màu

trắng làm cho một khu vực của vật màu trắng hơi hồng. Có hai tính năng quan trọng trong phƣơng pháp này:

+ Nguồn sáng đƣợc tính toán nhƣ bất cứ bề mặt nào, chúng ta có thể mô hình hóa chúng.

+ Các phƣơng trình Radiosity đƣợc giải quyết một lần, trƣớc khi cảnh đƣợc render, và cảnh có thể đƣợc xem bất cứ nơi nào mà không cần phải tính toán lại. Vì vậy ban đầu tính toán mất thời gian nhƣng sau đó đƣợc tính toán một cách nhanh chóng. Radiosity thƣờng đƣợc kết hợt với các bề mặt, chứ không phải các cạnh, bởi vì bề mặt là nơi diễn ra việc trao đổi năng lƣợng ánh sáng. Radiosity cố gắng làm đúng nhƣ ánh sáng môi trƣờng vì vậy cần phải xấp xỉ ánh sáng.

Hình 2.5. Chia đối tượng thành các mảnh nhỏ.

a. Phương pháp tiếp cận

Hãy tƣởng tƣợng trong một thế giới 3D khép kín, giả sử nhƣ một căn phòng kín với nội thất và các đối tƣợng khác đƣợc chiếu sáng bởi một số mảnh ánh sáng. Căn phòng trong trạng thái cân bằng năng lƣợng nghĩa là đối với bất cứ bề mặt nào (trừ các nguồn sáng) lƣợng năng lƣợng của nó bằng số năng lƣợng hấp thụ cộng với năng lƣợng bức xạ. Ánh sáng bức xạ từ này lại trở thành ánh sáng đến các bề mặt khác trong cảnh. Mặt i đƣợc chiếu sáng bởi các bề mặt khác trong cảnh, lƣợng ánh sáng tại mặt i

đƣợc gọi là radiosity của nó. Nó đƣợc tạo thành từ hai thành phần : ánh sáng đến từ các bề mặt khác và ánh sáng mà nó tự tạo ra nếu nó là một nguồn sáng.

b. Radiosity Rendering

Hệ số phản xạ của bề mặt cho biết tỷ lệ năng lƣợng tán xạ. Nếu vật liệu có bề mặt tán xạ hoàn toàn thì màu sắc của vật sẽ không giống nhƣ màu sắc nội tại của nó có. Việc tính toán thành phần phản xạ này không dễ dàng, tuy nhiên chúng ta phải tính tất cả các thành phần radiosity tác động đến bề mặt. Fij từ mặt i đến mặt j đƣợc gọi là

lƣợng này nhƣ một tập hợp các phƣơng trình diễn ra đồng thời, và chúng ta giải quyết để có đƣợc giá trị cho mỗi mảnh riêng biệt. Để hiệu quả phƣơng pháp này chia bề mặt thành các mảnh lớn nếu nhƣ khu vực đó chiếu sáng đồng đều. Để làm bóng chúng ta sử dụng Gouraud vì vậy nó rất nhanh chóng dễ dàng.

c. Lý thuyết

Trong phần này, chúng tôi sẽ làm việc làm thế nào để tính toán radiosity tại bất cứ điểm nào trên bề mặt mô hình. Chúng ta không quan tâm đến điểm ảnh, tam giác.. điều đó sẽ đƣợc đề cập sau. Theo định nghĩa, radiosity là năng lƣợng để lại trên một đơn vị diện tích trong một đơn vị thời gian. Chúng tôi giả định rằng ánh sáng cƣờng độ mọi lúc là nhƣ nhau vì vậy không quan tâm về mặt thời gian và xem xét tại một thời điểm tức thời. Chúng ta có những thuật ngữ sau đây:

 Ai là diện tích của mảnh i .

 Bi là radiosity của mảnh i.

 Ei là năng lƣợng của mảnh i trong một đơn vị thời gian (chỉ nguồn sáng mới có năng lƣợng này).

 Ri là hệ số phản xạ, thể hiện tỷ lệ tia phản xạ so với tia đến.

 Fij là phần năng lƣợng từ mảnh j truyền đến mảnh i gọi là form factor Chúng ta hãy xem những gì xảy ra tại mảnh i. Đầu tiên chúng ta đặt câu hỏi có bao nhiêu mảnh tác động tới mảnh i. Hãy xem một số mảnh j khác, đặc biệt là một khu vực vô cùng nhỏ bên trong nó gọi là dAj . Hầu hết các tia không đến đƣợc mảnh i, nhƣng số còn lại sẽ tới mảnh i, vậy số lƣợng tới mảnh i là (2.11)

Đó là lƣợng từ một mảnh vô cùng nhỏ của mảnh j, vậy cả mảnh j sẽ truyền tổng năng lƣợng nhƣ sau : . Khi đến mặt i một phần năng lƣợng sẽ bị hấp thụ, phần còn lại sẽ phản xạ truyền đi: (2.12)

Mảnh i có thể là một nguồn sáng vì vậy nó có năng lƣợng nội tại, nguồn năng lƣợng tại mảnh i là : = + (2.13)

Đây là phƣơng trình radiosity. Nó thể hiện sự trao đổi ánh sáng hoàn toàn giữa tất cả các bề mặt trong mô hình. Các giá trị khác không của E là ánh sáng nguồn đã truyền năng lƣợng cho từng mảnh, hệ số phản xạ R là những gì ánh sáng phân tán, do đó 1-R là lƣợng ánh sáng bị hấp thụ, khi nguồn sáng ổn định tức là phòng không nhận những ánh sáng có cƣờng độ thấp hơn hoặc thay đổi, điều duy nhất chúng ta không biết trong công thức trên đó là formfactor vì vậy làm thế nào để tính toán form factor cho từng mảnh một. Để dễ dàng hơn chúng ta mô tả dƣới dạng hình học.

Hình 2.6. Mô tả hình học giữa hai mảnh Ai và Aj.

Chúng ta xem xét một điểm trên i, một điểm trên i có thể nhận đƣợc năng lƣợng từ bất kỳ hƣớng. Từ hình vẽ trên chúng ta có thể lập luận rằng số lƣợng năng lƣợng rời mảnh j tới mảnh i phụ thuộc vào góc giữa hai mảnh i và j. Chúng ta giả định rằng các mảnh đủ nhỏ và đồng đều về mặt năng lƣợng, ta có công thức tính formfactor tổng quát nhƣ sau.

= (2.14)

Điều quan trọng là cần tính toán đƣợc formfactor cho mỗi mảnh, sau đó ta sẽ tính đƣợc radiosity của từng mảnh đƣợc quan tâm.

d. Độ phức tạp tính toán

Độ phức tạp tính toán của phƣơng pháp radiosity là O(n2), trong đó việc tính toán form factor là tốn kém nhất trong tổng khối lƣợng tính toán. Một số phƣơng pháp cải tiến cũng đƣợc nghiên cứu với độ phức tạp nhỏ hơn là O(n). Một trong những cải tiến là các bề mặt quan trọng đƣợc xử lý trƣớc, đó là những mặt chịu tác động bởi ánh (adsbygoogle = window.adsbygoogle || []).push({});

năm 1525. Albrecht Dürer (1471-1528), một họa sỹ đồng thời là nhà điêu khắc ngƣời Đức sử dụng một thiết bị để vẽ lại một hình ảnh đúng theo phép chiếu phối cảnh. Từng điểm trên vật thể thật lần lƣợt đƣợc chiếu một cách thủ công lên một mặt phẳng. Ngày nay chúng ta gọi quá trình này là "phép chiếu các điểm 3D lên một mặt phẳng 2D".

Hình 2.7. Mô phỏng hình ảnh 3D bằng phương pháp thủ công

Ray tracing cũng đƣợc sử dụng trong thiết kế ống kính cho kính hiển vi, kính thiên văn, máy ảnh... Isaac Newton (1642-1727) cũng đã nói đến sự phản xạ và khúc xạ các tia trong 1.704 cuốn sách nổi tiếng Opticks của ông. Một trong những minh họa của ông đƣợc thể hiện trong hình sau:

b. Cách thức thực hiện.

Phƣơng pháp Dò tia (ray tracing) là phiên bản mở rộng và tổng quát hơn của phƣơng pháp Chiếu tia (ray casting). Phƣơng pháp Dò tia giả lập luồng các tia sáng trong tự nhiên để mô tả các vật thể. Khác với phƣơng pháp Chiếu tia, phƣơng pháp Dò thƣờng áp dụng các kỹ thuật Monte Carlo, đây là các kỹ thuật dựa trên cơ sở tính trung bình một số mẫu lấy ngẫu nhiên (không theo một công thức nào) từ một mô hình vật thể. Trong kỹ thuật này, mẫu cần lấy là các tia ánh sáng giả lập từ điểm nhìn cắt vào bề mặt các vật thể đƣợc mô tả trong cảnh. Kỹ thuật này phát huy ƣu điểm trong các trƣờng hợp cần kết xuất bóng tối (đổ bóng), kết xuất sự khúc xạ hay kết xuất sự phản quang một cách phức tạp.

Ở kết quả của một quá trình kết xuất đồ họa theo phƣơng pháp Dò tia, tại mỗi điểm ảnh có thể có rất nhiều tia cùng chiếu tới cùng lúc. Khi đó quá trình tính toán để mô phỏng các tia sáng tiếp xúc với vật thể không chỉ dừng lại khi các tia sáng tiếp xúc bề mặt đầu tiên của vật thể mà còn tiếp tục quá trình tính toán để mô phỏng chuỗi các va đập của từng tia sáng sau khi tiếp xúc với vật thể tuân theo các quy luật trong quang học nhƣ phản xạ, khúc xạ.

Khi các tia quay trở lại gặp nguồn sáng hoặc trong trƣờng hợp quá trình kết xuất đã thực hiện xong một lƣợng giới hạn các tính toán mô phỏng sự va đập của các tia, độ sáng của bề mặt tại thời điểm kết quả đƣợc tính toán trên cơ sở các kỹ thuật nêu trên và các thay đổi về đƣờng đi của các tia sau khi va đập với các bề mặt của vật thể đƣợc tính toán tỉ mỉ để cho ra giá trị của điểm ảnh mà ngƣời quan sát thấy đƣợc từ điểm nhìn. Công việc này lặp lại cho mỗi mẫu hình, từng điểm ảnh.

Do việc phải thực hiện một khối lƣợng phép tính khổng lồ của phƣơng pháp này (tính toán để mô phỏng đƣờng đi và hiệu quả của từng tia sáng một), phƣơng pháp Dò tia không phù hợp với mục đích kết xuất theo thời gian thực (real-time rendering). Với các công cụ đồ họa hiện nay, việc thực hiện phƣơng pháp này vẫn rất chậm.

Tuy vậy, ngày nay với nhiều nghiên cứu trong việc tối ƣu hóa quá trình tính toán để giảm bớt số lƣợng các phép tính cần thực hiện trong quá trình kết xuất, nhất là trong công đoạn không yêu cầu độ chi tiết cao hoặc không yêu cầu nhiều về việc dò tia đã làm cho kỹ thuật kết xuất này ngày càng đƣợc ứng dụng phổ biến hơn. Hiện nay trên thế giới cũng đã bắt đầu xuất hiện một số phần cứng đƣợc thiết kế hỗ trợ tăng tốc

một ảnh 2D. Ray tracing là một trong những phƣơng pháp kết xuất đồ họa phổ biến nhất hiện nay. Thuật toán Ray tracing cơ bản bao gồm hai phần tính toán chính đối với mỗi điểm ảnh: tìm điểm ảnh của bề mặt gần nhất và tính toán màu sắc tại điểm ảnh đó.

Hình 2.9. Mô tả hình học phương pháp Ray tracing

Phƣơng pháp này xác định sự hiển thị các bề mặt vật thể bằng cách dõi theo các tia sáng tƣởng tƣợng từ mắt ngƣời xem tới các đối tƣợng trong khung cảnh. Với mô tả nhƣ vậy, phƣơng pháp ray tracing dễ bị nhầm lẫn với phƣơng pháp ray casting, tuy nhiên trong thực tế phƣơng pháp ray tracing phức tạp hơn rất nhiều. Appel là ngƣời đầu tiên sử dụng máy tính để kết xuất các hình ảnh theo phƣơng pháp này.

Thuật toán ray tracing đơn giản nhất đƣợc mô tả nhƣ sau:

for each pixel do

compute ray for that pixel for each object in scene do

if ray intersects object and intersection is nearest so far then record intersection distance and object color

set pixel color to nearest object color (if any)

Trong kỹ thuật ray tracing, để nâng cao chất lƣợng của một hình ảnh thì chỉ cần tăng số lƣợng tia sáng bắn ra đối với mỗi điểm ảnh. Việc làm này sẽ giảm thiểu các hiệu ứng răng cƣa, bậc thang khi hiển thị vật thể.

Hình 2.10. Hình ảnh thô biểu diễn hai ấm trà

Trong hình trên sử dụng kỹ thuật ray tracing đơn giản để thể hiện hình dáng của hai ấm trà nhìn từ điểm nhìn đặt tại mắt ngƣời xem. Tuy nhiên, hình trên mới mô tả hình ảnh đơn giản của hai ấm trà đƣợc kết xuất đồ họa với một màu đen và phƣơng pháp Ray tracing xử lý rất tốt với những hiện tƣợng bóng đổ, phản xạ, nó cũng giải quyết rất tốt với hiệu ứng bóng đổ.

d. Xử lý bóng đổ với Ray tracing.

Trong phạm vi nghiên cứu của luận văn, đến nay chúng ta mới chỉ sử dụng ray tracing để xác định, mô phỏng các đối tƣợng trong ảnh. Ứng dụng mở rộng đầu tiên của kỹ thuật ray tracing đƣợc xem xét đó là xử lý đổ bóng của vật thể: ta có thể xác định một điểm có nằm trong bóng hay không bằng cách dò ngƣợc theo tia sáng từ điểm đó đến nguồn sáng. Nếu tính từ điểm cần xét ngƣợc về nguồn sáng, trên đƣờng đi tia sáng đã chạm qua vật thể thì điểm cần xét đó đang nằm trong bóng chiếu, ngƣợc lại thì điểm cần xét đang đƣợc chiếu sáng trực tiếp. Khi tính toán các điểm nằm trong bóng đổ của vật thể, ta chỉ quan tâm đến việc trƣớc khi tới điểm cần xét tia sáng đã chạm vật thể hay chƣa. Hình (a) mô tả một điểm cần xét nằm trong bóng đổ của vật thể.

Hình 2.11: (a) Các tia đổ bóng; (b) Hai ấm trà được xử lý đổ bóng bằng kỹ thuật Ray tracing.

Đối với nguồn sáng hẹp nhƣ điểm sáng hoặc đốm sáng, ta sẽ thực hiện việc dò

Một phần của tài liệu Nghiên cứu một số kỹ thuật chiếu sáng trong trưng bày ảo (Trang 35)