Siggraph 2025 Paper Ứng Dụng Linh Hoạt Đa Pha Tạo Ra Simulation Chất Lỏng Very Bự

Paper Adaptive Phase-Field-FLIP for Very Large Scale Two-Phase Fluid Simulation

Tóm tắt đơn giản: Các hiệu ứng simulation nước hoành tráng siêu to trông thực tế (fidelity) như sóng biển, thác nước, hay bọt tung tóe rất khó để mô phỏng trong phim ảnh VFX và cinematic game, vì không chỉ có nước, mà còn có khí quyển chuyển động cùng.

Hiện nay, nhiều kỹ xảo phim chỉ dùng mẹo để tạo bọt nước đắp lên thành layer mới, nhưng chưa thật sự đúng với vật lý theo tuyên bố của paper. Với phương pháp PF-FLIP (Phase-Field FLIP) cải tiến mới này sẽ giúp mô phỏng cả nước và không khí một cách rất chân thực realistic, dùng kỹ thuật nâng cao trên CPU để tính toán nhanh hơn, vẫn chính xác cùng tính mở rộng khổng lồ, mà quan trọng là thể hiện hình ảnh rất ấn tượng. Nó cho phép tạo ra hiệu ứng hàng tỷ hạt chuyển động trong không gian ba chiều, chỉ bằng một máy tính làm việc bình thường.

Solver PF-FLIP với MSBG grid được thiết kế để giải quyết một vấn đề rất cụ thể — đó là mô phỏng dòng chảy hai pha (two-phase flow) với độ chi tiết và quy mô cực lớn, chủ yếu phục vụ cho các ứng dụng trong đồ họa máy tính và kỹ xảo điện ảnh (VFX).

Video thực hành của Solver đồng thời xử lý 2 hệ ranh giới “phase” được định nghĩa ở đây là nước và không khí (khí quyển). Trong tiếng Việt gọi là “pha”, ranh giới này được ứng dụng là volume field với một màn ngăn cách linh hoạt thông qua truy xuất trên grid linh hoạt MSBG, một kiến trúc được cho là điểm nhấn quan trọng của nghiên cứu ứng dụng này vào tạo ra Simulation nước mô hình vô cùng khủng “Very Large-Scale”.

Như trong Demo video có thể thấy nhiều khối nước tham khảo video thực tế như đập nước khổng lồ, các cột sóng trong hố nước 420mét hoặc lên tới hàng kilomet.

Theo nghiên cứu này thì việc tính toàn áp lực Pressure, bộ nhân xử lý solver tạo ra simulation chính sẽ được dựa trên một hệ grid linh hoạt, có thể uyển chuyển đóng mở khi cần tăng độ phân giải mà không ảnh hưởng đến hiệu năng. Được gọi là MSBG với phần code được công bố ở đây.

MSBG là Multiresolution Sparse Block Grids (MSBG) library: một thư viện giúp xử lý hệ lưới theo khối đa độ phân giải mang tính rời rạc. Giải nghĩa từng cụm kỹ thuật như sau:

  • Mutliresolution: có sẽ có nhiều tầng chi tiết sâu hay nông tạo cấp độ chi tiết
  • Sparse: mang tính rời rạc, nhưng có thể hiểu ở đây là tính linh hoạt, ở đâu cần chi tiết thì ở đó sẽ được kích hoạt mang nhiều dữ liệu hơn
  • Block grid: là một hệ lưới, tính theo thể tích các khối trong không gian 3D, việc này chia dữ liệu ra để trị, tối ưu hiệu năng tính toán
  • Library: đây là một bộ thư viện giúp cho người dùng nâng cáo có thể tự tạo những bộ tool kit vào ứng dụng phần mềm, ví dụ như Houdini để sử dụng thông qua HDK

Như trong video được giới thiệu là chỉ sử dụng một máy tính để tính toán solve ra kết quả, đồng thời solver tạo ra được cả bọt và bụi nước chứ không chỉ thành phần nước lõi. Mục tiêu để ứng dụng cho đồ họa realistic vào animation, phim ảnh.

Đồng thời, solver này cũng tạo ra bọt, hạt nước mịn và các lực cản không khí với những thể khối nhẹ hơn khi tương tác với không khí.

Liên kết tới trang dự án của Solver simulation nước sử dụng FLIP đa pha, tải về ở đây.

Adaptive Phase-Field-FLIP for Very Large Scale Two-Phase Fluid Simulation

ACM Transactions on Graphics (SIGGRAPH) 2025

Authors Bernhard Braun, Technical University of Munich

Jan Bender, RWTH Aachen University

Nils Thuerey, Technical University of Munich

Tại sao cần mô hình two-phase thay vì one-phase (chỉ nước)?

  • Chất lỏng lớn (water) luôn tác động mạnh lên không khí xung quanh
  • Khi tốc độ cao (v > 10 m/s), không khí tạo thành các dòng xoáy, lớp rối, phản lực
  • Các chi tiết như spray, mist, turbulent air, đều do tương tác nước–không khí, không thể giả lập bằng whitewater heuristic nữa

MSBG (Multiresolution Sparse Block Grid) là một kỹ thuật thiết kế lại hoàn toàn cách xây dựng lưới đa độ phân giải thích hợp cho sim tĩnh / động quy mô lớn:

  • Không cần cây octree (cấu trúc VDB volume): thay vì cấu trúc cây phức tạp, MSBG dùng mảng bình thường tổ chức block theo Morton code giúp truy xuất nhanh và hiệu quả bộ nhớ.
  • Dễ mở rộng & song song hóa: Mỗi block có thể xử lý độc lập → dễ lan truyền quy mô lên CPU đa lõi, GPU…
  • Được thiết kế cho millions ↔ billions particles trong PF‑FLIP trên một máy workstation.

Lợi ích của PF-FLIP + MSBG trong ngành VFX:

Tính năngLợi ích
Phase-field không cần surface reconstructionTiết kiệm chi phí dựng lại mặt nước (meshing)
Adaptive grid (MSBG)Tăng độ chi tiết vùng có chuyển động mạnh, tiết kiệm vùng còn lại
Không dùng cây octree (treeless)Dễ triển khai song song trên GPU
Có thể chạy hàng tỷ particle trên một máy workstationPhù hợp sản xuất phim bom tấn, không cần renderfarm khổng lồ
Mô phỏng real-world scale (sóng, đập nước, v.v.)Realistic hơn bao giờ hết

Thảo Luận

Đây là một đề tài, tôi thích, chúng ta cùng thảo luận làm bạn nhé. Qua nhiều năm làm phim quảng cáo, rồi có ứng dụng kết hợp kỹ xảo vào trong mô hình sản xuất cho khách hàng, ví dụ các TVC chúng ta sẽ cần thấy việc ứng dụng hiệu ứng nước large-scale rất là hiếm, có thể nói gần như không có nhu cầu, thường các nhãn hàng sẽ là nước giải khát, tạo ra các “splash” có kiểm soát và trong thời gian sản xuất cực kỳ ngắn cùng rất nhiều hiệu đính chỉnh sửa li ti lên một frame thiết kế mà ngay cả các agency quảng cáo gạo cội cũng phải rất vất vã để kiểm soát từ creative tới production và cả việc manage client.

Trong Thế Giới Làm CGI Của TVC, Quảng Cáo

Nói về CGI production tạo ra nước, thường sẽ là các splash, hoặc làm đây một mô hình, nhưng theo cách tạo ra nước vẫn là “old school” tức dùng solver như particles để tạo ra nước splash với nhiều tuyệt kỹ thật giả lẫn lộn, kết hợp rất nhiều kiểu thêm mắm muối “tuyệt chiêu” nhỏ giọt từ các CG artist/motion designer kinh nghiệm, xong chờ simulation xong kết quả (có mất 3 phút hay 30 phút thì cũng chờ dữ liệu thô này), trưng lên render, có chỉnh sửa thì làm lại. Ngay cả render ngày nay là real-time cũng phải mất thời gian simulation lại.

Minh họa từ tác giả Hanna Norova

Nói về thương mại là không lợi vì quá tốn kém thời gian, khách chờ, các cấp design, creative chờ mỏi mòn để thấy kết quả, review qua nhiều cấp rồi làm lại.

Và nếu nó là một đoạn phim animation thì càng phức tạp, quá tốn kém do tính không đoán trước được, phải nói đó cũng chính là sân chơi vĩ đại hiện nay mà cũng vì vậy lý do hiện nay AI Video gen phát triển, đang dần dần hiển thị những bức tranh tương lai không biết gọi là u ám hay sáng sủa lên thế giới của designer, CGI artist theo phương thức truyền thống.

Tựu chung, thế giới làm phim quảng cáo, thiết kế làm những hình ảnh, sản xuất animation CGI này gọi là “liquid” cho đồ uống, giải khát, gia vị như nước chấm, nước mắm, hay dầu nhớt. Và cũng cần nó realistic chứ không chỉ như những hình ảnh hoạt họa.

Thế Giới Kỹ Xảo Điện Ảnh Cho Phim Và Video Game Cinematic

Ta có một thế giới khắc khổ khác, gần như ứng dụng toàn những kỹ thuật đồ họa máy tính khó, sử dụng công suất máy tính vô cùng lớn, nhiều nguồn lực chỉ để tạo ra những hình ảnh phim tráng lệ hoặc “lắc kêu”, đôi khi hài hước là lợi ích đem lại bằng thương mại hóa lại rất nhỏ bé hoặc nhiều khi bằng zero thường được trong giới animation, làm phim, làm game nói chung gọi là sống bằng “exposure”.

Nhưng cũng phải nói, chính nhờ thế giới Hollywood, video games mà rất nhiều những công nghệ phát triển đồ họa vượt bậc được tạo ra, sức cạnh tranh khủng khiếp cũng tạo ra vô cùng ý tưởng sáng tạo qua thời gian trở nên không tưởng. Nhờ vậy Siggraph là hội nghị khoa học thường niên càng ngày càng phát triển, tạo nền móng cho rất nhiều nhà khoa học tham gia vào công cụ, giải thuật kiến tạo đồ họa máy tính đủ kiểu từ real-time, realistic production, GPU accelerate, Machine Learning assist….

Simulation nước water fluid flow trong đồ họa là những nghiên cứu rất lâu đời, trãi qua quá trình hình thành vô cùng to lớn, ứng dụng cả thực tiễn vào engineering, xây dựng những công trình đi vào cuộc sống, cứu mạng người như đập nước, bảo vệ an toàn bờ biển, ngăn sóng thần.

Trong thế giới giải trí như phim điện ảnh chúng ta không thể quên những thước phim large-scale về nước được simulation hoành tráng như The Day After Tomorrow hay Perfect Storm và nhiều nữa cho tới thời điểm 2024-2025 từng có phim La Palma với sự kiện sóng thần khủng khiếp ở một nước Bắc Âu được simulation large-scale hoàn toàn bởi studios VFX Gimpville.

Để tạo ra những cảnh large-scale simulation này mà vẫn trông realistic trên màn ảnh tức là CGI animation này trông phải “believable”, thông thường việc sản xuất VFX & Animation luôn tốn kém nhiều sức máy, và kinh nghiệm của các FX TD để:

  • Tăng tốc solve tạo hiệu ứng nước tạo ra kết quả realistic chân thực cho người xem chứ không phải nhất nhất solve physic cho đúng như ngoài đời thật – tức có áp dụng art direction
  • Giảm tối đa sử dụng bộ nhớ tạm của từng máy trạm
  • Linh hoạt và thông minh setup bằng các công cụ giúp procedural rig scene nước
  • Giảm thiểu tối đa tiêu tốn ổ đĩa cứng chứa dữ liệu cấu trúc tạo hình hiệu ứng FX nước gồm nhiều lớp lang kiến tạo thành

Và kết quả mà trả về trong ngày được ngay cho đạo diễn xem, có ý kiến, chỉnh sửa thay đổi sớm thì đó là tiết kiệm cho cả studios VFX có lợi nhuận, nếu không cũng gia nhập làn sóng đóng cửa sớm, thu nhỏ sớm với xu hướng chung hiện nay. Thường thì người ta sẽ sử dụng Houdini cho thời điểm này.

Chia sẻ với các fan hâm mộ FX TD thì ad cũng đã làm những setup như vậy, và đây là một cái demo large-scale khổng lồ tạo nước (chắc chắn là hàng production chứ không phải một tutorial nào đó), setup này wrangle trong ngày và có kết quả luôn cho làm kỹ xảo ứng dụng simulation nước điện ảnh, cinematic. Chỉ chạy trên một máy tính.

Vào trong thực tế sản xuất, ta sẽ có rất nhiều shot, một setup water FX linh hoạt thế này sẽ giúp rất nhiều cho việc sản xuất nhanh, giảm chi phí đầu tư, giảm rũi ro mà quan trọng nhất tăng được thời gian sáng tạo cho đạo diễn, cho producer và các cấp tham gia. Một rig setup thế này cũng cần FX TD có kinh nghiệm sản xuất thực tham gia thực hiện, nó lỗi thì cũng phải có người hiệu đính, thay đổi nhanh.

Điều đó liên quan gì cái paper ở trên và nếu ta tạo thành một toolkit hay HDA sử dụng nâng cấp FLIP hiện tại cho SUPER LARGE-SCALE được không. Ta có thể hiểu, thường một FX simulation nước như thế này sẽ gồm các chức năng như sau:

  • Tạo ra được các bề mặt tương tác cho nước
  • Thiết kế hình dạng khối nước bắn tung tóe
  • Định hình khối nước của phần mặt nước tạo thành các chi tiết render
  • Các hiệu ứng bọt bám vào nước
  • Các hiệu ứng giọt nước bắn theo các quỹ đạo của nước
  • Kiểu bọt nhỏ li ti như sương
  • Hệ thống không khí cản nước
  • Các tác nhân làm cho nước bị bám vào bề mặt và trượt xuống
  • Các kiểu nước như tháo nước tạo thành thác nước sau khi phần splash nước đã bắn tung tóe áp vào
  • Khả năng ráp nhiều solver với nhau để simulation ra realistic khi có thể sử dụng được thuộc tính động của nhau tạo ra hiện tượng hiệu ứng FX chung

Paper này giúp tạo ra được một scene simulation nước siêu khủng lên tới 1km chiều dài và chỉ trên một máy tính. Không cần simulation farm, siêu máy tính, chỉ một máy tính của các đơn vị làm phim quảng cáo thường dùng để sản xuất kỹ xảo CGI VFX hậu kỳ đã hoàn toàn xử lý được trong thời gian rất nhanh, mà còn có thể tinh chỉnh từng hành vi biến thể của nước, điều này AI gen chưa làm được.

Chiều dài 1Km nước với tất cả thành phần từ nước, bụi nước, bọt nước trong một thời lượng đáng nể

Như vậy ta sẽ thấy thường có: nước và không khí. Các thành phần này theo phương án hiện nay làm là riêng biệt, xét không khí bằng 0, FLIP solver có trong Houdini chỉ tính SOLVE phần nước trên một hệ grid theo dạng volume và được gọi là field “surface”, field “velocity”, field “divergence”, field “pressure”…các particle nằm trong các field này sẽ được chuyển dữ liệu từ Particle sang Grid, FLIP sẽ solve và sau đó trả kết quả về để particles được advect bởi dữ liệu của field. Như vậy gọi là FLIP một pha.

Trong paper trên, ta có FLIP tính đa pha, cụ thể là 2 pha, Two-phase FLIP đây là một cách nâng cấp linh hoạt tích hợp nhiều pha cùng tính sự chuyển động của chất lỏng sao cho thật nhất Phase-Field FLIP (PF-FLIP) là kết hợp cả nước và không khí vào cùng tính SOLVE tạo ra visual thật realistic. Có kháng không khí, có sự tạo ra nổ tung của không khí khi ma sát, có các bọt nước tự tạo ra một cách tự nhiên do cột nước hình thành trong khí quyển tác động lực giữa các pha.

Nhưng giải pháp của họ không phải để tạo ra một chất lỏng cỡ nhỏ như trong làm phim quảng cáo, mà họ muốn có những kiểu hàng kilomet về kích thước, tức nếu nói về large-scale thôi chưa đủ, phải nói về Super Large-scale – tạm gọi “siêu khủng” hay “siêu to khổng lồ”. Chỉ chạy trên một máy tính.

Để làm được tính năng chỉ chạy trên một máy tính CPU, họ đã không dùng cách thức của FLIP truyền thống, là sử dụng Level-set VDB (volume field) mà dùng một hệ gird hoàn toàn mới, tự tạo ra là MSBG Multiresolution Adaptive Block Grid. Trang dự án riêng và source code của MSBG.

Riêng cái chữ Spartial Adaptive là có thể hiểu nguồn lực chi tiết chỉ tập trung vào chỗ cần ưu tiên, các chỗ khác sẽ có độ phân giải thấp hơn, vậy là đa độ phân giải. Cái này Adaptive Pressure Solver trong Houdini 18.5 có từng nêu ra khi tạo chất nhầy bằng FLIP. (1 là chi tiết tăng, 2 là chi tiết đơn giản) như vậy chỗ thưa thớt chỗ dày đặt thì gọi là sparse (rời rạc) nhưng có chữ adaptive tức tương thích với điều kiện cần.

Spatial Adaptive

Như vậy với vũ khí mới, là MSBG ta có thể so sánh với FLIP truyền thống.

Khác với FLIP truyền thống:

  • FLIP gốc thường mô phỏng chỉ một pha (nước), không quan tâm tới không khí.
  • PF-FLIP mô hình hóa cả 2 pha qua:
    • Particle types: mỗi hạt được gán là “liquid” hoặc “air” ngay từ đầu, giữ nguyên suốt mô phỏng.
    • Mass and momentum transfer từ particle → grid → particle đều tôn trọng phase.
    • Two-phase pressure projection: giải bài toán Poisson với hệ số thay đổi theo từng pha, nhờ vào phase field.

Bản chất FLIP vẫn giữ:

  • Kết hợp Eulerian grid (áp suất, gradient) và Lagrangian particles (vận tốc, khối lượng).
  • Không cần re-meshing, không diffusion, không neighborhood search — nhưng thêm một thành phần Phase Field để nhận diện rõ ràng pha nào đang ở đâu.

PF-FLIP được dùng để tính pha và khác với một chức năng SDF từ volume truyền thống là xác định cái gì bên trong sẽ âm, cái gì bên ngoài volume sẽ 0 và dương. Phase field được xác định từ đầu trên mỗi particles đó là không khí khí quyển hay nước. 0 là khí quyển và 1 là nước. Và vì dùng hệ lưới MSBG nên sẽ không nặng như VDB theo kiểu level-set là theo dạng cây nhị phân octree mà lại mang được lượng dữ liệu đa độ phân giải khổng lồm, lên tới tỉ particles cũng như trong quá trình PF-FLIP solve không hề tạo surface mesh, điều này tăng đáng kể hiệu năng simulation nước.

Tôi có một cảm nhận cá nhân đâu đó trong tương lai Houdini phiên bản 21 22 có khi chúng ta sẽ có cái chức năng này cho FLIP solver của Houdini.

Chưa dừng lại ở đó, họ cũng giới thiệu cánh tính toán pressure FLIP mới được gọi là PDE solver, cái solver này kết hợp với các engine chiến lược như MSBG sẽ tạo ra được cả spray, mist với một thể tích khổng lồ.

Ta có thể thấy họ dùng chính photo ráp vào tham khảo coi tỉ lệ mô hình người, và chỉ mất 40 giây để xử lý mỗi time step với tất cả thiết kế khí động học, khí quyển, nước tương tác.

Để đạt được đâu là khí quyển và đâu là nước, họ đã áp dụng phương pháp tính mật độ của các particles trong quá trình chuyển Particle sang hệ lưới Grid, thọc vào trong code mã nguồn ta có thể thấy đoạn code qui định để biết được các pha, đồng thời dẫn trong paper trang 6 và 7.

φ(x) = clamp((ρ(x) - ρ_air) / (ρ_water - ρ_air), 0, 1)
 

Đồng thời sẽ áp dụng công thức tính pressure của FLIP với phương pháp của họ là PDE được tính hiểu như sau dựa trên biểu thức phân kỳ (giãn nén của chất lỏng) theo mỗi step tính, phần áp lực sẽ tạo ra kết quả lên particles của pha đã được định nghĩa từ kết quả các bước tính thuộc tính chuyển động (ví dụ trọng lực, thả nổi, vận tốc, có tương tác, lực ngoài …). Và sau đó sẽ cập nhật lên hạt, việc làm này gần tương đương với cách đã xử lý particle theo phương án SPH do FLIP thông thường gọi p = 0 nhưng trong cách tình PF-Flip ta có các khí quyển liên tục thay đổi, mật độ thay đổi nhiều, nên bước tính PDE pressure này giúp mô tả tương tác giữa nước và khí quyển.

Trong tài liệu được ghi là: Pressure Poisson Equation with variable coefficient hay “Elliptic PDE with discontinuous coefficient (1/ρ)”. Chữ D là đại diện cho đạo hàm “Differential” cũng là Divergence trên ô lưới, trung tâm của FLIP và mọi hệ simulation chất lỏng dựa trên numeric theo dạng incompressible fluids. Tính độ co giãn của nước. (Tài liệu của MIT Opencourse về phương pháp tính pressure cho fluid flow với link ở đây)

Mỗi hạt chỉ mang thông tin vận tốc, khối lượng, vị trí. Trong Houdini ta có các attribute @P, @mass hay phần @density (thường thêm vào solve FLIP sẽ nặng hơn), @v

Sau đó Rasterize Particles này lên Grid để tạo ra field vel , từ lúc này sẽ tính được divergence field tức particles có nằm ngoài ô đó hay không. Độ phân giải của mỗi ô sẽ làm bước tính này chi tiết hơn. Nếu particles này tràn ra khỏi ô, FLIP cơ bản sẽ hiệu đính lại thông qua phương án tính áp suất dựa trên divergence vừa có để ép cân bằng lại cho hạt, việc này gọi là thao tác “correction”.

Nếu dùng Houdini để tính phase bằng phương án đơn giản Particle To Grid, ta có thể áp dụng như sau dựa trên VDB là tập level-set do Houdini không có sẵn hệ grid được tính theo kiểu MSBG, việc này có thể cân nhắc để mò theo code nguồn C++ của MSBG và build một toolkit từ Houdini Development Kit trong tương lai, nhưng trước mắt đây là kết quả để xác định được phase bằng Houdini.

Trong paper có nói cách xử lý các value này

Chúng tôi gán các cell có giá trị phase field dưới 0.5 là ‘air’, còn lại là ‘liquid’. Với các mặt giữa hai cell toàn nước, gán φ = 1; giữa hai cell toàn không khí, gán φ = 0; còn lại xử lý như “interface”

<Bài vẫn đang viết tiếp, vừa viết vừa nghĩ cách ứng dụng vào Houdini nên chưa có trật tự. Các bạn theo dõi hoặc đóng góp ý kiến tạo thành tool Houdini mời vào group YêuFX & TD trên Fb>

Chung qui engine chính của paper này là MSBG, phương pháp xử lý SOLVER chính của paper này là PDE dựa trên phương pháp FLIP truyền thống được xử lý theo pha nên được gọi là PF-FLIP (Phase Field FLIP).

Post Author: Vu Pham