February 27, 2024 Hana Trieu

Mối quan hệ giữa Polygon và Bộ nhớ trong C4D và Octane

Geometry (hay polygons) có thể ảnh hưởng đến hiệu suất của hệ thống theo nhiều cách khác nhau. Khi nói về Geometry, có hai yếu tố chính chúng ta cần nghiên cứu – đó là số lượng polygon trong một đối tượng và tổng số đối tượng polygon trong cảnh. Cả hai đều có những cân nhắc và thách thức khác nhau. Trong bài viết hôm nay, chúng ta sẽ tập trung tìm hiểu về số lượng polygon trong một đối tượng. Hãy cùng tìm hiểu về cách xử lý polygon cũng như mối quan hệ giữa polygon và bộ nhớ trong C4D và Octane.

Geometry được xử lý trong C4D và Octane như thế nào?

Polygon

Polygon là đơn vị nhỏ nhất để xây dựng nên một đối tượng hình học. Khái niệm “polygon” trong C4D bao gồm đa giác hình tam giác (3 mặt), hình tứ giác (4 mặt) hoặc n-giác (nhiều hơn 4 mặt). Octane chỉ có thể sử dụng hình tam giác, vì vậy tất cả đa giác phải được giảm xuống thành hình tam giác trong giai đoạn tiền xử lý trước khi Octane có thể render nó. 

Khi một lưới được chia nhỏ, mỗi đa giác được chia thành các phần hình tứ giác nhỏ hơn, bất kể nó bắt đầu ở dạng tam giác, tứ giác hay n-giác. Sau đó, những hình tứ giác này phải được chia thành các hình tam giác để gửi đến Octane.

Baked Polygon và Generated Polygon

C4D có hai cách xử lý cách tạo và lưu trữ đa giác. Chúng có thể được bake (C4D gọi đây là “có thể chỉnh sửa – editable”) hoặc được generate (tạo ra).

Nếu đa giác được bake, các dữ liệu điểm/cạnh/mặt tồn tại vĩnh viễn cho mỗi đa giác và được lưu trữ trong tệp C4D. Khi tải tệp, tất cả dữ liệu đó sẽ được sao chép vào RAM và nằm ở đó cho đến khi tệp được đóng (hoặc đối tượng bị xóa). Tất cả dữ liệu điểm/mặt riêng lẻ đó đều chiếm dung lượng, do đó, nó làm cho tệp C4D lớn hơn rất nhiều so với khi sử dụng trình tạo – generator (70 MB khi bake và 300 KB khi tạo cho một triệu polys).

Nếu đa giác được tạo ra (generate), sẽ có một đoạn code nhỏ được lưu trữ trong tệp C4D. Đoạn code này sẽ được sao chép khi tải tệp, và sau đó ns chạy ngay tức thì để tạo ra số lượng đa giác cần thiết và lưu trữ chúng trong RAM. Chúng ở đó cho đến khi trình tạo tắt, hoặc có thứ gì đó kích hoạt nó để xây dựng lại chúng (ví dụ: thay đổi số lượng phân đoạn).

Bất kể được bake hay được generate, polygon đều chiếm cùng một dung lượng trong RAM. Tất cả các đối tượng đa giác cần được xử lý tạm thời trước khi gửi đến Octane để render.

Phân chia polygon

Subdivision là một phương pháp phổ biến để chia đa giác thành các đa giác nhỏ hơn. Bước này thường được thực hiện để làm phẳng lưới hoặc thêm chi tiết cho những thứ như các đối tượng dịch chuyển.

Thay vì chỉ định một con số đa giác cụ thể, phép chia này thực hiện theo cấp độ level. Các cấp độ luôn hoạt động theo lũy thừa bốn.

Cấp 0 là hình học ban đầu (trong ví dụ trên là một hình tứ giác).

Cấp độ 1: Hình tứ giác ban đầu được chia thành bốn hình tứ giác nhỏ hơn. 

Cấp độ 2: 4 hình tứ giác Cấp 1 được chia làm bốn, tạo thành 16 hình tứ giác Cấp 2. 

Cấp 3: 16 hình tứ giác Cấp 2 được chia làm bốn, tạo thành 64 hình tứ giác Cấp 3. 

Quá trình phân chia tiếp tục diễn ra cho đến Cấp 10, khi đó mỗi hình tứ giác trở thành 1.048.576 hình tứ giác nhỏ hơn.

Nếu chỉ có một hình đa giác đơn lẻ như ví dụ trên, quá trình này diễn ra không quá phức tạp. Nhưng nếu lưới ban đầu đã chứa hàng nghìn hình đa giác, quá trình phân chia sẽ diễn ra liên tục, số lượng đa giác sẽ tăng lên nhanh chóng ở các cấp độ cao hơn. 

Phương pháp phân chia

Cinema 4D được tích hợp sẵn Đối tượng Subdivision Surface (viết tắt là SubD hoặc SDS). Đây là một trình tạo chia nhỏ hình dạng của bất kỳ đối tượng đa giác nào được lồng trong đó. Ưu điểm của phương pháp này là chúng ta có thể xem kết quả của phép chia nhỏ trong viewport luôn. Nhược điểm là thời gian xử lý lâu và ảnh hưởng đến hiệu suất viewport.

Lưu ý: Octane chỉ nhận số lượng đa giác được phân chia trong Viewport trong đối tượng SubD của C4D, không phải số đa giác render.

Octane cũng có phương pháp chia nhỏ thông qua Octane Object Tag. Cấp độ phân chia có thể được đặt trong tab Subdivision Group. Phương pháp này chia nhỏ các đa giác tại thời điểm render, nghĩa là viewport di chuyển ở tốc độ tối đa, nhưng không thể hiển thị mô hình chia nhỏ cuối cùng cho đến khi quá trình render diễn ra.  Sử dụng phương pháp này khiến C4D tốn ít VRAM hơn một chút, vì vậy đây là lựa chọn tốt hơn trong trường hợp bạn có ít dung lượng RAM. 

Polygon và Bộ nhớ

Xét từ quan điểm tối ưu hóa, việc giữ cho cả RAM và VRAM không bị đầy là điều quan trọng. Do đó, việc ước tính lượng sử dụng trong cảnh của chúng ta là điều rất quan trọng.

Có hai công cụ hữu ích để theo dõi việc sử dụng bộ nhớ. Cửa sổ Ctl-I/Cmd-I hiển thị số lượng RAM đa giác đang sử dụng và trong Octane Settings > tab Settings > Device Settings sẽ hiển thị bảng phân tích về lượng VRAM đang được sử dụng.

Một triệu tứ giác dùng khoảng 70MB (0,07GB) khi được tải vào RAM. Lưu ý, đây là “khoảng” chứ không phải “chính xác”, vì điều quan trọng là cách thức xây dựng lưới (các cạnh/đỉnh chung/v.v.).

Nếu chúng ta lấy hàng triệu hình tứ giác đó, làm cho chúng có thể chỉnh sửa được, chọn chúng và sử dụng lệnh “triangulate” trong C4D, thì chúng ta sẽ có hai triệu hình tam giác. Đây là những gì xảy ra trong giai đoạn tiền xử lý trước khi được gửi tới Octane. Nếu chúng ta chỉ muốn một triệu hình tam giác trong Octane, chúng ta phải bắt đầu với nửa triệu hình tứ giác.

Lưu trữ 2 triệu tam giác trong C4D cần tới RAM lên tới 117MB (~0,17 GB) – không nhiều gấp đôi so với một triệu tứ giác (bên trên), bởi vì có các điểm được chia sẻ và các yếu tố toán học phức tạp khác ảnh hưởng đến cách nó được lưu trữ trong bộ nhớ.

Điều thú vị là khi hai triệu hình tam giác này được gửi tới Octane, chúng sẽ sử dụng 367 MB (~0,37 GB) VRAM.

Tại sao lại như vậy?

Hình học trong cảnh của chúng ta tác động đến cả VRAM và RAM.

Ví dụ, trong trường hợp này chúng ta sử dụng hệ thống với 64GB RAM và 16GB VRAM. Sau khi đã tối ưu hóa hệ thống (đóng hết tất cả các chương trình không sử dụng, hoặc liên quan khác, v.v), chúng ta còn lại khoảng 12,5 GB VRAM và 57 GB RAM trống. 

Bất kỳ số lượng đa giác nhất định nào cũng chiếm nhiều VRAM hơn RAM. Dung lượng VRAM chúng ta có ít hơn 4 lần dung lượng RAM, vì vậy chúng ta sẽ cần lo lắng hơn về tác động đến VRAM vì nó sẽ sớm đạt đến giới hạn trước khi số lượng đa giác bắt đầu có tác động rõ rệt đến RAM. Nếu một đối tượng sử dụng quá nhiều VRAM, chúng ta cần đưa nó vào bộ nhớ out-of-core (RAM). 

Nhưng đáng tiếc, chúng ta không thể biết tác động thực sự của polycount lên VRAM cho đến khi đã render xong. Nhưng chúng ta có thể sử dụng 0,37GB cho 1.000.000 đa giác như trên để ước lượng. Tùy thuộc vào các nội dung khác trong cảnh, chúng ta nên lo về dung lượng cho khoảng 20 triệu tứ giác với phần cứng này và cần phải tìm cách giảm thiểu để tối ưu hóa cảnh.

Nhận biết số lượng đa giác

Số lượng đa giác trong cảnh ảnh hưởng đến tất cả tài nguyên của chúng ta. Khi con số này tăng lên cao (hàng chục triệu), viewport bắt đầu bị lag, RAM và VRAM bắt đầu đầy, kích thước file trên ổ cứng không thể quản lý được và thời gian tiền xử lý bắt đầu tính bằng phút (hoặc thậm chí hàng giờ).

Nói một cách đơn giản, trải nghiệm bắt đầu tệ đi.

Biết nơi để tìm ra số lượng đa giác trong cảnh (và trên mỗi đối tượng) là một khái niệm chẩn đoán khá quan trọng. Chúng ta có thể tìm ra con số này ở nhiều nơi và mỗi nơi đều có những ưu, nhược điểm riêng.

Trong Octane

Cách dễ nhất để biết được số lượng tam giác chính xác cho toàn bộ cảnh là chỉ khi bắt đầu render trong Live viewer và xem những gì Octane báo cáo lại. Có một vài nơi khác nhau để truy cập thông tin này:

Live viewer: Đây là cách nhanh nhất và dễ dàng nhất nếu chúng ta đang sử dụng Live viewer. Sẽ có các lớp dữ liệu hiện thị trên chính Live Viewer. Một trong số đó có chữ “tris” và có hai số. Số thứ hai là số mà chúng ta quan tâm. Nếu những lớp dữ liệu này không có ở đó, trong khi Live Viewer vẫn đang chạy, chúng ta có thể nhấp chuột phải vào đâu đó trong vùng hình ảnh và chọn “Toggle Info”, hoặc chỉ cần nhấp vào ở giữa của vùng hình ảnh một vài lần để bật và tắt chúng.

Thông tin GPU: Mục này nằm trong menu Trợ giúp trong Live Viewer – nó bật lên một cửa sổ nhỏ cung cấp số tris cụ thể hơn (thay vì hàng nghìn hoặc hàng triệu như trên).

Octane Log: Mục này cũng nằm trong menu Trợ giúp trong Live Viewer. Ở đây chỉ hiện số polygon nếu chúng ta render cho picture viewer thay vì Live Viewer.

Lưu ý: Octane phải hoàn thành quá trình render để có được con số này. Nếu số lượng Polygon quá cao và phải mất nhiều thời gian để xử lý trước và hiển thị số lượng tam giác (hoặc nếu hệ thống hết VRAM và không thể render), chúng ta có các phương pháp khác trong C4D để xem.

Octane chỉ cung cấp số lượng polygon cho các hình học được gửi tới nó. Nếu có 20 triệu polygon trong cảnh C4D và 19 triệu trong số đó nằm trong các đối tượng đã tắt Render Visibility, thì Octane sẽ chỉ nhìn thấy một triệu đa giác được gửi và trả về giá trị dựa trên con số này.

Trong C4D

Ctl-I (hoặc Cmd-I trên Mac) sẽ hiển thị một cửa sổ thông tin nhỏ tiện dụng, cho chúng ta biết tổng số đa giác (cả baked và generated).

Phương pháp này nhanh chóng, dễ dàng, nhưng có hai vấn đề lớn cần lưu ý.

    1. Số ở đây là tổng số polygon. Vì chúng ta biết rằng C4D coi tam giác, tứ giác và n-giác đều là polygon (đa giác), nên số đa giác 14.000 có thể là 14.000 tứ giác (chia thành 28.000 tam giác cho Octane) hoặc 14.000 tam giác (vẫn sẽ là 14.000 tam giác đối với Octane), hoặc 14.000 n-giác (là một số tam giác tùy ý), hoặc một số kết hợp của tất cả chúng.
    2. Toán học và phép tính. Nó đếm đến 2 lần các đối tượng lồng với nhau được tạo ra. Ví dụ: nếu chúng ta có một mặt phẳng có 1.000.000 hình tứ giác được lồng trong một đối tượng bề mặt phân chia cấp 1, thì nó sẽ tính 4.000.000 đa giác từ SubD, nhưng cũng tính bổ sung thêm 1.000.000 tứ giác từ mặt phẳng ban đầu! Điều này có nghĩa là nó trả về giá trị 5.000.000 polygon, thêm một triệu tứ giác (hoặc hai triệu hình tam giác) khi bake và gửi nó tới Octane.

Điều này mang lại giá trị sử dụng RAM chính xác hơn nhưng nó làm mất đi dữ liệu polycount mà chúng ta cần cho Octane. Vì vậy, chúng ta sẽ chỉ sử dụng cách này để ước tính độ phức tạp của cảnh, chứ không nhằm mục đích chính xác cho hiệu suất hay render.

Hai công cụ tiếp theo đây chỉ dành cho baked polygon (không dành cho polygon được tạo ra).

Đầu tiên, HUD: Chúng ta có thể nhấn Shift-V trong viewport bối cảnh và trong tab HUD, hãy chắc chắn rằng Total Polygons được tick chọn. Sau đó, nếu chúng ta chuyển sang chế độ Polygons ở trên cùng và chọn đối tượng, chúng ta có thể thấy tổng số polygon baked hoặc editabe ở đó. Nó không đếm đa giác được tạo ra. Nếu model đều là hình tam giác (như từ dự án CAD hoặc điêu khắc), thì chúng ta sẽ biết số lượng tam giác của mình là bao nhiêu. Nếu tất cả là hình tứ giác, chúng ta có thể x2 để có được số lượng tam giác. Nếu là n-giác hoặc hỗn hợp đa giác thì sẽ khó đoán hơn.

Thứ hai, Thông tin dự án: Để biết chi tiết về các loại đa giác trong cảnh, chúng ta có thể đi tới trình quản lý Thuộc tính (Attributes manager) và trong Mode, chọn Project Info. Công cụ này cũng không hoạt động với trình tạo, chỉ có đa giác có thể chỉnh sửa (editable polygons). 

Nếu đang ở chế độ Polygons, chúng ta có thể sử dụng tab Structure để xem phân tích theo tứ giác, tam giác và n-giác là gì. Chúng ta có thể dễ dàng ước tính tổng số đa giác từ tam và tứ giác, nhưng đối với n-giác thì sẽ rất khó để biết.

Trên đây là một số thông tin về cách C4D và Octane xử lý hình học. Chúng ta cũng đã hiểu thêm về mối quan hệ giữa polygon và bộ nhớ trong C4D và Octane. Để biết thêm thông tin chi tiết về cách thức và kết quả Otoy test các scene khác nhau, bạn có thể tìm hiểu tại đây

Tăng tốc render Octane với iRender

iRender cung cấp máy chủ (server) cấu hình cao, cụ thể là 1/2/4/6/8x RTX 4090 & RTX 3090. Với CPU mạnh mẽ cho Octane là AMD Ryzen™ Threadripper™ PRO 3955WX @ 3.9 – 4.2GHz và AMD Ryzen™ Threadripper™ PRO 5975WX @ 3.6 – 4.5GHz, bộ nhớ RAM 256GB và dung lượng ổ cứng NVMe SSD 2T, tất cả các server của chúng tôi có thể xử lý hầu hết mọi mức độ phức tạp của các dự án Octane.

iRender mang đến cho bạn, các nghệ sĩ 3D, một giải pháp render mạnh mẽ và hợp lý để thỏa sức sáng tạo. Chúng tôi tự hào là render farm duy nhất nơi bạn có thể cài đặt bất kỳ phần mềm, plugin phiên bản nào để phục vụ cho dự án. Bạn sẽ có toàn quyền kiểm soát các server và sử dụng chúng như máy tính cá nhân của mình.

Hãy cùng theo dõi video test hiệu suất render Octane trên server 6x RTX 4090 của chúng tôi.

Sử dụng dịch vụ của iRender chưa bao giờ dễ dàng và tiện lợi hơn chỉ qua một ứng dụng:

Nhận ưu đãi 100% cho khoản nạp đầu tiên trong vòng 24 giờ đăng ký từ chương trình ưu đãi đặc biệt tháng 2 của chúng tôi.

Để biết thêm thông tin, xin vui lòng liên hệ với chúng tôi qua email [email protected] hoặc số điện thoại +84915875500

 

iRender – Happy Rendering!

Nguồn tham khảo: otoy.com
, , , , , , , , , , , , , , , , , , , , , , , , , , ,

Hana Trieu

iRender - Happy Rendering!
Contact

INTEGRATIONS

Autodesk Maya
Autodesk 3DS Max
Blender
Cinema 4D
Houdini
Maxwell
Nvidia Iray
Lumion
KeyShot
UE4
Twinmotion
Redshift
Octane
And many more…

iRENDER TEAM

MONDAY – SUNDAY
9:00 AM – 8:00 PM
Hotline: 0916 806 116
Zalo: 0916 806 116
Skype: iRender Support
Email: [email protected]
CÔNG TY CỔ PHẦN CÔNG NGHỆ IRENDER VIỆT NAM
MST: 0108787752
Office: 5/82 Dịch Vọng Hậu, Cầu Giấy, Hà Nội.

Contact
0916806116