Cách tối ưu bộ nhớ khi render các cảnh lớn trong Blender bằng View Layers
Đôi khi những cảnh chúng ta làm việc trong Blender lớn đến mức chúng thậm chí không vừa với bộ nhớ. Trong những trường hợp đó, chúng ta gặp lỗi “out of memory” khi kết xuất trong Blender. Có nhiều cách để giải quyết vấn đề này, nhưng một cách giúp giữ nguyên chất lượng cảnh là view layers.
Các thành phần cần thiết để tách một cảnh là các view layer và collection. Tắt collection cho view layer hiện tại bằng checkbox bên cạnh tên của nó trong outliner. Đảm bảo rằng bạn đã bật transparent background trong render settings của mình và kết hợp từng lớp với nhau bằng alpha over node để có được cảnh hoàn chỉnh.
Hãy xem cách chúng ta có thể sử dụng các view layer để tách các cảnh của chúng ta thành các phần có thể quản lý và kết hợp chúng sau đó.
1. Cách view layers hoạt động trong Blender.
Trước khi bắt đầu thiết lập, chúng ta sẽ cũng xem xét một số khái niệm.
View layers trong Blender 2.8 trở lên trước đây được gọi là render layers trong các phiên bản trước đây.
Nếu chúng ta bắt đầu với một blend file, nó có thể có một hoặc nhiều cảnh. Sau đó, mỗi cảnh có một hoặc nhiều view layers và view layer có thể bao gồm một hoặc nhiều collections.
Để bắt đầu, chúng ta quan tâm đến các view layers và các collections. Hãy bắt đầu với các view layers.
Một cảnh có các collections và đối với mỗi view layer, mỗi collection có một số cài đặt cho Blender biết collection đó sẽ được xử lý như thế nào đối với view layer.
Chúng ta có thể tạo, đổi tên và xóa các view layers. Trong tiêu đề ứng dụng ở ngoài cùng bên phải, bạn có thể thấy menu thả xuống cho các cảnh và các view layers. Ở phía bên phải của trình đơn thả xuống view layer có hai nút. Nút bên trái tạo các view layer và nút bên phải xóa view layer đã chọn.
Bạn cần có ít nhất một view layer để có thể render.
Các View layer có tab riêng trong bảng thuộc tính. Tuy nhiên, bảng điều khiển này chủ yếu chứa các cài đặt cụ thể của công cụ kết xuất. Ngoại trừ view layer ở trên cùng.
Trong phần này, chúng tôi có hai checkbox. Checkbox “use for rendering” sẽ render view layer đã được chọn khi chúng ta nhấn F12 và render. Cài đặt này là cài đặt cục bộ cho mọi view layer. Chúng ta có thể có một số view layers mà chúng ta render và một số view layers chúng ra sẽ không render.
Checkbox thứ hai, được gọi là “Render single layer”, sẽ ghi đè checkbox đầu tiên. Đây là cài đặt toàn bộ ảnh hưởng đến tất cả các view layers. Ví dụ như: chúng ta đã tạo 3 view layers, nhưng nếu không cần một view layer nào đó, chúng tôi có thể bỏ chọn checkbox “Use for rendering” để không lãng phí thời gian render trên view layer này. Sau đó, chúng ta kết xuất hai layers còn lại bằng cách nhấn F12 và sau khi hoàn thành các layers đó, chúng ta có thể thấy rằng layer cuối cùng cuối cùng là cần thiết nhất.
Sau đó, chúng ta có thể nhấn “render single layer”, chuyển đến non-rendered view layer và render riêng lớp đó.
Giải pháp thay thế sẽ là tích vào “use for rendering” cho layer bị thiếu và bỏ chọn cài đặt này trên cả hai view layers được render trước đó.
2. Collections có liên hệ thế nào với view layers?
Tất cả các cài đặt mà chúng ta sử dụng để tách một cảnh thành các collections có thể được truy cập thông qua outliner.
Mỗi collection có một số cài đặt có thể được đặt cho từng view layer.
Một số cài đặt này được ẩn theo mặc định. Để bật chúng, chúng ta cần chuyển đến các tùy chọn bộ lọc và bật tất cả các “restriction toggles”.
Các cài đặt trong outliner, cụ thể cho từng view layer là:
- Exclude Checkbox ở bên trái tên collection
- Biểu tượng con mắt điều khiển viewport display. Đây là những gì chúng ta chuyển đổi giữa “H” với “ALT+H” trong chế độ xem 3D. Một đối tượng ẩn trong chế độ xem 3D như thế này vẫn hiển thị trong render cuối cùng.
- Có hai cài đặt khác được ẩn theo mặc định dành riêng cho view layer. Một là “holdout” được biểu thị bằng một vòng tròn, và cài đặt khác là “indirect only” được biểu thị bằng một mũi tên.
Cài đặt duy nhất có ảnh hưởng đến việc sử dụng bộ nhớ là chuyển đổi loại trừ. Bằng cách vô hiệu hóa một collection từ view layer.
Nếu chúng ta chia kết xuất thành hai view layer và chỉ loại trừ một nửa collection trong một trong số chúng và làm ngược lại trong collection kia để chúng được kết hợp sau đó, rất có thể chúng ta sẽ gặp phải một số vấn đề.
3. Cách tách cảnh bằng view layers với Collections trong Blender
Chúng ta sẽ lấy một cảnh đơn giản hơn nhiều và chia nó ra. Chúng ta sẽ bắt đầu bằng cách chia cảnh chỉ bằng Cycles. Sau đó, chúng ta sẽ chia một cảnh sử dụng một số yếu tố Cycles cùng với một số yếu tố Eevee.
Chúng ta sẽ sử dụng một cảnh đơn giản sẽ dễ dàng phù hợp với bộ nhớ của máy tính, nhưng nó sẽ hiển thị các nguyên tắc và kỹ thuật.
Chúng ta có một vài đối tượng được chia thành các nhóm. Các nhóm này sẽ đại diện cho các đối tượng tiền cảnh và trung cảnh của chúng ta. Nền sẽ là world skybox với màu xám đồng nhất. Chúng ta cũng có một mặt phẳng bên dưới bắt bóng và phản chiếu ánh sáng trở lại các đối tượng.
Tác động của một đối tượng lên đối tượng khác càng lớn thì chúng ta càng muốn chúng trên cùng một view layer.
Hãy bắt đầu bằng cách tổ chức cảnh và tạo một bộ collection cho từng nhóm đối tượng.
Lưu ý: Đối với các cảnh lớn hơn, chúng ta có thể đã có một số loại tổ chức với các collections dựa trên các loại đối tượng thay vì vị trí. Đây không phải là vấn đề, vì một đối tượng có thể là thành viên của nhiều collections. Chúng ta có thể tạo một collection mới và trong đó, chúng ta tạo các collection bổ sung để đại diện cho từng nhóm đối tượng dựa trên vị trí. Sau đó, chúng ta tắt tất cả các collections khác để render.
Sau đó, chúng ta tạo hai view layer bổ sung và đặt tên cho chúng như sau:
-
-
-
-
-
- Front
- Back left
- Back right
-
-
-
-
Tiếp theo, chúng ta chuyển đến biểu tượng bộ lọc và bật các nút cho “holdout” và “indirect only”.
Bây giờ chúng ta cần đảm bảo rằng chúng ta loại trừ thứ gì đó khỏi mỗi view layer. Để tiết kiệm bộ nhớ, nhóm chúng ta loại bỏ ít hình học nhất sẽ là ngưỡng cho lượng bộ nhớ chúng ta tiết kiệm được.
Bây giờ chúng ta sẽ cấu hình các view layers. Bắt đầu với nhóm“back right”. Chọn nó từ trình đơn thả xuống của view layer. Tại đây chúng ta rời mặt phẳng cùng với nhóm “back right”.
Nhưng nếu chúng ta muốn render bóng trên mặt phẳng từ nhóm “back left”, chúng ta chọn “holdout” và “indirect only”. Sau đó, loại trừ nhóm “Front” vì chúng ta không cần bóng của nhóm đó trên mặt phẳng.
Trong view layer “back left”, chúng ta loại trừ các nhóm “front” và “back right”, nhưng để lại nhóm “ground” ở đó với “holdout” và “indirect only” được bật. Bằng cách này, chúng ta giữ cho ánh sáng dội lại từ mặt phẳng trên nhóm để thắp sáng phần nào mặt dưới.
Đối với view layer “front”, chúng ta loại trừ các nhóm “back left” và “back right” vì chúng đóng góp rất ít cho nhóm “Front”. Một lần nữa, chúng ta đặt mặt phẳng thành “holdout” và “indirect only” để chúng ta có được ánh sáng phản chiếu ở mặt trước của vật thể.
Trước khi có thể render, chúng ta cần đặt background là transparent, nếu không nó sẽ che background khi chúng ta kết hợp chúng lại với nhau trong bộ tổng hợp.
Chuyển đến render tab trong bảng thuộc tính và tìm phần “film”. Tại đây, hãy bật “Transparent”.
Nếu bạn cần background như một phần của output, bạn có thể chuyển đến tab view layer trong bảng thuộc tính. Tìm phần “pass” và trong phần phụ “light”, chúng ta bật “environment”.
Điều này sẽ render bầu trời thành một kênh riêng biệt mà chúng ta có thể truy cập trong bộ tổng hợp.
4. Kết hợp các view layers lại với nhau
Để kết hợp các view layers lại với nhau, chúng ta sẽ cần một view layer node cho mỗi view layer.
Vì chúng ta thêm từng layer lên trên lớp trước nên chúng ta cần bắt đầu từ phía sau.
Do đó, chúng ta bắt đầu với lớp “back left” và chuyển nó đến ổ cắm đầu vào trên cùng của nút “alpha over”. Sau đó, chúng ta cắm “back right” vào ổ cắm phía dưới.
Sau đó, đầu ra từ nút qua alpha đầu tiên được dẫn làm đầu vào cho ổ cắm trên cùng trong một nút qua alpha khác. Sau đó, ổ cắm phía dưới sẽ lấy nhóm “front” làm đầu vào.
Sau đó, ổ cắm cuối cùng có thể lấy environment pass làm đầu vào nếu nó hiển thị trong ảnh. Bây giờ chúng ta hãy thêm một số volumetric fog vào cảnh này bằng cách sử dụng Eevee và ghép nó lên trên.
iRender - Dịch vụ cung cấp máy tính cấu hình cao cho mọi phần mềm kết xuất
Là nhà tài trợ Kim Cương cho Blender, cũng như người bạn đồng hành tận tâm của các nghệ sĩ 3D, iRender hiểu rằng trong các bước tạo cảnh 3D thì render có thể coi là bước cuối cùng và cũng là bước quan trọng giúp cho cảnh trở nên chân thực hơn, tuy nhiên đây lại là bước tiêu tốn khá nhiều thời gian. Chính vì lẽ đó, iRender ra đời nhằm mang đến cho khách hàng trải nghiệm render nhanh chóng và vui vẻ hơn. Đến với iRender, bạn sẽ có thể lựa chọn được những chiếc máy tính có cầu hình phù hợp nhất với nhu cầu và phần mềm bạn đang sử dụng. iRender cung cấp đa dạng các loại máy chủ từ 2/4/8 card GPU GTX 3090, và gần đây nhất là server gồm 2 card GPU RTX 4090, một trong những dòng card mới nhất và có hiệu suất cao nhất của NVIDIA. Cùng với đó là dòng CPU mạnh mẽ được tích hợp sẵn trong máy : AMD Ryzen Threadripper Pro 3955WX @ 3.90GHz.
Một điều tuyệt vời hơn nữa là khi bạn sử dụng dịch vụ bên iRender, bạn sẽ có cảm giác như đang sở hữu một chiếc PC cấu hình cao hoàn toàn mới dành cho riêng mình. Bạn có toàn quyền kiểm soát tất cả các hoạt động của mình trên đó, và tất nhiên một cách hoàn toàn bảo mật. Bạn chỉ cần cài đặt các trình kết xuất MỘT LẦN DUY NHẤT, và chúng sẽ được lưu lại trên máy cho những lần sử dụng kế tiếp. Không chỉ vậy, iRender cũng cung cấp rất nhiều dịch vụ kèm theo đó như tăng dung lượng lưu trữ, parsec, NV link,… nhằm giúp bạn đạt được hiệu quả cao nhất trong công việc.
iRender hiện đang có chương trình tặng thêm 20% bonus cho lần nạp tiền đầu tiên trong vòng 24h kể từ khi đăng ký. Ngoài ra, nhằm giúp các bạn sinh viên ngành kiến trúc hay thiết kế đồ họa có thể tiếp cận được với máy tính cấu hình cao một cách dễ dàng để hoàn thành các dự án học tập xuất sắc, iRender cho ra đời chính sách hỗ trợ 50% bonus cho tất cả các lần nạp tiền.