Kiến thức : Rendering & Shading từ A đến Z – Phần 1

I-Nguồn gốc và phân loại

II-Các kĩ thuật, công nghệ render, và những giải thuật tính toán ánh sáng

III-Các Render Engine

————————-

I-Nguồn gốc và phân loại :

Trong loạt bài viết này, chúng ta sẽ chỉ khảo sát khái niệm rendering & shading trong lĩnh vực điện toán và nghệ thuật. Cụ thể như là các ngành mĩ thuật truyền thống, digital art, và đồ họa máy tính nói chung. Và tập trung đi sâu vào mảng render trong đồ họa máy tính. Do đặc thù chuyên môn, 1 số thuật ngữ sẽ được giữ nguyên ở thể tiếng Anh, vì dịch sang tiếng Việt sẽ rất tối nghĩa.

Rendering được chia thành những loại cơ bản sau :

1-Artistic Rendering ( render nghệ thuật ): là phương thức truyền thống của các họa sĩ, họ dùng cọ vẽ, chì than, hoặc sơn xịt để vẽ các đối tượng lên giấy hoặc màn vẽ ( gọi chung là Canvas ), sau đó họ sẽ tỉ mỉ mô tả lại ánh sáng, bóng đổ, màu sắc của những đối tượng đó. Yêu cầu đặt ra là phải tái hiện 1 cách chính xác ánh sáng và bóng đổ cũng như đặc tính của những bề mặt chất liệu của các đối tượng trong bức tranh mà họ đang vẽ. Công cụ quan trọng nhất chính là đôi tay và con mắt cảm nhậnDora l’exploratrice Moonwalk.

Khi máy tính trở nên phổ biến, có 1 chút thay đổi về phương tiện hoạt động, thay vì dùng bút và cọ vẽ truyền thống, các họa sĩ có thể dùng máy tính và bảng vẽ điện tử ( graphic tablet ) cũng như các phần mềm đồ họa để giảm bớt gánh nặng cho mình. Cụ thể, hiện nay phổ biến nhất là các Wacom tablet và các phần mềm như Photoshop hoặc Corel Painter. Nhưng dù phương tiện là gì, bản chất của Artistic Rendering vẫn ko đổi, và thành tố quyết định vẫn là đôi tay và con mắt mỹ thuật của mỗi người.

2-Architectural Rendering ( render kiến trúc ) : là nghệ thuật tạo ra các bức ảnh 2D hoặc các đoạn hoạt cảnh thể hiện các tính chất của 1 thiết kế kiến trúc nào đó.

Còn được biết đến như là phương thức render thật như ảnh chụp ( photo-real rendering ), cho dù đôi khi có thể là non-photoreal, tùy theo yêu cầu về phong cách render của từng dự án. Những phần mềm 3D phức tạp sẽ được sử dụng để tạo ra các bức ảnh thật như cuộc sống. Mục đích của chúng thường là để trình diễn, tiếp thị, và hỗ trợ cho việc phân tích thiết kế cho 1 công trình kiến trúc cụ thể nào đó sẽ được xây dựng. Các mô hình 3D kiến trúc sẽ có tỉ lệ kích thước giống y như đời thật, thậm chí chúng sẽ sử dụng các chất liệu, vân bề mặt, màu sắc…cũng giống như ngoài đời thật ( real-life ). Photoreal rendering có thể được trình bày dưới 1 trong những hình thức sau :

-Render ảnh tĩnh ( still renderings ). Tạo ra 1 bức ảnh chất lượng cao duy nhất thể hiện 1 góc nhìn nào đó trong khung cảnh.

-Các đoạn phim diễn họa dạng Walkthrough và Fly-by. Camera sẽ đi xuyên suốt qua toàn bộ khung cảnh để cho người xem có được một quan sát toàn diện nhất về công trình.

-Thực tế ảo, đi tour ảo ( virtual reality, virtual tour ). Giả lập và mô phỏng 1 thế giới ảo, trong đó có các công trình kiến trúc, cơ sở vật chất, con người, cây cối…như ngoài đời thật, người xem có thể đi lại, quan sát, tương tác..trong môi trường đó để có được những trải nghiệm chân thực nhất ( giống như các video game )

-Paronamic Rendering. Render toàn cảnh, cho phép người xem có được 1 cái nhìn bao quát về toàn bộ công trình chỉ trong 1 bức ảnh duy nhất.

Cứ thế, 3D photoreal rendering đóng 1 vai trò rất quan trọng trong việc kinh doanh bất động sản thực tế. Nó ảnh hưởng tới những quyết định về thiết kế của công trình ngay trước khi được xây dựng thực sự. Do đó, nó có giúp các kiến trúc sư và những nhà thầu trải nghiệm được nhiều thiết kế khác nhau, nhiều khía cạnh thị giác khác nhau của 1 dự án kiến trúc.

3-Rendering – Computer Graphics  ( render sử dụng đồ họa máy tính nói chung ) :

Rendering là quá trình tạo ra 1 hình ảnh từ 1 model ( mô hình 3D ), hoặc nhiều model khác nhau tạo thành 1 file cảnh ( scene file ), bằng cách sử dụng các chương trình máy tính. Một file cảnh bao gồm các đối tượng trong một cấu trúc dữ liệu hoặc ngôn ngữ được định nghĩa nghiêm ngặt ; nó có thể chứa thông tin hình học, góc nhìn, vân bề mặt, ánh sáng, tô bóng ( shading ) như là một mô tả của 1 khung cảnh ảo. Dữ liệu chứa trong file scene sau đó được đưa vào trong 1 chương trình render ( rendering engine, rendering program ) để được xử lý và xuất ra 1 file ảnh kĩ thuật số. Thuật ngữ “rendering” có thể tương tự như là “artist’s rendering” của 1 cảnh. Mặc dù các chi tiết kĩ thuật của từng phương thức render có thể khác nhau, nhưng thử thách chung trong việc tạo ra ảnh 2D từ dữ liệu 3D trong file scene chính là cái gọi là “graphics pipeline” trong các phương tiện render, như GPU ( đơn vị xử lý đồ họa ). GPU là 1 thiết bị được xây dựng để hỗ trợ CPU trong việc thực hiện các tính toán render phức tạp. Nếu 1 cảnh trông tương đối “realistic” ( thuật ngữ “realistic” được dùng để mô tả 1 cái gì đó có diện mạo mang tính chi tiết cao và rất giống ngoài đời ) và có thể dự đoán được dưới điều kiện ánh sáng ảo, phần mềm render sẽ xử lý cái gọi là “phương trình render” ( rendering equation – sẽ nói cụ thể sau ). Rendering equation ko miêu tả tất cả các hiện tượng ánh sáng, mà chỉ sử dụng 1 mô hình ánh sáng chung cho việc tạo ra CGI ( computer-generated imagery , ảnh được tạo ra bằng máy tính ). “Rendering” còn được sử dụng để mô tả quá trình tính toán các hiệu ứng trong việc biên tập các file video để xuất ra video cuối cùng ( như trong After Effect chẳng hạn ).

Rendering là 1 trong những chủ đề quan trọng của đồ họa 3D, và trong thực tế thì nó luôn liên quan đến các thứ khác. Trong “graphic pipeline”, nó là bước quan trọng cuối cùng, tạo ra diện mạo cuối cùng cho các mô hình 3D và những đoạn diễn họa. Với sự tinh vi ngày càng tăng của đồ họa máy tính từ những năm 1970, nó đã trở thành 1 chủ đề riêng biệt.

Rendering ứng dụng trong kiến trúc, video game, mô phỏng, điện ảnh, hoặc các kĩ xảo truyền hình, và diễn họa thiết kế, mỗi lĩnh vực sử dụng 1 tập hợp cân bằng các đặc điểm và kĩ thuật khác nhau. Như là 1 sản phẩm ứng dụng, nhiều loại renderer đã ra đời.  Một số được tích hợp vào các phần mềm 3D lớn, một số thì độc lập, và 1 số là mã nguồn mở. Sâu bên trong, mỗi renderer là 1 chương trình được cấu trúc và thiết kế cẩn thận, dựa trên 1 tập các khái niệm liên quan đến : quang học, thị giác, toán học, và phát triển phần mềm.

Trong đồ họa 3D, rendering có thể được thực hiện 1 cách chậm rãi, như là pre-rendering ( tiền render ), hoặc được thực hiện với tốc độ cao, như trong thời gian thực ( realtime ). Pre-rendering là một quá trình tính toán nặng nề, thường được sử dụng cho việc tạo phim ảnh, trong khi realtime rendering thì thường dùng trong 3D video game, cái dựa trên sức mạnh xử lý của card đồ họa.

II-Các kĩ thuật render và những giải thuật tính toán ánh sáng :

Khi một model đã hoàn chỉnh, rendering sẽ được sử dụng, nó sẽ áp các vân bề mặt vào model, cùng với ánh sáng, chất liệu…Kết quả là 1 tấm ảnh hoàn chỉnh mà người xem có thể thấy.

Đối với làm phim, nhiều tấm ảnh liên tiếp sẽ được tạo ra, sau đó được gộp lại thành 1 đoạn phim hoàn chỉnh.

1-Các đặc tính :

Một hình ảnh được render có thể được hiểu dưới 1 quan hệ của nhiều đặc tính thị giác khác nhau. Động lực của Nghiên cứu và Phát triển rendering ( Rendering R&D ) là tìm ra những cách để mô phỏng những đặc tính này 1 cách hiệu quả. Một số liên quan trực tiếp đến các giải thuật và kĩ thuật đặc thù, 1 số thì được tạo ra cùng nhau.

-Shading : là cái cách mà màu sắc và độ sáng của 1 bề mặt phản ứng khác biệt nhau với ánh sáng.

Texture-mapping : các phương thức thêm chi tiết vào bề mặt của model.

-Bump-mapping : phương thức mô phỏng các chi tiết nhấp nhô lồi lõm vi mô của bề mặt chất liệu.

-Fogging/participating medium : cái cách mà ánh sáng yếu dần khi chiếu xuyên qua bầu khí quyển hoặc lớp không khí ko trong sạch.

-Shadows : hiệu ứng ánh sáng bị chặn bởi vật thể, tạo ra bóng đổ.

-Soft shadows : vùng bóng đổ được tạo ra bởi 1 nguồn sáng bị chặn ko hoàn toàn, có khoảng giao giữa sáng và tối chạy theo thang độ.

-Reflection : hiệu ứng phản xạ như gương, có độ bóng loáng cao.

-Transparency ( optics ), transparency ( graphic ), opacity : sự chuyển vận của ánh sáng qua 1 vật thể rắn trong suốt.

-Translucency : hiện tượng ánh sáng bị rải đều khắp nơi khi chiếu xuyên qua vật thể rắn mờ đục.

-Refraction : ánh sáng bị bẻ cong khi chiếu qua các vật thể trong suốt.

-Diffraction : sự nhiễu xạ ánh sáng, tia sáng bị bẻ cong, dàn trải, và giao thoa khi chiếu qua 1 khe hở rất nhỏ.

-Indirect Illumination : bề mặt được chiếu sáng bởi ánh sáng phản xạ từ bề mặt khác, chứ ko phải từ nguồn sáng trực tiếp ( còn được biết là Global Illumination – chiếu sáng toàn cục ).

-Caustics ( 1 dạng Indirect Illumination ) : ánh sáng phản xạ từ một bề mặt bóng loáng như gương, hoặc được tụ lại khi chiếu qua 1 vật thể trong suốt, tạo ra 1 vùng cực sáng trên bề mặt của vật thể khác.

-Depth of Field : hiệu ứng vật thể bị mờ khi ở quá xa hoặc quá gần khi quan sát, nằm ngoài vùng tiêu cự.

-Motion Blur : vật thể xuất hiện mờ mờ do chuyển động nhanh, hoặc do camera chuyển động nhanh.

-Non-photorealistic rendering : việc render dưới 1 phong cách mang tính nghệ thuật, làm sao để giống như 1 bức tranh vẽ, chứ ko phải đề cao tính “realistic”.

2-Các mô hình render :
Nhiều giải thuật render đã được nghiên cứu, và phần mềm sử dụng để render có thể triển khai nhiều kĩ thuật khác nhau để đạt được hình ảnh cuối cùng.

Dò đường đi của mỗi hạt ánh sáng trong 1 cảnh thì gần như là hoàn toàn ko thực tế và tốn rất nhiều thời gian. Thậm chí chỉ dò 1 phần đủ lớn để tạo ra 1 bức ảnh cũng lấy đi 1 lượng thời gian ko hề nhỏ nếu như việc lấy mẫu ( sampling )  ko được hạn chế 1 cách thông minh.

Do đó, 4 mô hình chuyển vận ánh sáng hiệu quả hơn đã được gộp lại : Rasterization, bao gồm Scanline rendering, chiếu các vật thể hình học trong scene lên 1 tấm ảnh, và ko có bất kì hiệu ứng quang học cao cấp nào cả ; Ray casting đề cập đến việc scene được quan sát từ 1 góc nhìn cụ thể,  tính toán hình ảnh quan sát được chỉ dựa trên các vật thể hình học và các quy luật quang học rất cơ bản của mật độ phản xạ, và dĩ nhiên sử dụng kĩ thuật Monte Carlo để giảm các sai sót ( artifacts ) ; và Ray tracing thì tương tự như Ray casting, nhưng triển khai thêm các mô phỏng ánh sáng cao cấp hơn, và thường sử dụng kĩ thuật Monte Carlo để đạt được kết quả chân thật hơn với 1 tốc độ thường chậm hơn tùy theo mức độ của quy mô scene. Dạng thứ 4 của kĩ thuật chuyển vận ánh sáng, Radiosity thì ko được sử dụng thường xuyên như là 1 kĩ thuật render, mà thay vào đó tính toán đường đi của ánh sáng khi nó rời nguồn sáng và chiếu sáng bề mặt nào đó. Những bề mặt này thường được render sử dụng 1 trong 3 kĩ thuật kia.

Hầu hết các phần mềm cao cấp đều kết hợp 2 hoặc nhiều kĩ thuật để đạt được kết quả đủ tốt với 1 cái giá hợp lý.

Một sự khác biệt khác là giữa các giải thuật thứ tự hình ảnh ( image order algorithms ), cái lặp lại trên nhiều điểm ảnh của tấm ảnh được render, và các giải thuật thứ tự vật thể ( object order algorithms ), cái lặp lại trên các vật thể trong scene. Nói chung thì thứ tự vật thể hiệu quả hơn, vì thường có ít vật thể trong scene hơn là điểm ảnh.

-Scanline rendering và Rasterisation :

Một sự miêu tả mức độ cao của một bức ảnh cần bao gồm các thành phần trong 1 hệ thống khác biệt từ những điểm ảnh. Những thành phần này được đề cập như là các “primitives”. Ví dụ, trong 1 bản vẽ lược đồ, các mảnh đoạn thẳng và đoạn cong có thể xem như là các primitives. Trong 1 giao diện đồ họa người dùng (GUI ), cửa sổ và các nút bấm được xem là primitives. Trong render 3D, các triangles và polygons trong không gian chính là primitives.

Nếu cách tiếp cận pixel-by-pixel ( thứ tự hình ảnh ) ko thực tế hoặc quá chậm cho 1 vài tác vụ, thì cách tiếp cận primitive-by-primitive để render có thể sẽ có ích. Ở đây, 1 vòng lặp duyệt qua mỗi primitive, tìm xem điểm ảnh nào trong bức ảnh sẽ bị ảnh hưởng, và chỉnh sửa điểm ảnh đó. Đây gọi là Rasterization ( gọi nôm na dễ hiểu là “Bitmap hóa”, tái hiện 1 đoạn thẳng từ dạng vector sang dạng bitmap-cấu thành từ các điểm ảnh-chẳng hạn ), và là phương thức render được sử dụng bởi tất cả các card đồ họa hiện tại.

Rasterization thì thường nhanh hơn render kiểu pixel-by-pixel. Đầu tiên, những vùng lớn của bức ảnh có thể ko có primitive ; Rasterization sẽ bỏ qua những vùng này, còn pixel-by-pixel thì ko. Thứ 2, rasterization có thể tăng tính chặt chẽ lưu trữ đệm ( cache coherency ) và giảm việc thừa bằng cách tận dụng 1 sự thật rằng các điểm ảnh của 1 primitive đơn lẻ thì có xu hướng liên tục trong 1 bức ảnh ( giống như những điểm ảnh cấu thành nên 1 đoạn thẳng thì liên tục và “dính liền” nhau ). Vì những lí do này nên rasterization thường được lựa chọn khi cần render tương tác ( realtime render ) ; tuy nhiên, pixel-by-pixel có thể thường cho ra hình ảnh chất lượng cao hơn và linh hoạt hơn bởi vì nó ko dựa trên nhiều giả định về hình ảnh như rasterization.

Dạng thể cũ của rasterization được mô tả bởi việc render toàn bộ 1 face như là 1 màu đơn duy nhất. Cách khác, rasterization có thể được thực hiện trong 1 phương thức tinh vi hơn bằng cách đầu tiên là render những đỉnh của 1 face, và sau đó render các pixel của face đó như 1 sự phối trộn màu vertex ( vertex color ). Cách rasterization này đã vượt qua cách cũ bời vì nó cho phép hình ảnh tuôn ra mà ko cần các texture phức tạp ( 1 bức ảnh được rasterize khi sử dụng cách face-by-face có xu hướng bị hiệu ứng “block” gồ ghề nếu như ko được bao phủ bởi các texture phức tạp ; các face ko được làm mịn bởi vì ko có sự thay đổi màu dần dần từ 1 primitive sang primitive tiếp theo ). Phương thức mới này tận dụng được nhiều tính năng shading của card đồ họa hơn và vẫn đạt được hiệu năng cao bởi vì texture đơn giản sử dụng ít bộ nhớ hơn. Đôi khi nhà thiết kế sẽ dùng 1 phương thức rasterize này trên một số face và phương thức khác trên các face khác dựa trên góc giữa các face, từ đó tăng tốc độ mà vẫn ko ảnh hưởng tới chất lượng chung.

-Ray casting :

Trong Ray casting, các mô hình 3D ( 3D geometry ) được phân tích pixel-by-pixel, line-by-line, từ điểm quan sát đi tới, như thể các tia được phát ra từ chính điểm quan sát. Nơi 1 vật thể giao với tia chiếu, giá trị màu tại điểm đó sẽ được ước lượng bằng cách sử dụng vài phương thức. Đơn giản nhất, giá trị màu của vật thể tại điểm giao sẽ trở thành màu của điểm ảnh. Màu có thể được tìm từ texture-map. Một phương thức tinh vi hơn là chỉnh sửa giá trị màu bằng 1 nhân tố chiếu sáng, nhưng ko tính toán mối quan hệ với nguồn sáng mô phỏng. Để giảm các sai sót, 1 số lượng tia trong những hướng hơi khác biệt nhau có thể được trung bình hóa.

Mô phỏng thô các thuộc tính quang học có  thể được triển khai thêm bằng cách :  tính toán đơn giản các tia từ vật thể đến điểm quan sát. Tính toán khác được làm từ góc tới của tia sáng từ nguồn sáng, và từ những tính toán này cũng như mật độ cụ thể của nguồn sáng, giá trị của điểm ảnh được tính toán. Sự mô phỏng khác sử dụng đồ thị chiếu sáng từ 1 giải thuật radiosity, hoặc kết hợp 2 thứ này.

Ray casting chủ yếu được sử dụng cho mô phỏng thời gian thực, như dùng trong game 3D, cái mà sự chi tiết quá cao ko quá quan trọng, hoặc có thể làm giả ( fake ) được 1 số hiệu ứng chi tiết để đạt được hiệu năng cao hơn trong tính toán. Điều này thường là trường hợp khi nhiều khung hình cần được diễn họa. Kết quả là diện mạo bề mặt của model sẽ có 1 cái gì đó “phẳng” khi ko áp dụng thủ thuật nào thêm, như thể vật thể trong scene được sơn trơn 1 màu.

-Ray tracing :

Ray tracing nhắm tới việc mô phỏng đường đi tự nhiên của ánh sáng, hiểu như là các hạt photon. Thường thì, ray tracing được sử dụng để cho kết quả xấp xỉ với “phương trình rendering” bằng cách áp dụng phương thức Monte Carlo. Trong ray-tracing, một số phương thức được dùng nhiều nhất là Path Tracing, Bidirectional Path Tracing, hoặc Metropolis Ligh Transport, ngoài ra còn có các phương thức bán-realistic ( semi realistic ) như Whitted Style Ray Tracing, hoặc kết hợp. Trong khi hầu hết các cách thức cho phép ánh sáng truyền trên 1 đường thẳng, có những ứng dụng cho phép mô phỏng hiệu ứng “không-thời gian” tương đối tính, ánh sáng bị bẻ cong (relativistic spacetime effects , liên quan tới Thuyết tương đối, vì thế đừng đụng vô kẻo chết =D )

Cuối cùng, với việc render chất lượng cao của quá trình ray trace, nhiều tia được phát ra tổng quát hóa cho mỗi điểm ảnh, và được dò ko chỉ đến vật thể đầu tiên bị giao cắt, mà hơn thế nữa, qua nhiều bước nảy bật liên tiếp, sử dụng các quy luật quang học như “góc tới bằng góc phản xạ” và các quy luật cao cấp hơn để tính toán khúc xạ ánh sáng và bề mặt thô ráp.

Một khi tia chiếu gặp phải 1 nguồn sáng, hoặc hầu như mỗi khi 1 số giới hạn các bước nảy bật đã được đánh giá, thì sự chiếu sáng bề mặt tại điểm cuối cùng đó sẽ được tính toán sử dụng các kĩ thuật nói trên, và sự thay đổi qua các bước nảy bật khác nhau sẽ được đánh giá để ước lượng giá trị quan sát được tại điểm quan sát. Điều này lặp lại cho mỗi sample, cho từng điểm ảnh.

Trong ray tracing phân tán ( distribution ray tracing ), tại mỗi điểm giao cắt, nhiều tia có thể được sinh ra. Tuy nhiên, trong path tracing, chỉ 1 tia hoặc ko tia nào được phát ra tại mỗi sự giao cắt cả, sử dụng thống kê tự nhiên của những thí nghiệm Monte Carlo.

Là 1 phương thức brute-force, ray tracing rất chậm để thực hiện trong realtime, và cho đến cách đây ko lâu thì nó thậm chí cũng quá chậm để sử dụng để làm các phim 3D ngắn với bất kì mức độ chất lượng nào, mặc dù nó được sử dụng cho 1 số lĩnh vực ứng dụng cần có hiệu ứng hình ảnh đặc biệt, và trong quảng cáo, lĩnh vực yêu cầu chất lượng hình ảnh phải cao ( có lẽ ngang ngửa với photorealistic )

Tuy nhiên, với những nỗ lực trong việc tối ưu để giảm số lượng tính toán cần thiết đã khiến cho việc sử dụng ray tracing khả thi hơn. Hiện nay có 1 số thiết bị phần cứng hỗ trợ ray tracing, ít nhất cũng là đang thử nghiệm, và đã có 1 số demo game phô diễn tính năng ray trace dựa trên nền tảng phần cứng hoặc phần mềm.

-Radiosity :

Radiosity là 1 phương thức mô phỏng cách các bề mặt được chiếu sáng trực tiếp đóng vai trò như là nguồn sáng gián tiếp để chiếu sáng cho các bề mặt khác. Nó tạo ra hiệu quả shading chân thực hơn và dường như là tốt hơn để thể hiện các môi trường nội cảnh. Ví dụ như các vùng tối ở các góc của 1 căn phòng.

Nền tảng quang học của việc mô phỏng này là 1 số ánh sáng khuếch tán từ 1 điểm bất kỳ trên 1 bề mặt sẽ bị phản xạ trong 1 phạm vi lớn các hướng và chiếu sáng vùng xung quanh nó.

Kĩ thuật mô phỏng có thể khác biệt phức tạp. Nhiều hoạt động render có 1 sự ước chừng rất thô về radiosity, đơn giản là chiếu sáng thật nhẹ toàn bộ scene với 1 nhân tố được gọi là “ambiance” ( cái này hay được gọi là “fake trick” ). Tuy nhiên, khi sự ước chừng radiosity cao cấp được gắn với 1 giải thuật ray tracing chất lượng cao, hình ảnh tạo ra có thể rất thuyết phục, đặc biệt cho những scene nội cảnh.

Trong mô phỏng radiosity cấp cao, đệ quy, những giải thuật “finite-element” nảy bật ánh sáng qua lại giữa các bề mặt trong model, cho tới khi giới hạn đệ quy được chạm phải. Việc tô màu 1 bề mặt trong cách này ảnh hưởng tới màu sắc của bề mặt kế cận, và ngược lại. Kết quả của việc chiếu sáng qua các model ( đôi khi bao gồm không gian trống rỗng ) được chứa và sử dụng như là dữ liệu đầu vào thêm vào khi thực hiện các tính toán trong mô hình Ray casting hoặc Ray tracing.

Do bản chất lặp lại / đệ quy của kĩ thuật này, với các vật thể phức tạp sẽ đặc biệt chậm khi mô phỏng. Trước sự chuẩn hóa việc tính toán nhanh radiosity, 1 số nghệ sĩ đã dùng 1 kĩ thuật gần giống như giả-radiosity bằng cách làm tối những vùng texture tương ứng với các góc, khớp, và các chỗ kín, và sau đó áp dụng chúng qua kĩ thuật self-illumination hoặc diffuse mapping để render scanline. Thậm chí bây giờ, việc tính toán radiosity cao cấp có thể được giữ lại để tính toán ambiance của căn phòng, từ ánh sáng phản xạ khỏi các bức tường, sàn, và trần nhà, ko cần kiểm tra sự ảnh hưởng của những vật thể phức tạp đến radiosity – hoặc những vật thể phức tạp có thể được thay thế bằng những vật thể đơn giản hơn với kích thước và texture tương tự.

Tính toán radiosity thì độc lập với điểm quan sát ( không phụ thuộc vào góc nhìn của camera ) và làm tăng sự tính toán liên quan, nhưng làm chúng có ích cho tất cả mọi điểm quan sát ( camera đặt góc nào cũng được, không phải tính toán lại khi đổi góc camera  ). Nếu có ít sự tái sắp xếp của các vật thể radiosity trong scene, dữ liệu radiosity tương tự có thể được tái sử dụng cho 1 vài khung hình, làm cho radiosity trở nên hiệu quả cho các bề mặt ray casting phẳng, mà ko ảnh hưởng nghiêm trọng đến thời gian render mỗi frame.

Vì thế, radiosity là 1 thành phần quan trọng trong các phương thức render realtime, và được sử dụng từ đầu chí cuối để tạo ra 1 số lượng lớn film cũng như game 3D nổi tiếng.

3-Lý thuyết nòng cốt :

Việc triển khai các trình render luôn có các thành tố cơ bản của việc mô phỏng vật lý hoặc giả lập – 1 số tính toán bắt chước và mô phỏng lại các hiện tượng vật lý ngoài đời thực.

Thuật ngữ “physically based” có nghĩa là việc render có sử dụng các mô hình và các phép tính xấp xỉ để tính toán các hiện tượng vật lý quang học khi render. Một tập hợp các kĩ thuật đặc biệt đã dần được thiết lập trong cộng đồng render.

Các khái niệm cơ bản thì tương đối dễ hiểu, nhưng mà khó tính toán. Để đáp ứng yêu cầu về sự mạnh mẽ, chính xác, và thực tế, việc triển khai và xây dựng các trình render sẽ là sự kết hợp phức tạp giữa các kĩ thuật khác nhau.

Nghiên cứu render được đề cập đến về cả 2 mặt, đó là thích nghi với các mô hình khoa học và tính ứng dụng thực tiễn của nó.

-Rendering equation ( Đẳng thức render ) :

Là khái niệm lý thuyết chủ chốt trong render. Nó đóng vai trò như 1 đẳng thức chính thức, trừu tượng nhất, của khía cạnh ko thể nhận thức được của việc render. Tất cả các giải thuật render hoàn chỉnh đều có thể được xem như là các giải pháp đáp ứng cho công thức đặc biệt của đẳng thức này.

Ý nghĩa : tại 1 vị trí và hướng cụ thể, tia sáng đi ra (Lo) là tổng của tia sáng phát ra (Le) và tia sáng phản chiếu. Tia sáng phản chiếu là tổng của tia sáng tới (Li) từ tất cả mọi hướng, được nhân bởi sự phản xạ bề mặt và góc tới. Bằng cách kết nối tia đi ra đến tia tới, qua 1 điểm tương tác, đẳng thức này đại diện cho toàn bộ quá trình “chuyển vận ánh sáng” – tất cả sự di chuyển của ánh sáng – trong 1 cảnh.

-Bidirectional Reflectance Distribution Function – BRDF ( Hàm phân tán phản xạ 2 chiều ) :

BRDF biểu diễn 1 mô hình đơn giản của sự tương tác ánh sáng với 1 bề mặt như sau :

Sự tương tác ánh sáng thường được xấp xỉ hóa bằng các mô hình đơn giản hơn : diffuse reflection và specular reflection, mặc dù cả 2 đều có thể là BRDF.

-Geometric optics ( quang hình học ) :

Việc render thực tế được đề cập riêng với khía cạnh hạt của vật lý ánh sáng – được biết như là geometric optics . Xem ánh sáng ở mức độ cơ bản của nó, như là các hạt nảy bật. Còn khía cạnh sóng của ánh sáng thì ko đáng kể trong hầu hết các cảnh, và cũng khó mô phỏng hơn nhiều. Các hiện tượng sử dụng khía cạnh sóng của ánh sáng bao gồm tán sắc và phân cực. Cả 2 hiệu ứng này, nếu cần, sẽ được thực hiện bằng các tùy chỉnh “appearance-oriented” của của mô hình phản xạ.

-Visual perception ( cảm thụ thị giác ) :

Dù ít được chú ý, nhưng những hiểu biết về cơ chế cảm thụ thị giác của con người rất có giá trị khi để render. Bởi vì các thiết bị hiển thị hình ảnh và cơ chế cảm nhận hình ảnh của con người có những khoảng giới hạn. Một trình render có thể mô phỏng được 1 dải độ sáng và màu sắc gần như vô hạn, nhưng các thiết bị hiển thị -màn hình các loại – ko thể làm được vậy, và 1 số thứ phải bị loại bỏ hoặc nén lại. Cơ chế cảm nhận hình ảnh của mắt người cũng có giới hạn. Vì thế ko cần thiết phải render với 1 dải màu và độ sáng lớn như vậy, từ đó làm đơn giản hóa bớt việc render, và giảm gánh nặng render.

Hết phần 1

© 2011 – duyyudus – VIZVA

Tổng hợp.

Leave a Reply

Your email address will not be published. Required fields are marked *

Tags

Archives

  • 2016 (4)
  • 2015 (22)
  • 2014 (39)
  • 2013 (59)
  • 2012 (134)
  • 2011 (240)