Một FX TD trẻ Giacomo Balma từng làm việc tại công ty MPC ở Canda và các phim như Transformers Raise Of The Beasts đã chia sẻ về nghiên cứu, tự phát triển solver Position Based Dynamic tạo Grain dynamic simulation. Cách giải quyết của anh tương tự với Vellum sẵn có trong Houdini nhưng được cho là giảm chi phí tính toán, điểm đặc biệt của quá trình phát triển là anh đã tìm ra cách giải quyết vấn đề khi hạt xoay trong không gian cùng với động lực của các hạt lân cận dựa trên tính toán động lực của đám mây hạt.
Điểm đặc biệt để anh bạn Gaicomo Balma này flex thành quả của mình là vấn đề anh đã giải quyết được bài toán động lực hạt xoay Orientation Dynamic và cũng dùng OpenCL (sử dụng GPU để áp dụng cho solver trong DOP network) để giảm chi phí tính toán, có vẻ như anh đang nhắm vào các large-scale rig.
Thuật toán định hướng hạt dựa trên vị trí (position-based dynamics) này tính toán hướng của một hạt bằng cách xem xét sự thay đổi vị trí của các hạt lân cận xung quanh. Nó được triển khai hoàn chỉnh bằng OpenCL cho DOPs trong Houdini SideFX Software và hầu như không làm tăng nhiều chi phí xử lý cho simulation, đặc biệt nếu đã tận dụng thuật toán tìm kiếm lân cận OpenCL nhanh như Vellum. Việc tính toán hướng cho các hạt – chủ yếu là hạt dạng ‘grains’ như trong trường hợp này – cho phép áp dụng các kỹ thuật instancing với hình dạng không cầu và tăng độ phân giải (còn nhiều điều thú vị sắp tới, hy vọng là vậy!).
Hướng của hạt được xác định bằng cách so sánh vị trí các hạt lân cận ở khung hiện tại với khung trước trong simulation, tìm ra phép xoay phù hợp nhất và cập nhật quaternion định hướng của hạt. Việc giải bài toán xoay phù hợp nhất thuộc về nhóm các bài toán ‘absolute orientation problem’. Tài liệu “Efficient Absolute Orientation Revisited” của Lourakis et al. [1] cung cấp một tổng quan tuyệt vời về hầu hết các giải pháp hiện có. Tôi đã bắt đầu bằng cách triển khai và thử nghiệm một số giải pháp trong Houdini. Theo bài viết, thuật toán Optimal Linear Attitude Estimator [3] được cho là hiệu quả nhất. Tuy nhiên, phiên bản tôi triển khai chỉ nhanh hơn một chút và lỗi xấp xỉ nhỏ nó gây ra tích lũy rất nhanh qua từng khung hình. Cuối cùng, tôi đã sử dụng cách tiếp cận đáng tin cậy hơn (và phổ biến hơn) được mô tả trong tài liệu “Least-Squares Fitting of Two 3-D Point Sets” [2]. Tóm lại, phương pháp này bao gồm việc tính toán ma trận hiệp phương sai (covariance matrix) của hai đám mây điểm (point cloud) lân cận và sử dụng phép phân tích suy biến (Singular Value Decomposition – SVD) để trích xuất ma trận xoay.
Việc xoay trên các vật thể tương tác (collider) có thể được ước tính khá dễ dàng, nhưng việc xác định liệu hạt nên lăn thay vì trượt lại khá khó khăn và có thể cần sự điều khiển mang tính nghệ thuật (art direction control). Hiện tại, tôi đang cố gắng tìm cách rẻ hơn để duy trì động lượng góc cho các hạt tách rời hoặc bay tự do.
Các tài liệu anh đã tham khảo để phát triển là những paper nghiên cứu:
[1] Lourakis, Manolis & Terzakis, George. Efficient Absolute Orientation Revisited. 10.1109/IROS.2018.8594296, 2018.
[2] K. S. Arun, T. S. Huang, and S. D. Blostein, “Least-Squares Fitting of Two 3-D Point Sets,” IEEE Trans. Pattern Anal. Machine Intell., vol. 9, no. 5, pp. 698–700, Sept 1987.
[3] D. Mortari, F. Markley, and P. Singla, “Optimal Linear Attitude Estimator,” J. Guid. Control Dynam., vol. 30, no. 6, pp. 1619–1627, 2007.