Wednesday, October 24, 2012

[Thảo luận]VRay Setting - Bản chất khoa học của các thông số



Bài viết này được tổng hợp từ các giải thích, thảo luận của giám đốc trung tâm Vietnam Graphics ( Tiền thân là Banhmy Studio hay @Graphic) cựu sinh viên Industrial Fineart University - Nguyễn Long Hưng 
Facebook: http://www.facebook.com/hung.n.long
Website: http://www.vietnamgraphics.com
Thảo luận trên facebook cộng đồng VietCG ngày 21/10/2012: http://www.facebook.com/groups/vietcg/

Lời tác giả: " có nhiều bạn sử dụng Vray nhiều năm nhưng chưa thực sự hiểu rõ: Subdivides,Hemispheric và Interpolation. Các giá trị Min rate và Max rate cũng vậy ... chúng ta chia sẽ ở khía cạnh khoa học"

Khái niệm subdivisions: sự phân chia, hoặc chia nhỏ dùng ở khắp mọi nơi trong các phần mềm đồ họa. Dùng để tính toán từ mô hình, ánh sáng, render....
- Subdivisions 1=1
- Subdivisions 2=4
- Subdivisions 3=9
-Subdivisions 4=16....
Như vậy muốn biết bao nhiêu mẫu thức được tính toán chỉ cần lấy chiều đơn vị subdivisions nhân với chính nó. VD: đặt subdivides: 600 tại Light cache hoặc QMC: tôi biết chắc chắn nó sẽ tính 360000 mẫu thức.


Subdivisions


Thuật ngữ interpolations: Nội suy được hiểu trong mỗi một hoàn cảnh khác nhau, ở đây tôi chỉ nói cụ thể vào Interpolation sample của Lightcache và Irradiance. 

Nếu chỉ có subdivisions thôi thì bức ảnh kết quả trông sẽ rất thô, vì nó sẽ không bao giờ được tính toán tất cả các ảnh điểm. Giá trị nội suy sẽ là: nếu bằng 1 thì không có chuyện gì xảy ra, nếu bằng 2 thì trong vòng bán kính 2 mẫu thức sẽ được nội suy qua nhau, nếu bằng 5 thì trong bán kính 5 mẫu thức sẽ được nội suy chia đều kết quả (giá trị mặc định của Irradiance thường bằng 20 và giá trị ngầm định của Lightcache thường là 10. Như vậy nếu lượng subdivisions không đủ, thì việc tăng interpolation samples chỉ làm ảnh mờ thêm mà thôi.

Over and Under Sampling


Kết luận cho phần này: Giá trị Subdivision tác động trực tiếp đến thời gian render và kết quả hình ảnh, Interpolation là động tác hoàn thiện cuối của hình ảnh (kiểu bả matit và sơn hoàn thiện:D. Interpolation sample không ảnh hưởng nhiều đến thời gian render, khi giá trị Subdivision đặt càng cao, giá trị Interpolation đặt thấp xuống thì ảnh càng sắc nét.

Nếu chỉ có Subdivisions thì sẽ không thể tối ưu được thời gian render. VD: trong cảnh có cả những đối tượng phức tạp, nhiều chi tiết kiểu ghế mây nhưng cũng có đối tượng đơn giản kiểu bức tường. Nếu chỉ sử dụng có mỗi Subdivides thì khi đủ Subdivides để tính toán chi tiết cho cái ghế mây thì sẽ thừa cho bức tường. Chính vì vậy mới sinh ra thuật ngữ: Min rate và Max rate trong Irradiance

Giải thích kiểu nôm na thì: giá trị Min dùng để tính toán những thứ ít chi tiết trong cảnh nên không cần đặt cao, giá trị Max dùng để tính toán những đối tượng phức tạp trong cảnh nên đặt cao hơn.

Nếu không có Min rate và Max rate thì Vray sẽ không khác gì các render engine như Mentalray, Brazil hay Finalrender... Và có thể bỏ luôn mục Irradiance đi cho rồi, quay trở về QMC và tính toán lượng tử ánh sáng bằng Photon.

Thành công lớn lao nhất của Vray chính là tính toán bức xạ quang học bằng Irradiance map. Thứ nhất: tính toán chỉ xảy ra trong trường của Camera nên sẽ tiết kiệm được thời gian tính toán. Thứ 2: nếu không có phân chia thành Min rate và Max rate thì thay vị trí đó sẽ là một ô Subdivision cho toàn ảnh hoặc chỉ đơn giản là Rate.

Tạm gác Min/Max sang bên, tôi sẽ giải thích tham số ở mục này trước. Nếu giá trị bằng 0 Irradiance sẽ tính toán toàn bộ các ảnh điểm có trong bức ảnh ta có thể gọi mức 0 là tiêu chuẩn.

Nếu chúng ta đặt giá trị lớn hơn 0 Oversampling (tức là vượt mức tiêu chuẩn, rất hiếm khi sảy ra). VD: ta đặt giá trị 1 (Vray sẽ chia mẫu thức tính toán thành 4, có nghĩa là kích thước tính toán sẽ băng 1/4 giá trị 0). Tiếp tục tăng lên 2 sẽ là 1/16. Thời gian render sẽ lâu hơn nhiều nếu tiếp tục tăng giá trị vượt mức (Oversampling) lên cao.

May thay ông trời có mắt nên sinh ra cái mà chúng ta hay dùng: giá trị thấp hơn 0 (gọi là undersamling tức là giá trị dưới mức). Nếu chúng ta đặt -1 thì thay vì tính toán từng mẫu thức, Vray sẽ tính toán một ô lớn bằng 4 lần rồi nội suy kết quả sang nhau. Nếu chúng ta giảm tiếp -2 Vray sẽ tính một ô lớn bằng 16 lần rồi nội suy. Như vậy giá trị dưới mức càng giảm, thời gian render càng nhanh, chất lượng hình ảnh sẽ tệ đi.

Như vậy, chúng ta đã biết nếu muốn tăng cường chất lượng hình ảnh thì dùng giá trị dưới mức và gần với 0 (với đại đa số trường hợp thể hiện thông thường không nên dùng giá trị vượt mức quá 0).

Có một vấn đề phát sinh, VD nếu chỉ có 1 ô Rate (hoặc chúng ta đặt min/max đều bằng nhau) khi chúng ta muốn ảnh đẹp, tăng lên gần với giá trị 0 ta sẽ thấy mặc dù bây giờ Vray chỉ tính toán 1 pass nhưng mà lâu muốn chết và lại không tối ưu. Lý do là vì khi đáp ứng được chất lượng cao của những đối tượng có nhiều chi tiết thì sẽ bị thừa cho những đối tượng có ít chi tiết kiểu bức tường hay tủ gỗ toàn mảng phẳng.

Chính vì lý do đó nên Min rate và Max rate mới ra đời. Min rate: là độ phân giải tính toán bức xạ quan học lần đầu tiên (thấp nhất) và tiếp tục tăng độ phân giải ở các pass sau (tập trung vào những đối tượng có mật độ polygons cao hơn hoặc nhiều chi tiết hơn) rồi cuối cùng là Max rate: Độ phân giải của lần tính toán sau cùng (cao nhất) sau đó mới render ảnh kết quả.

VD: Tôi đặt Min rate = -2 và Max rate = 0. Chúng ta sẽ thấy Vray lần lượt tính toán 3 pass (với điều kiện phải show caculation phase). Đầu tiên là một ô to có độ phân giải bằng 16 lần (-2) lần thứ 2 sẽ là một ô to bằng 4 lần (-1) lần cuối sẽ là Max rate, từng pixel (0). 

HSph Subdivs
 Chính vì tối ưu, nên các lần sau sẽ bỏ qua kết quả đã được tính toán của những đối tượng đã đủ sample ở các pass trước, chỉ tập trung vào những đối tượng chi tiết cao dần lên nên tiết kiệm được nhiều thời gian.

Tại sao đặt seting cao hơn lại xuất hiện noise? Nếu quan sát kỹ thì chúng ta thấy bức ảnh đặt seting cao nhiều chi tiết hơn, có chiều sâu hơn. Với kích thước ảnh 1500px x 1125px thì rõ ràng là seting thừa sức đẹp long lanh. Vấn đề em phải xem thêm tham số bên phần Noise threshold (ngưỡng khử nhiễu) và Adaptibe abount (ngưỡng blur) bên bảng Settings, nếu điều chỉnh hợp lý có khi lại giảm được đáng kể thời gian render khi giảm bớt setting của Irradiance map (Nếu em không làm phim, chỉ render mỗi ảnh thôi thì cũng chả sao)     

Tổng hợp: VietCG Team 
Tác giả: Nguyễn Long Hưng 
Xin cám ơn anh Nguyễn Long Hưng đã tạo điều kiện hoàn thành bài viết này !