Học Tập Bifrost Fluid Simulation Của Maya

Đây là Bifrost, một plugin về fluid simulation của Maya, rất mạnh mẽ và tiềm năng, được Autodesk sát nhập bản thân gốc là phần mềm fluid simulation Naiad. Chuyên trị FX cho vfx/animaiton.Một số demo của các sinh viên cách đây 2 nămThêm một sản phẩm của người dùng cách đây 1 nămVà đây là demo của Bifrost mới nhất hồi cuối năm 2019

Cài Bifrost Từ Maya

Khả năng của Bifrost rất mạnh mẽ, không chỉ tập trung vào các chức năng chất lỏng, nước ở mức độ large scale nữa mà giờ đang mở rộng ra rất nhiều qua các mảng như khói, lữa, tuyết, cát, soft body, rigid body…

Cách để học Bifrost thì đầu tiên là phải có Maya, xong cài chức năng extra feature Bifrost vào – là một plugin, tùy theo mỗi phiên bản Maya sẽ có build extension pack để có thể cài được Bifrost. 

Thông thược thì kích hoạt qua menu plugin. Đây là cách làm từ Autodesk:

https://knowledge.autodesk.com/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2019/ENU/Bifrost-MayaPlugin/files/Bifrost-MayaPlugin-load-bifrost-plugin-html-html.html

Tải Bifrost về máy cho Maya: liên kết tới tải Bifrost miễn phí.

 

Khái Niệm Về Bifrost

Để học về các phần mềm FX nói chung thì phải truy cập vào khái niệm lý thuyết, vì thông thường học tạo ra FX sẽ có liên quan đến toán và lý. Ở đây mang tính ứng dụng nên thường toán sẽ sử dụng hình học và đại số. Các toán này đều là toán lớp 10, lớp 11. Các bạn hoàn toàn có thể lấy ra coi lại một cách dễ dàng.

Các bạn có thể tham gia group Yêu FX & Houdini để đọc toàn bộ tài liệu hỗ trợ làm VFX ngay trong post đầu tiên của group, đỡ phải đi mò tài liệu coi bắt đầu từ đâu và làm FX gì.

Cụ thể thì toán chính là vector sẽ dùng nhiều nhất sau đó thì đến lượng giác.

Về Bifrost đây là một tool tạo ra các kết quả theo dạng procedural, có nghĩa là có thể lặp lại, tái sử dụng, có một cấu trúc không phân hủy. 

Bản thân Bifröst là một procedural framework (mang tính hệ thống) để có thể tạo ra các hiệu ứng về nước khi dùng FLIP solver (fluid implicit particle – chất lỏng mang tính chất của hạt, tìm hiểu công thức và lý thuyết qua tài liệu nghiên cứu). Để tạo ra chất lỏng thì cần dùng emitter (nguồn phát tán) và đặt để đối tượng Gravity (giả lập lựct hút trái đất – trọng lực) để chất lỏng tự rơi xuống sau đó sẽ tương tác va chạm (interact collision colliders) với các vật thể để nhằm mục đích chỉ đạo/đạo diễn nước chảy theo ý cũng như tạo ra sự tung tóe nước bắn lên (splash), kết hợp gia tốc (accelerator) để tạo hiệu ứng phản lực (jet) và các hiệu ứng thêm. 

 

Hiệu ứng môi trường, toàn bộ tuyết được tạo ra bằng cách sử dụng Bifrost, sản phẩm là phim quảng cáo game Skyrim trên Playstation của hãng VFX lớn THE MILL. Các phần còn lại thực hiện với Houdini, phía The Milll đã đem Bifrost vào Houdini xử lý thông DOP.

Tạo ra một vụ large scale nước tấn công thành phố, click vào hình dẫn đến tutorial

Bifröst Đối Tượng (Objects), Nodes, Và Thuộc Tính (Attributes)

Hiệu ứng của các simulation Bifrost được khiển bởi rất nhiều các thuộc tính (attribute) và các đối tượng khác nhau thông qua sử dụng node trong một scene. Khi biên tập và hiệu chỉnh simulation, cần phải gia giảm hiệu chỉnh các attribute ở các nơi khác nhau.

Có ba đối tượng tham gia vào simulator (việc tính toán gọi là simulation, simulator là đối tượng tính toán, ở đây chính là Bifrost):

bifrostShape đối tượng được biết đây là node sẽ giúp tạo ra dữ liệu chính bởi Bifrost. Có thể chọn ngay trên viewport thông qua bounding box. Có thể render và hiệu chỉnh về tính hiển thị ngay trên viewport. Đối tượng này mang tính đại diện về dữ liệu trên tọa độ world space và sự xuất hiện của Bifrost vào scene nên việc di chuyển vị trí của đối tượng không ảnh hưởng đến simulation.

bifrostLiquid đối tượng này giúp chứa mọi thành phần liên quan node bifrostLiquidContainer (chứa nước), đây là bảng điều khiển chính của simulation để hiệu chỉnh tỉ như độ phân giải của voxel (voxel là đơn vị của một volume, volume là khối và là tính chất quan trọng chủ lực của mọi phần mềm simulation nước, khói, lữa …), tính được vector của trọng lực. Nó hiển thị là một icon nhỏ trên viewport. Như đối tượng bifrostShape, di chuyển icon này không mang ý nghĩa di chuyển simulation.

bifrostMesh đối tượng này là một khối mesh polygon, sẽ được dùng để xây dựng ra mesh polygon bề mặt chất lỏng nhằm mục đích xuất ra từ dữ liệu simulation (FLIP – tức là dạng hạt, khi đã simulation xong thì phải build ra mesh, nếu không nó chỉ ở dạng hạt). Theo mặc định, đối tượng này sẽ không build polygon cho đến khi bạn kích hoạt chế độ meshing. Đối tượng này khi di chuyển sẽ thay đổi vị trí simulation như bất cứ mô hình nào trong scene.

Về vấn đề mesh mô hình trong Bifrost, có rất nhiều đối tượng mesh sẽ tham gia vào quá trình simulation. Tỉ như mesh được sinh ra từ đối tượng phát tán, mesh đại diện cho vật tính toán va chạm (collision) và mesh đại diện cho vật chuyển động (như là nhân vật di chuyển). Khi người dùng đưa một mesh vào trong simulation, một phần thêm của Bifrost sẽ được đưa vào các node. Người dùng có thể hiệu chỉnh hiệu ứng/tính chất của mesh thông qua các thuộc tính attribute để mang tác động đến simulation.

Có Hai Dạng Cache

Việc thực hiện simulation là tính toán, Bifrost sẽ thực hiện và cần lưu dữ liệu đã tính toán đó lại, lúc này dữ liệu lưu lại cần được lưu xuống đĩa cứng để sau đó sẽ load lên lại mà không cần phải tính toán lại. 

Có hai dạng cache khác nhau ngay bên trong Bifrost:

Cache tạm thời (scratch cache). Được sử dụng để đẩy nhanh quá trình playback và cho phép thay đổi vị trí timeline (trượt) để xem sự thay đổi của simulation (các volume) ở dạng phân giải thấp tới trung bình (high Master Voxel Size – tức làm to các voxel – voxel càng to thì độ phân giải càng thấp). Cache tạm thời này build ngay trong quá trình làm việc/thử nghiệm simulation, nó được build khi bạn quay lại frame 0. Việc thực hiện simulation luôn cần frame trước rồi mới tính được frame kế tiếp từ frame trước nên việc quay lại frame 0 thì mới tính được toàn simulation (frame hiện tại -1). Cache tạm này sẽ lưu tạm vào ổ cứng trên máy, sẽ bị xóa đi sau khi ngưng không dùng phần mềm hoặc đóng scene. Để không bị ùn ứ ổ cài đặt Maya khi loại cache này được chứa, bạn nên di chuyển chỗ chứa cache tạm thời này sang một ổ cứng khác tốc độ cao và dung lượng nhiều. (tìm hiểu thêm về cache tạm thời qua link sau)

Cache tạo ra bởi người dùng (user cache), đây là loại cache chính để chứa các simulation sau khi đã hiệu chính các tính toán và tham số cài đặt mong muốn. Nghĩa là simulation có thể được load lên từ đĩa cứng và không cần phải thực thi tác vụ tính toán lại – gây mất thời gian. Thông thường sử dụng cache ngay sau khi thỏa mãn với cài đặt về simulation cũng như tăng độ phân giải volume lên thật cao để cho ra kết quả đẹp (low Master Voxel Size – tức làm mịn Voxel, kích thước Voxel càng mịn nhỏ thì độ phân giải càng cao, thời gian sim càng lâu, cần phải cache vào đĩa). Các cache người dùng này sẽ được chứa xuống đĩa thành các file, thông thường ghi vào vị trí thư mục cache/bifrost/ ngay trong thư mục dự án. Liên kết tìm hiểu thêm về Cache của người dùng

Bifrost Server

Bifrost là một plugin nằm bên trong Maya, tuy nhiên tác vụ xử lý của Bifrost về mặt hệ điều hành cần phải được tính toán ở cấp hệ điều hành do các tác vụ nặng về tính toán.  Phần tính toán này có tên là Bifrost Computation Server. Khi tác vụ này xử lý dưới nền (background) sẽ giúp cho Maya xử lý được tương tác trên các frame, cũng như cho phép Maya giúp người dùng điều khiển được timeline, như trượt timeline xem kết quả.

 

Đơn Vị Đo Lường Và Tỉ Lệ Theo Thế Giới Thực

Khác với các bộ môn khác có trong thiết kế tạo hình Maya, Bifrost và các phần mềm FX khác đều cần dùng kích thước tỉ lệ theo đo lường thực tế để làm việc. Mọi đơn vị đo lường về vật lý, ước tính số lượng về vector và mật độ (density). Điều này cho phép kết quả được tạo ra sẽ thực tế, kết quả là đoán trước được ở mọi qui mô scene và chiết tính thời gian (time steps).

Thuộc tính attribute bên trong Bifrost luôn cho tỉ lệ trên một đơn vị mắt lưới (grid) sẽ bằng một met. Như vậy có nghĩa là phần đã cài đặt về đơn vị tính Working Unit ngay trong bảng Settting Preference của Maya sẽ được bỏ qua. Lấy ví dụ mặc định gia tốc tương phản với trọng lực là 9.8, đây là thông số thực tế của thế giới thực qua đơn vị mét/s2. Người dùng cần tự chuyển đổi về đơn vị met để phù hợp với Bifrost.

Lấy ví dụ nếu như scene đang được thiếp lập là 1 đơn vị có kích thước 1 centimet, vậy thì cần thay đổi đơn vị giá trị của độ lớn trọng lực Graivity Magnitude ngay trên bifrostLiquidContainer sang 980 (9.8m/s2 = 980cm/s2). Điều này sẽ có thể tạo ra vài vấn đề liên quan đến velocity tốc độ cao tham chiếu đến các kích thước của voxel, lúc này người dùng cần phải thay đổi các giá trị về transport step. (xem cách vận hành cài đặt về độ phân giải và sự chính xác của Bifrost)


Cùng với cách hiểu như thế, người dùng nên thay đổi mật độ của nguồn phát tán emitter. Mặc định là 1000, đây là thông số chuẩn của mật độ có trong nước tính theo kg/m3. Cho một tỉ lệ là 1cm, người dùng cần thay đổi sang 0.0001 (1000kg/m3 = 0.001kg/cm3, hoặc 1gram/cm3)

Các Tài Liệu Xem Và Học Bifrost Nhằm Tạo Ra Hiệu Ứng FX

Post Author: Vu Pham