“Linear workflow theo cách hiểu đơn giản, đó là quy trình xử lý và hiệu chỉnh ánh sáng, màu sắc, texture bên trong các ứng dụng 3D và ứng dụng compositing”.
Linear Workflow và Gamma. hay Color Management là hai chủ đề khó giải thích và dễ nhầm lẫn nhất trong đồ họa máy tính, không ai có thể hiểu rõ được hết chúng kể cả những người chuyên nghiệp trong lĩnh vực này, thực tế thì mỗi người có một cách áp dụng LWF khác nhau trong quá trình làm việc của mình.
Tuy nhiên, tất cả đều đồng tình một quan điểm là làm việc theo Linear là quy trình làm việc chính xác nhất về mặt toán học để đạt được hầu hết các kết quả mong muốn, nó rất cần thiết trong quá trình rendering ảnh hiện thực, và đặc biệt quan trọng trong hiệu chỉnh compositing và hiệu chỉnh màu sắc.
Một khi có được một hệ thống hoạt động hiệu quả, khi đó bạn có thể có toàn quyền kiểm soát chất lượng của dự án mà mình đang làm việc, trước và sau khi render, thêm vào các thuộc tính vật lý chính xác, gần với môi trường của thế giới thực.
Nếu bạn đồng ý với tôi rằng 1+1=2 chứ không phải 3 hay 15 — thì bài viết này sẽ rất có giá trị đối với bạn cũng như cho công việc của bạn.
Có rất nhiều điều có thể bàn đến xung quanh chủ đề này, tuy nhiên tôi sẽ không trình bày quá nhiều ở đây. Tôi chỉ muốn giúp bạn hiểu được mục đích của nó là gì, những lợi ích mà nó mang đến cho dự án của bạn là gì, và cách thiết nó ra sao trong 3ds max và vray.
Chúng ta cùng bắt đầu nào.
Chụp ảnh kỹ thuật số (Digital Photography)
Tôi luôn tìm cách quay trở lại các ví dụ trong thế giới thực để tìm hiểu xem điều gì đang xảy ra khi ứng dụng vào phần mềm 3D, và cách này luôn có tác dụng!
Hãy nghĩ về thuật nhiếp ảnh một chút, các máy ảnh hiện nay “SLR” đều có khả năng quay phim và chụp ảnh dưới định dạng RAW (một số loại camera khá rẻ tiền có thể quay phim dưới định dạng RAW tương đối tốt) . Tại sao lại cần định dạng RAW này? Dĩ nhiên là vì chúng có thể được làm hậu kỳ dễ dàng sau đó, các điều chỉnh về độ phơi sáng hay độ cân bằng trắng WB chẳng hạn…
Vậy nên các nhiếp ảnh gia sẽ không còn lo lắng về việc mất dữ liệu và toàn tâm cho các shot chụp, chỉ cần camera của họ được thiết lập ở chế độ RAW là được, tuy nhiên cũng có một số thiết lập khác tùy thuộc vào khung cảnh đang chụp là ngoài trời hay trong nhà, vì đôi khi kể cả với ảnh RAW cũng cần chụp một vài bức mới có đủ vùng thông tin cần thiết để làm hậu kỳ sau đó.
Một file ảnh RAW từ máy ảnh loại DSLR có 12-bit dữ liệu và có thể mở rộng lên đến 16-bit, còn các phần mềm 3D kỹ thuật số có thể tạo ra các file RAW lên đến 32-bit, đây là ước ao của rất nhiều các nhiếp ảnh gia, hy vọng một ngày nào đó sẽ thành hiện thực!
Lợi ích rất lớn của ảnh RAW là bạn có thể phục hồi lại các chi tiết ở những vùng bị vỡ hạt tương tự như sau:
Ngoài cách này ra, không còn cách nào khác có thể phục hồi lại những chi tiết này, dĩ nhiên là ảnh RAW (12bit) luôn chứa nhiều vùng thông tin hơn so với ảnh JPG (8bit).
Có một số điểm kỳ diệu xảy ra trong các ứng dụng 3D là bạn có thể chụp bức hình trong 3ds max sử dụng V-ray, sau đó đưa dữ liệu ảnh kết quả RAW (trong trường hợp này là các files dạng EXR) đến phần mềm compositing hay dùng và thêm vào một số điều chỉnh huyền ảo ở đây (xử lý hậu kỳ và pha trộn màu sắc chẳng hạn…)
Dĩ nhiên là tất cả được thực hiện dưới một quy trình chuẩn xác từ 3ds max, vray đến nuke – bạn sẽ tìm hiểu về quy trình này trong phần sau, tuy nhiên hãy suy nghĩ về việc thay đổi từ chế độ Auto sang Manual trên các máy DSLR, nó giúp bạn có nhiều lựa chọn và nhiều quyền kiểm soát hơn đến chất lượng bức hình theo cách mà bạn mong muốn.
Vậy Linear Workflow là gì?
Linear workflow theo cách hiểu đơn giản, đó là quy trình xử lý và hiệu chỉnh ánh sáng, màu sắc, texture bên trong các ứng dụng 3D và ứng dụng compositing.
Dưới đây là một quy trình đầy đủ từ đầu đến cuối :
Bước.1 Tải và biên tập các files dữ liệu.
Bước.2 Xử lý các textures bên trong một nền tảng tuyến tính (linear platform) (quá trình rendering)
Bước.3 Xử lý hậu kỳ (Multi-pass compositing )
Bạn nghe có vẻ khá rối rắm phải không !? hãy tiếp tục nào…
Tại sao cần phải tìm hiểu về Linear workflow ?
Trước hết, tôi muốn bạn biết một sự thật là: chúng ta không thể nào né tránh khỏi điều này, đó là lý do tại sao tôi soạn bài viết này, đây là đóng góp đầu tiên của tôi tại cgalter, và nó thực sự rất quan trọng và cần thiết trong quá trình hiệu chỉnh 3D.
Chủ đề này làm thay đổi mọi thứ chúng ta từng biết về các ứng dụng 3D, đặc biệt khi bạn là một người hay tưởng tượng bằng 3D và thực sự quan tâm đến việc đạt được các giá trị màu trung thực trong khung cảnh của mình.
Có lẽ lý do chủ yếu tại sao chúng ta nên bắt đầu tìm hiểu về quy trình Linear workflow đó là hiệu quả về mặt màu sắc mà chúng ta áp dụng lên các file textures jpeg khi làm việc với các ứng dụng 3D và sau đó là trong các phần mềm Compositing.
Mặc dù các ứng dụng 3D, hoặc 2D (như Photoshop chẳng hạn, bạn cũng có thể chuyển nó sang chế độ tuyến tính Linear nếu muốn) làm việc trong một không gian tuyến với ” Gamma = 1 ”, tuy nhiên các ảnh 8bit, jpeg. hoặc video mà chúng ta nhập vào các ứng dụng này lại được encoded với gamma là 2.2 (hoặc được gán định như vậy), có nghĩa là các ứng dụng 3D sẽ sử dụng bức hình với giá trị gamma là 2.2 và lúc này, các vấn đề sẽ bắt đầu phát sinh.
Những vấn đề đó cơ bản là gì ?
Một bậc thầy về 3d rất nổi tiếng là Zap Andersson (MasterZap) đã nói trong một bài viết mà tôi đã diễn giải lại theo cách hiểu của mình như sau:
“Nếu bạn render trên một màn hình máy tính “tiêu chuẩn” (ví dụ như một màn hình sRGB có độ gamma thực tế trung bình khoảng 2.2) và hoàn toàn không quan tâm đến độ gamma trong quá trình làm việc của mình (ví dụ bạn giả định như màn hình có gamma=1, giống như thiết lập mặc định của hầu hết các phần mềm), và rồi nếu bạn nghĩ là mình đang làm mọi thứ sáng lên gấp 2 lần thì thực tế bạn lại đang làm nó sáng lên gần như 5 lần.” —M. Zap
Đồng nghĩa với việc tất cả các cách áp dụng ánh sáng cũ của chúng ta từ trước giờ hoàn toàn sai lầm và giả tạo, các phần mềm 3D đã cố sửa những lỗi này nhưng chưa hiệu quả.
Và bạn biết gì không, việc sử dụng các thủ thuật đó cho ra một kết quả kém chân thật, đồng thời khiến thời gian render tăng lên gấp 10 lần, vì các thuật toán cần rất nhiều thời gian để xử lý, hiệu chỉnh và sửa lỗi, nhưng một lần nữa, kết quả vẫn không được cải thiện là mấy.
Khi thêm vào một ánh sáng vray light với cường độ sáng intensity là 10, và không quan tâm đến giá trị gamma, thì về bản chất chúng ta đang làm việc với một giá trị không hẳn là 10, và sau đó khi muốn thay đổi nó thành 20, kết quả sẽ không chính xác như mong muốn, cho ra các vùng không trung hòa và bị vỡ hạt!
Vì vậy, hãy luôn ghi nhớ 2 điều khi làm việc với 3ds max là:
1. | Color management (Gamma)
Mỗi khi load ảnh, video hay texture ( png, jpeg…) với giá trị gamma=2.2 ( để hiển thị trên màn hình máy tính), hãy chắc chắn rằng bạn đã de-gamma (giảm độ sáng) các files này và thông báo cho 3ds max biết rằng “Này, những file này có gamma =2.2 đấy nhé!) và dĩ nhiên việc này có thể được thực hiện 1 lần duy nhất.
2. | Color Mapping (Vray)
“Color mapping có nhiệm vụ re-mapping lại các giá trị của bức hình để phù hợp với mục đích hiển thị.”- v-ray help.
Điều này rất quan trọng, bạn có thể thiết lập mọi thứ về mặc định trong color mapping, và gần như xong, vì lúc này chỉ cần giảm cường độ tại các vùng quá sáng đi một ít. Tiếp theo là phần tone mapping để quyết định xem thông tin nào là không cần thiết, tuy nhiên điều này sẽ được giải thích sau trong video hướng dẫn setup linear.
Tôi biết là bạn đang thắc mắc về các lỗi hay xuất hiện là gì, và bên dưới là một vài trong số chúng.
a. | Những vùng highlights bị vỡ hạt (Blown-out highlights, xuất hiện khi rendering và compositing )
b. | Những vùng quá tối ( Very Dark Scenes)
c. | Sự mờ chuyển động không chân thật (Unrealistic Motion Blur)
Floating Point “Linear” là gì ?
Làm việc trong Floating Point cho chúng ta khả năng lưu trữ một vùng rộng các giá trị, đồng nghĩa với việc chúng ta có thể thực hiện được nhiều thao tác hơn một cách chính xác khi hiệu chỉnh màu sắc trong quá trình làm việc với các phần mềm 3D (3ds max, maya, cinema4d, blender) và với các bộ xử lý compositing (After effects, Nuke, Fusion…)
Như bạn có thể nhìn thấy trong 2 ví dụ ở trên, “gradient Linear” có chứa nhiều giá trị hơn, vùng giá trị gần như không bị hao hụt, đồng nghĩa có tính linh hoạt cao hơn khi xử lý hậu kỳ, trong khi với bức hình “gradient Non Linear ”, phần màu đen nhảy quá nhanh sang vùng trắng, cho chúng ta một vùng thông tin rất nhỏ khi làm việc hậu kỳ, và đây là sự khác biệt khi làm việc với bức hình linear và non linear.
Khi lần đầu tiên nhìn thấy gradient, tôi hoàn toàn không có bất kỳ khái niệm nào về nó. Và vì nó khá quan trọng nên tôi đã chuẩn bị ví dụ này dành cho bạn !
Hãy quan sát ví dụ bên dưới để hiểu rõ hơn về khái niệm này.
Trong bức hình số 3 bên trên, bạn có thể thấy là chỉ sau một lần hiệu chỉnh mà bức hình đã gần như bị phá hủy toàn bộ, các chi tiết gần như bị biến mất…Trong khi đó ở bức hình số 2, kết quả cho ra khá tốt. Hoặc nếu chính xác hơn, chúng ta sẽ vẫn có thể thấy được các điểm highlights tuyệt đẹp từ nền trời và các dãy núi. (Chúng ta có thể thiết lập lại độ phơi sáng giống như ở bức hình gốc ban đầu).
Làm việc với Floating point có thực sự quan trọng ?
Với tôi thì nó thực sự rất quan trọng. Tuy nhiên, còn tùy thuộc vào mục đích của bạn là gì, nếu bạn chỉ muốn một kết quả nhanh chóng và không quan tâm đến phần hậu kỳ sau đó, vậy chỉ cần xuất ra định dạng jpgs là đủ. Nhưng nếu bạn đang làm việc với phương pháp linear khi rendering, hãy chú ý rằng – xử lý hậu kỳ cần được hoàn thiện khi còn ở vùng frame buffer ( Full float), sau đó xuất sang định dạng 8 bits.
Nếu muốn kiểm soát toàn bộ bản render sau khi xử lý tính toán và duy trì các dữ liệu đã được xử lý từ camera (vray) cho các mục đích sử dụng sau đó, hãy xuất file dưới định dạng EXR và chọn “Untouched Lossless Raw” .
Những điểm tôi không thích về Linear Workflow ?
Các files thường lớn. Đây là điều làm tôi khá bực mình vì hầu hết phải làm việc với các file EXR khá lớn. Làm việc ở chế độ full float thậm chí còn ngốn dung lượng lưu trữ rất lớn, có lần việc xử lý đã ngốn gần 60gigabyte dữ liệu float data chỉ để cho một đoạn animation dài 2 phút trong một dự án mà tôi thực hiện. Vì vậy hãy kiểm tra lại dung lượng ổ cứng cần thiết của bạn.
Cấu hình máy lớn. Làm việc với Floating point cần một máy tính mạnh mẽ, đặc biệt là khi bạn có nhiều kênh liên tục, một máy tính cấu hình mạnh là rất cần thiết. Tuy nhiên, điều đó không có nghĩa là bạn không thể tận dụng những gì đang có, tuy nhiên nó có thể sẽ không cho bạn được các phản hồi thời gian thực nếu cấu hình không đủ đáp ứng.
Kết luận.
Để tóm tắt lại, hãy ghi nhớ rằng Compositing chỉ nên được thực hiện trong một không gian tuyến tính động (Full Float Linear Space)
Và sau cùng, hãy luôn tham khảo các ví dụ trong nhiếp ảnh để ứng dụng vào quá trình diễn hoạt 3D của mình.
Hãy dành thời gian hệ thống lại quá trình này theo cách riêng của bạn.
PS : Đây là những thứ đã hoạt động 100% trong trường hợp của tôi, và hi vọng rằng chúng cũng hiệu quả trong trường hợp của bạn.