Đây là một hướng dẫn gồm 4 phần về Corona Renderer tôi viết vào năm 2018 ở tài khoản facebook cũ, vốn dành cho phiên bản Corona 3. Tới nay, mọi thứ đã thay đổi rất nhiều, cả phần cứng lẫn phần mềm. Intel i5 thời nay đã mạnh hơn cả i9 XE tối thượng ngày đó. RAM 64-128GB đã trở thành điều bình thường mới. Corona đã ra đến phiên bản 10, và sắp có bản 11 trong cuối năm 2023 này. Tôi cũng bắt đầu hơi mất ngủ và có tóc bạc.
Tuy nhiên, sau khi đọc lại, tôi thấy rằng rằng những thông tin mà tôi trình bày vẫn còn giá trị để ứng dụng trong công việc thực tế. Vì thế tôi đã biên soạn ngắn gọn và đăng lại những nội dung hữu ích nhất, mong giúp ích được cho các anh chị em đồng nghiệp.
Trong phần đầu tiên, chúng ta sẽ nói về vật liệu. Triệu chứng điển hình của nosie do vật liệu, đó là khi ảnh chỉ bị noise nhiều ở một vùng cụ thể nào đó.
Cách dễ nhất để kiểm tra là render không vật liệu sử dụng Override Material: nếu chỗ noise đó biến mất thì chắc chắn lỗi ở phần vật liệu, còn nếu noise vẫn còn thì lỗi ở phần ánh sáng hoặc setting, mà tôi sẽ đề cập ở các bài sau. Khi hiệu chỉnh vật liệu, hãy nhớ những quy tắc sau.
MỤC LỤC
Không để cường độ Albedo quá cao
Trong Corona, Albedo có thể hiểu là độ “sáng” của một vật liệu. Nó là tổng hòa của các thành phần trong một vật liệu như diffuse (màu sắc), reflective (phản xạ), refractive (khúc xạ) và translucent (độ trong). Ví dụ, sơn trắng thì “sáng” hơn sơn xám. Sơn xám bóng thì “sáng” hơn sơn xám mờ. Inox thì “sáng” hơn gỗ, vân vân. Lưu ý, thông số emission trong self-illumination dùng cho vật liệu phát sáng không dùng để tính cường độ Albedo.
Chúng ta có thể kiểm tra nhanh Albedo bằng cách thêm kênh CShading_Albedo trong Render Setup > Render Element. Khi render, chọn kênh CShading_Albedo để quan sát, những mảng càng trắng là Albedo càng cao. Những mảng được tô màu đỏ là mảng Albedo để quá cao, điều này sẽ làm chậm quá trình render. Càng nhiều mảng đỏ thì render càng lâu và ngược lại.
Vậy Albedo như thế nào thì hợp lý? Theo nhà hãng, Albedo của một vật liệu nên có trị số khoảng 70%, tương đương 0.7 / 1 hoặc RGB180 theo màu sắc.
Mỗi thành phần có cường độ được tính theo công thức:
level (0-1) * color (0-255)
Nếu level (tính từ 0 đến 1) là x, màu sắc (tính từ 0 đến 255) là y, ta sẽ có:
(x/1) * (y/255) < 0.7
Ví dụ, với một vật liệu màu trắng, trong phần diffuse, để có Albedo = 0.7, chúng ta có thể:
- Để màu diffuse là trắng hoàn toàn và để diffuse level là 0.7 / 1.
- Để màu diffuse là màu 180 / 255 (~ 0.7 / 1) và để diffuse level là 1.
Những vật liệu có trị số Albedo quá cao, đặc biệt là vật liệu có Albedo tuyệt đối (ví dụ như một vật liệu trắng hoàn toàn) sẽ cho ra kết quả không tốt (ảnh bị cháy sáng, mất chi tiết) và đặc biệt là khi quá trình render trở nên chậm hơn.
Lưu ý rằng để Albedo thấp đồng nghĩa với việc khung cảnh render sẽ bị tối đi, chúng ta sẽ phải điều chỉnh bằng cường độ của đèn hoặc tăng thông số Exposure. Nhưng cách làm này sẽ nhanh và cho kết quả tốt hơn việc sửa chữa một khung cảnh cháy sáng vì vật liệu.
Cẩn thận khi sử dụng Refraction & Caustics
Khi nhìn ở phần Refraction trong bảng setting vật liệu, chúng ta sẽ thấy phần option có tùy chọn Thin (no refraction). Vật liệu dạng kính trong Corona sẽ được phân ra làm 2 loại dựa vào tùy chọn Thin (no refraction) này có được tích hay không.
Nếu tích vào Thin (no refraction), ta sẽ có vật liệu kính mỏng dành cho các vật thể như kính cửa sổ, vỏ bóng đèn, bong bóng xà phòng, …, cũng như các loại vật thể mỏng tương tư khác. Loại kính này sẽ không có hiệu ứng khúc xạ, đồng nghĩa với việc không thể sử dụng thêm tùy chọn Caustics (hiệu ứng tụ quang). Chúng ta sẽ thấy vật thể giống như hoàn toàn trong suốt và chỉ có thêm bóng phản xạ. Mặc dù không đúng với thực tế, nhưng loại kính này render nhanh hơn nhiều và được khuyên dùng cho hầu hết vật liệu dạng trong suốt trong bài render.
Nếu không tích vào Thin (no refraction), ta sẽ có kính dành cho các vật thể như chai lọ, nội thất kính, vật thể kính có màu, chất lỏng…, cũng như các loại vật thể có khối tích và độ dày đáng kể khác. Loại kính này sẽ đầy đủ các hiệu ứng vật lý của kính thông thường, đặc biệt khi tích vào tùy chọn Caustics sẽ cho có thêm hiệu ứng tụ quang rất giống với thực tế. Nhược điểm của nó là render rất lâu, đặc biệt là với Caustics, nó có thể khiến bài render của chúng ta tăng thời gian kết xuất lên gấp 2-3 lần. Tốt nhất là nên tránh sử dụng nó trừ trong các trường hợp đặc biệt, render cận cảnh, render bể bơi, hồ cá.
Sử dụng tiết chế các vật liệu phản xạ dạng gương
Như chúng ta đã biết, khung cảnh càng “sáng” do vật liệu thì tốc độ khử noise càng lâu, việc sử dụng nhiều vật liệu phản xạ dạng gương sẽ khiến máy móc phải tính toán thêm một khối lượng đáng kể, từ đó làm giảm hiệu suất render.
Khi làm các vật liệu có tính phản xạ cao như kim loại hay gương, chúng ta sử dụng chủ yếu là kênh phản xạ, do vậy hãy cho kênh diffuse về 0 bằng cách cho Level xuống 0 hoặc cho màu về đen tuyệt đối (RGB0).
Sử dụng các loại vật liệu phát sáng đúng cách
Đây là một lỗi rất hay gặp khi sử dụng Corona, khi người dùng không phân biệt được hai loại vật liệu phát sáng là Corona Light và Self Illumination, cũng khi nào cần sử dụng chúng, trong khi đây là một trong những nguyên nhân gây noise đom đóm (fireflies noise) – loại noise ung tính không biến mất sau hàng nghìn pass render.
Vật liệu phát sáng Corona Light Material bản chất là một nguồn sáng giống hệt Corona Light, được sử dụng để làm nguồn sáng chiếu sáng khung cảnh. Vật liệu tự phát sáng Self Illumination bản chất là một tùy chọn trong vật liệu Corona thông thường, được sử dụng cho những vật thể phát sáng trong tối nhưng không chiếu sáng khung cảnh, điều này rất quan trọng và cần lưu ý.
Việc nhầm lẫn giữa hai loại vật liệu phát sáng này sẽ tạo ra rất nhiều noise, bởi vì bản chất của hai loại nguồn sáng này là hoàn toàn khác nhau và cũng được tính toán khác nhau. Corona Light sử dụng để chiếu sáng khung cảnh, còn Self Illumination dùng để phát sáng chính nó. Bạn có thể thấy hiệu suất rays/s tụt giảm đáng kể ngay khi sử dụng nhầm lẫn hai loại vật liệu này.
Tuy nhiên có 1 trường hợp cũng nên sử dụng Self Illumination để chiếu sáng khung cảnh, đó là khi chiếu sáng cực nhẹ (dim light) trên một diện tích cực rộng (ví dụ như một quả khinh khí cầu lớn giữa quảng trường). Trường hợp này sử dụng vật liệu phát sáng Corona Light sẽ khiến thời gian render tăng lên rất nhiều. Nếu bạn chỉ muốn có một đốm sáng nhỏ nhưng không chiếu sáng khung cảnh, hãy dùng CoronaLightMtl và tắt Emit Light. Nó sẽ tạo ra 1 vùng sáng tuy không giống với thực tế nhưng sẽ render nhanh hơn nhiều so với Self Illumination. Tôi hay sử dụng tính năng này với những vật thể rất nhỏ ví dụ như dây tóc bóng đèn hoặc ngọn nến.
Sử dụng Corona Bitmap thay cho 3ds Max Bitmap
Corona hỗ trợ cả hai dạng map là Corona Bitmap và Bitmap mặc định của 3ds Max. Cả hai map này đều cho kết quả tương đồng nhau, tuy nhiên có một vài lợi ích khi sử dụng Corona Bitmap. Bên cạnh việc cung cấp nhiều chế độ filter hơn và cung cấp nhiều thông tin hơn trong bản settings, trong hầu hết các trường hợp, dùng Corona Bitmap sẽ tăng tốc độ render lên một chút. Ngoài ra, dùng Corona Bitmap cho các slot Bump và Displacement sẽ cải thiện chất lượng render.
Việc chuyển Bitmap sang Corona Bitmap có thể thực hiện bằng Corona Converter (click chuột phải vào Viewport, chọn Corona Converted, chọn Bitmap > Corona Bitmap). Đáng tiếc là việc này không được làm tự động khi kéo thả Bitmap vào trong Slate Material Editor, vì thế theo tôi bạn nên để dành việc convert này ở cuối cùng.
Trên đây là toàn bộ nội dung của phần 1 về hiệu chỉnh vật liệu. Với những khung cảnh đơn giản như ở phía trên, khi kịch bản sáng không quá phức tạp, chỉ riêng với tối ưu vật liệu cũng đã tăng tốc độ render lên rất nhiều. Chúc các bạn thành công và hẹn gặp lại ở các phần tiếp theo.