The Blog

Hiệu Ứng FX Về Vải – Chất Liệu Vải Và Các Nghiên Cứu Trong Quá Trình Tìm Hiểu

Tôi đang ngồi làm destruction thì có một phương pháp dùng dây nhợ, cloth để tạo ra destruction, chỗ này kiến thức tôi mỏng lét nên lũng, khó vượt qua thử thách, thế là tôi bỏ thời gian bắt đầu ngồi coi cloth simulation, wire simulation từ Houdini FX Vellum thì biết rằng hiện có 2 cách để giải quyết và tiếp cận vấn đề về cloth/fabric, tức kéo co giãn vật liệu dạng “soft body”. Để tôi làm một bài báo cáo sơ bộ coi như ôn tập cho chính tôi mà cũng là chia sẻ cho ai quan tâm.

Hiện nay có MPM (Material Point Method và Position Based Dynamic/Simulation. Maya dùng MPM, Houdini FX dùng Position Based Dynamic..

Nói về dynamic là nói về khối đặc tức không phải khối rỗng như một model geometry thông thường – flat surface, CGI để có thể mô phỏng dyanmic thì phải tính trên khối đặc dùng volumetric (openVDB), hoặc dùng Constraint dựa trên Tetrahedra mesh và density. Gốc rễ của các cái này sẽ là point. Nhiều point hay ít point. Các point này kiến tạo thành trọng lượng, mật độ, khả năng các point di chuyển sẽ có vị trí, gia tốc, vận tốc, xoáy quay, góc quay các point bị tác động bởi lực thì thay đổi vị trí thay đổi gia tốc, thay đổi góc quay.

Các xử lý này sẽ dựa trên thời gian và thực hiện các phép toán cộng dồn, nhân dồn để cho ra tổng cuối cùng, mỗi một bước dồn kết quả gọi là Sub Step, bởi vì đặc tính này nên simulation không thể tự dưng ở giữa frame nào đó bất kỳ và chạy ra kết quả, mà nó lúc nào cũng phải chạy ở frame đầu tiên và tính tới kết quả cuối trong một khoảng thời gian. Tổng các point bị ảnh hưởng sẽ tạo ảnh hưởng thành vật thể đặc và chính là một problem đã được SOLVE. Nên trong Houdini hay gọi là SOLVER cho các node engine xử lý dynamic.
Trong Goal của VFX & Animation hay Video Games, dynamic là tốc độ phải nhanh, tạo ra kết quả nịn mắt, chỉnh sửa được bất kỳ, Video Games sẽ bỏ qua nhiều về sự chuẩn xác để đến với nhìn được là ok. Còn với VFX & Animation thì thường phải trông nó lực và có chất (tính chất), nếu là feature thì phải trông nịn mắt và Believable.

SideFX Houdini FX – VELLUM

Hiện tại ứng dụng Vellum trong Houdini FX là dùng phương án Position Based Dynamic, nó cho ra kết quả nhanh, dựa trên density và tính toán va chạm đặc tính của vật thể/vật liệu theo tetrahedral mesh mà phía bên dưới của framework này chính là các point, mỗi point sẽ có kích thước (gấp đôi 1 radius), vị trí của point (x) mật độ của point sẽ khiển được khối lượng của vật thể (cũng vì vậy mà khi chỉnh mass của vật thể cloth trong Vellum Houdini FX, đó chính là giá trị nhân “multiply” cho tổng số lượng point của mesh đó, nên nhiều khi tưởng là khối lượng toàn khối vật thể, chỉnh lên cả mấy chục tấn nên cloth làm việc không như ý), yếu tố thứ 2 sẽ quyêt định motion của cloth là sự tham gia của tổng lực F và vận tốc. Công thức v = (1/m)F. Công thức chuyển động học trong quan hệ đó sẽ là x = v.

Thành phần lớn kế tiếp quyết định Cloth là Constraint – nhìn chung thường nó sẽ dựa trên vị trí, hướng, vận tốc, tốc độ xoáy quay, góc quay. Tuy nhiên với Houdini FX thì nó dựa lên vị trí và và engine rigid body để quyết định các hướng quay. Constraint cũng là dynamic nên nó cũng chính là các phương án chuyển động học. Chính Constraint sẽ giúp Cloth nhìn thật hơn.

Và dĩ nhiên là còn nhiều nữa bên trong Vellum, Vellum chính là engine dynamic tác động để tạo ra Soft Body (ví dụ bong bóng), Grain (hạt cát, cát ướt, mịn, khô … granular), Cloth/fabric (quần áo lụa là vải vóc), Wire/String (dây nhợ), Hair (tóc, lông). Trong Houdini có một cái dynamic khác, xử lý các dạng vật chất nén và ép dẻo gọi là FEM (finite element), cái này khác nữa (ví dụ ép rau câu bẹp dí).
Thế mạnh của Position Based Dynamic là số điểm ít trên một density vật thể cũng như constraint, tốc độ sim không quá chính xác nhưng nhanh, phù hợp với VFX & Animation. Video game không dùng cái này vì nó ko real time (nhưng về method là gần tương tự), cái này nói không chính xác với các nhà khoa học thôi chứ nhìn cũng nịn mắt rồi. Hiện tại Vellum rất nhanh là nhờ có xử lý được qua GPU. Tôi làm cái video đeo áo choàng, bỏ trong bài cho các bạn coi tôi mới tập tành thử. Chia sẻ kết quả tôi làm ra.

Hiện nay mô hình mở rộng của position based simulation là XBPD, trên các nghiên cứu mới với Position Based Dynamic là XPBD tức là cái đã dùng trong phim Disney – Frozen 2, áo choàng của Elsa, nhìn rất thực (xpbd position-based simulation of compliant constrained dynamics)

Ứng dụng giải thích của giải pháp này.

Autodesk Maya – Bifrost

Đối với Maya Bifrost sẽ dùng phương pháp MPM (Material Point Method), cái này là một dạng như PIC/FLIP fluid, nó dùng số lượng hạt thật nhiều để mô phỏng tính năng của vật liệu, cũng dễ hiểu để vì sao Bifrost chọn MPM làm core engine cho xử lý CLOTH vì nền mã của Bifrost chính là Naiad mà Autodesk đã mua lại. Một engine xử lý nước water FX dạng large scale rất hầm hố, nhanh và uy lực. Tôi vọp bẻ với Bifrost nên ko có đủ kiến thức thực hành để chia sẻ với các bồ, nên chỉ dừng ở đây là video cho thấy Bifrost simulation cloth đẹp và nhanh hơn nhiều so với nCloth có sẵn trong Maya.
Houdini FX cũng có một trường đại học đã nghiên cứu và ứng dụng MPM thông qua APIC (cái này tôi có giải thích trong bài WATER FX rồi) – tức dùng engine FLIP FLUID để solve cho các soft body, nhiều artist cũng rất muốn sớm có MPM trong Houdini FX cho dù ở mức độ nhỏ.
Đây là một model quan sát tuyết lỡ dùng MPM https://youtu.be/YQ7e06-MZec
Đây là một paper về Cotinuum MPM xử lý các vật thể dạng đặc, xé rách, rọc…
Tôi vẫn chỉ tập sự, nhưng cơ bản biết vậy để lại note cho đồng bọn cùng nghiên cứu, sau này chỉ lại tôi. Tôi nói sai cái nào ở đăy thì góp ý nhé. Thân.