Mô phỏng Vellum và RBD chạy chậm: Substeps, Constraints và tại sao tốn thời gian
Với Vellum, thời gian mô phỏng không chỉ cộng dồn mà còn tăng theo cấp số nhân, vì mỗi frame được chia thành nhiều Substeps và mỗi Substep lại thực hiện nhiều vòng lặp giải Constraint. Hiểu được cách các vòng lặp này nhân lên sẽ giúp bạn thấy rõ vì sao một mô phỏng có thể chậm đi rất nhanh. Bài viết này phân tích cấu trúc vòng lặp lồng nhau của Vellum (tức là một vòng lặp nằm bên trong một vòng lặp khác) để bạn có thể điều chỉnh đúng những thông số thực sự cần thêm độ chính xác thay vì tăng tất cả thiết lập chỉ để mô phỏng có vẻ ổn định hơn.
Tại sao mô phỏng Vellum của tôi lại chạy chậm?
Chi phí tính toán của Vellum đến từ cấu trúc vòng lặp lồng nhau. Mỗi frame được chia thành nhiều Substeps, và trong mỗi Substep, Vellum lại thực hiện các vòng Constraint Iterations cần thiết để giải mô phỏng. Khi cả hai giá trị cùng tăng, bộ giải phải thực hiện nhiều phép tính hơn trong mỗi frame. Đây là lý do các vấn đề liên quan đến Vellum Houdini chạy chậm do Substeps có thể trở nên nghiêm trọng rất nhanh.
Việc các thông số này nhân lên là một trong những nguyên nhân phổ biến khiến Vellum bỗng dưng trở nên chậm. Tăng Substeps và Constraint Iterations cùng lúc có thể tạo ra khối lượng tính toán lớn hơn nhiều so với dự kiến. Thay vì tự động tăng cả hai, bạn nên xác định chính xác phần nào của quá trình giải đang cần thêm độ chính xác.
Chỗ nào là tốn thời gian?
Substeps làm tăng số lần Vellum giải mô phỏng trong mỗi frame. Tăng Substeps có thể cải thiện độ chính xác theo thời gian, nhưng mỗi Substep bổ sung cũng khiến bộ giải phải lặp lại phần lớn công việc tính toán.
Constraint Iterations được thực hiện bên trong từng Substep, vì vậy tăng giá trị này sẽ thêm một lớp tính toán nữa. Vellum sử dụng phương pháp Gauss-Seidel cho Constraint Iterations, giúp quá trình hội tụ diễn ra tương đối nhanh. Smoothing Iterations sử dụng phương pháp Jacobi, có tốc độ hội tụ chậm hơn nhưng phân bổ sai số đồng đều hơn. Giá trị mặc định của Smoothing Iterations là 10. Khi Constraint Iterations được tăng lên rất cao, việc tăng Smoothing Iterations có thể trở nên hữu ích.
Collision Passes tạo thêm một bước tính toán tốn thời gian vì quá trình xử lý va chạm được xen kẽ với các vòng Constraint Iterations. Điều này có thể làm chi phí giải mô phỏng tăng đáng kể, nên bạn cần sử dụng thông số này có kiểm soát. Giá trị khoảng 10 là phù hợp nhất với nhiều trường hợp. Khi cần cải thiện chất lượng va chạm do yêu cầu độ chính xác theo thời gian cao hơn, tăng Substeps thường là lựa chọn hiệu quả hơn.
Mối liên hệ mà nhiều người dễ bỏ qua
Tăng Substeps có thể làm giảm lực tác động hiệu dụng trong mỗi lần giải. Điều này có nghĩa là bạn có thể không cần nhiều Constraint Iterations như trước để đạt được kết quả ổn định. Mối quan hệ này cũng hoạt động theo chiều ngược lại, nhưng rất dễ bị bỏ qua khi điều chỉnh một mô phỏng Vellum.
SideFX đưa ra một ví dụ khá hữu ích: 2 Substeps với 10 Collision Passes có thể mất thời gian gần tương đương 1 Substep với 20 Collision Passes. Thiết lập 2 Substeps thường cho kết quả tốt hơn.
Mục tiêu là dồn chi phí tính toán vào đúng thông số có tác động lớn nhất đến chất lượng mô phỏng. Tăng thêm tính toán ở mọi chỗ chỉ khiến quá trình giải lâu hơn mà không nhất thiết cải thiện kết quả.
Điều chỉnh theo vấn đề thực tế, không tăng thông số theo cảm tính
Khi mô phỏng Vellum gặp một vấn đề cụ thể, tôi thường thay đổi đúng thông số liên quan đến vấn đề đó thay vì tăng tất cả cùng lúc. Cách này giúp quá trình giải mô phỏng vẫn hiệu quả và bạn cũng dễ đánh giá tác động của từng thay đổi hơn.
-
-
-
- Vải bị kéo giãn quá nhiều: Tăng Constraint Iterations trước. Tăng Substeps cũng có thể giúp, nhưng Constraint Iterations thường là lựa chọn ít tốn thời gian tính toán hơn đối với vấn đề này.
- Vật thể xuyên qua bề mặt va chạm: Ưu tiên tăng Substeps. Tăng Collision Passes cũng có thể cải thiện tình trạng này, nhưng sẽ làm chi phí tính toán của bộ giải tăng đáng kể, vì vậy tôi không khuyên bạn tăng ngay nếu chưa kiểm tra Substeps.
- Các tam giác bị biến dạng hoặc không hội tụ: Có thể tăng Smoothing Iterations. Thông số này giúp phân bổ sai số của bộ giải đồng đều hơn khi các ràng buộc cần được làm mượt thêm.
- Chọn giá trị ban đầu: SideFX đề xuất dùng đường kính hình học làm cơ sở ban đầu để thiết lập Constraint Iterations. Trong thực tế, bạn có thể xem xét số cạnh nằm giữa hai điểm xa nhau nhất trong hình học. Đây là một mốc khởi đầu hữu ích trước khi thử các giá trị cao hoặc thấp hơn.
- Khi quá trình giải quá chậm: Kiểm tra xem các vòng lặp bổ sung có thực sự khắc phục vấn đề nhìn thấy trong hình ảnh hay không. Nếu không, giảm số vòng lặp có thể tiết kiệm đáng kể thời gian tính toán mà vẫn giữ kết quả gần như không thay đổi về mặt hình ảnh.
- Khi gặp vấn đề Vellum Houdini chạy chậm do Substeps : Hãy thử nghiệm Substeps và Constraint Iterations riêng biệt. Tác động của hai thông số này có phần chồng lên nhau, vì vậy tăng cả hai cùng lúc có thể khiến chi phí mô phỏng tăng cao hơn nhiều so với mức cần thiết.
-
-
Khi nào nên sử dụng Minimal mode
Vellum Solver có Minimal mode, giúp đơn giản hóa thiết lập của bộ giải và được tối ưu cho việc sử dụng nhiều Substeps với tốc độ cao. Chế độ này có thể hữu ích cho các mô phỏng hạt và chất lỏng quy mô lớn. Khi bật Minimal mode, Substeps được tăng lên trong khi Constraint Iterations được giảm xuống, từ đó chuyển cách phân bổ tính toán sang hướng dựa nhiều hơn vào Substeps.
Đối với thiết lập chất lỏng bằng Vellum, SideFX khuyến nghị bắt đầu với 10 Substeps và 20 Constraint Iterations. Tài liệu cũng cảnh báo không nên sử dụng từ 20 Substeps trở lên cho chất lỏng và hạt, vì kết quả có thể trở nên quá cứng. Do đó, bạn nên xem các giá trị này như một điểm tham khảo ban đầu thay vì một thiết lập cố định cho mọi trường hợp.
Vellum Solver cũng có các tùy chọn OpenCL, cho phép chuyển một phần công việc sang GPU. Khi bật tăng tốc GPU, VRAM trở thành một tài nguyên khác cần theo dõi. Các mô phỏng lớn có thể tạo áp lực đáng kể lên bộ nhớ GPU, vì vậy dung lượng VRAM khả dụng cũng quan trọng không kém các thiết lập của bộ giải.
Minimal mode không phải lúc nào cũng là lựa chọn tốt hơn cho mọi dự án. Chế độ này thay đổi cách bộ giải phân bổ công việc giữa Substeps và Constraint Iterations, nên tác động có thể khác nhau tùy loại mô phỏng. Tôi thường thử nghiệm trên một đoạn đại diện của shot cuối trước khi áp dụng cho toàn bộ dự án.
RBD có cách tiêu tốn tài nguyên khác
Mô phỏng RBD có đặc điểm hiệu năng khác Vellum vì phần lớn chi phí của bộ giải đến từ việc phát hiện va chạm và độ phức tạp của hình học dùng để va chạm. Thay các hình dạng lõm phức tạp bằng các hình dạng đại diện đơn giản hơn có thể giảm đáng kể khối lượng tính toán, đặc biệt khi có nhiều vật thể tương tác với nhau.
Bạn cũng nên nhớ rằng tên thông số và các tùy chọn có thể thay đổi giữa các phiên bản Houdini. Tôi khuyên nên kiểm tra tài liệu SideFX tương ứng với phiên bản Houdini đang sử dụng trước khi điều chỉnh một thiết lập.
Khi đã tối ưu thiết lập nhưng mô phỏng vẫn chậm
Nếu đã điều chỉnh các thiết lập hợp lý mà mô phỏng vẫn chạy chậm, phần cứng là yếu tố tiếp theo tôi sẽ kiểm tra. Cloud workstation cho phép bạn tiếp cận nhiều tài nguyên CPU, RAM hoặc GPU hơn mà không cần thay đổi máy làm việc hiện tại. Với iRender, bạn có thể thiết lập lại môi trường Houdini, thực hiện các bài kiểm tra Vellum Houdini chạy chậm do Substeps, sau đó chỉnh sửa hoặc render dự án trên một máy có cấu hình cao hơn.
Mỗi thông số Vellum ảnh hưởng như thế nào?
| Thông số | Mức độ ảnh hưởng đến thời gian | Vấn đề mà thông số giúp khắc phục | Ghi chú từ tài liệu |
|---|---|---|---|
| Substeps | Làm tăng toàn bộ chi phí tính toán của mỗi frame | Va chạm nhanh, lực tác động đột ngột, vải bị kéo giãn quá mức | Tăng Substeps làm giảm lực tác động hiệu dụng trong mỗi bước, nhờ đó có thể giảm số Constraint Iterations cần thiết |
| Constraint Iterations | Được thực hiện trong mỗi Substep | Vải bị kéo giãn quá mức, các ràng buộc quá cứng nhưng chưa hội tụ | Thường ít tốn thời gian hơn so với tăng Substeps; có thể dùng đường kính hình học làm giá trị khởi đầu |
| Collision Passes | Tốn nhiều tài nguyên vì được thực hiện xen kẽ giữa các vòng giải ràng buộc | Va chạm bị bỏ sót hoặc không ổn định | Giá trị 10 phù hợp với nhiều trường hợp; nhìn chung tăng Substeps thường là lựa chọn tốt hơn |
| Smoothing Iterations | Hội tụ chậm hơn | Các tam giác có hình dạng bất thường do quá trình hội tụ chưa hoàn chỉnh | Giá trị mặc định là 10; tăng khi Constraint Iterations được đặt ở mức rất cao |
| Minimal Mode | Giảm chi phí của bộ giải bằng cách đơn giản hóa các tính năng khả dụng | Mô phỏng hạt và chất lỏng quy mô lớn | Tự động tăng Substeps và giảm Constraint Iterations |
iRender: Cloud workstation RTX 5090 cho Houdini
Trong phần lớn trường hợp Vellum chạy chậm, vấn đề chính nằm ở cách thiết lập chưa cân bằng chứ không hẳn do phần cứng yếu. Không có workstation nào có thể giải quyết một mô phỏng đang thực hiện quá nhiều phép tính không cần thiết. Hãy điều chỉnh các thông số trước, dựa trên những cách đã trình bày ở các phần trên, rồi mới chuyển dự án sang một máy mạnh hơn.
Khi thiết lập đã được tối ưu nhưng shot vẫn thực sự phức tạp, thêm CPU và RAM có thể tạo ra khác biệt đáng kể. iRender cung cấp cloud workstation sử dụng CPU AMD Threadripper Pro và tối đa 256GB RAM, phù hợp với các mô phỏng Houdini nặng. Nếu thiết lập Vellum của bạn sử dụng OpenCL, GPU RTX 4090 24GB và RTX 5090 32GB cũng có thể hữu ích. Hiệu năng vẫn phụ thuộc vào loại mô phỏng và các thiết lập cụ thể, vì vậy hãy thử nghiệm trực tiếp với scene thực tế trước khi chọn cấu hình.
Khi thuê cloud workstation, bạn cũng nên lưu ý một số vấn đề thực tế. Một máy từ xa không thể khiến một mô phỏng được thiết lập chưa tốt chạy nhanh hơn. Nó chỉ cung cấp thêm tài nguyên phần cứng cho một mô phỏng đã được tối ưu hợp lý. Tôi thường khuyên điều chỉnh thông số trên máy local với một phiên bản scene nhẹ hơn trước, sau đó mới chuyển toàn bộ scene sang máy từ xa. Vì iRender bắt đầu tính phí khi workstation được bật, quy trình này giúp tránh phải trả tiền cho thời gian thiết lập mà bạn hoàn toàn có thể dùng để thử nghiệm ngay trên máy local.
Hiện tại, iRender đang triển khai chương trình khuyến mãi 100% bonus cho người dùng mới khi nạp lần đầu, và chương trình riêng dành cho khách hàng Việt Nam kéo dài từ 19/8 – 19/9/2026, hãy xem thử dưới đây:
Cùng xem các bài test chạy thử trên RTX 4090 của iRender:
FAQ
Tại sao mô phỏng Vellum của tôi lại chạy chậm?
Vellum sử dụng các vòng lặp bộ giải lồng nhau. Mỗi frame được chia thành nhiều Substeps và mỗi Substep lại thực hiện nhiều Constraint Iterations. Tăng cả hai thông số cùng lúc sẽ làm khối lượng tính toán tăng theo cấp số nhân thay vì chỉ cộng thêm. Collision Passes cũng làm tăng đáng kể chi phí vì chúng được thực hiện xen kẽ giữa các giai đoạn giải ràng buộc. Đây là một nguyên nhân phổ biến của các vấn đề Vellum Houdini chạy chậm do Substeps.
Nên tăng Substeps hay Constraint Iterations trong Vellum?
Hãy điều chỉnh thông số dựa trên vấn đề đang gặp phải. Nếu vải bị kéo giãn quá nhiều, hãy tăng Constraint Iterations trước vì cách này thường ít tốn thời gian tính toán hơn. Nếu va chạm bị bỏ sót hoặc vật thể chuyển động quá nhanh, hãy ưu tiên tăng Substeps. Substeps cao hơn làm giảm lực tác động hiệu dụng trong mỗi bước, vì vậy sau đó bạn có thể giảm Constraint Iterations nếu kết quả vẫn ổn định.
Minimal mode trong Vellum dùng để làm gì?
Minimal mode đơn giản hóa một số tính năng của Vellum và được tối ưu cho việc sử dụng nhiều Substeps với tốc độ cao. Chế độ này phù hợp với các mô phỏng hạt và chất lỏng quy mô lớn. Khi được bật, Minimal mode tăng Substeps đồng thời giảm Constraint Iterations. Điều này thay đổi cách bộ giải phân bổ thời gian tính toán. Vì vậy, đây là một lựa chọn đánh đổi giữa các thiết lập chứ không phải chế độ luôn cho kết quả tốt nhất trong mọi mô phỏng.
Đăng ký tài khoản trên iRender để nhận thưởng 100% cho lần nạp tiền đầu tiên và render không giới hạn.
iRender – Maximum Speed – Absolute Freedom.







