A complete description of the Underwater dynamics Maya plugin me and my partner sohail worked on during our Masters is presented below.
Underwater Rigid Body Dynamics
A Maya Plugin
Sohail Mehra
Vivek Reddy
Based on:
Underwater Rigid Body Dynamics
Steffen Weißmann, Ulrich Pinkall, TU Berlin, SIGGRAPH 2012
CIS 660 – Advanced Topics in Computer Graphics and Animation
Instructor: Dr. Stephen Lane
PROJECT SUMMARY
Our authoring tool aims to simulate a rigid body’s motion in a fluid without having to create the actual surrounding fluid particles. We show that such motions can be realistically generated by simply replacing the usual inertia tensor and scalar mass by a Kirchhoff tensor.
According to Weißmann & Pinkall, many real scenarios (sinking bodies, balloons) can be matched using a single, hand-tuned scaling parameter. Furthermore, the method that they describe in their paper can be easily integrated into an existing physics engine, which makes underwater rigid body dynamics run in real time. For our project, we will look to integrate our simulation with the open source Bullet Physics library.
The simulation, here, depends mainly on the correct computation of the Kirchhoff tensor, K, which is essentially the sum of the body tensor, KB, and the fluid tensor, KF. KF depends only on the shape of the body and is completely independent of its material realization as captured by the mass and inertia tensor of the body.
In order to do this, we will first compute the kinetic energy of the rigid body in vacuum. After which, we will calculate the kinetic energy that would have been caused by if a fluid had existed.
For the simulation, we envision fluid-body interactions such as viscosity, drag forces, and buoyancy. Users will be able input and modify these parameters at any time during the simulation. Additionally, the user will be able to vary the output by selecting a scaling factor for the computed Kirchhoff tensor.
Given these values, we plan to compute the appropriate forces and torques at every time step acting on the rigid body using the equations of motion described in the algorithm details section (2.1.1).
- AUTHORING TOOL DESIGN
- Significance of Problem or Production/Development Need
The motion of rigid bodies in vacuum has been studied extensively over the years. More recently, however, studies dealing with the motion of rigid bodies inside a fluid, like water, have become more abundant. An obvious way to simulate the aforementioned motions is to create a fluid using a particle-based technique, immerse the object of interest within the particle system, and observe the interactions between the two. It is evident that adopting such an approach would be a computationally expensive affair. Many researchers have proposed a wide array of possible solutions to combat this problem. Although, none thought of using Kirchhoff’s fluid-body model until Weißmann & Pinkall published the paper “Underwater Rigid Body Dynamics” at SIGGRAPH 2012. Their paper shows that the motion of rigid bodies under water can be realistically simulated by simply replacing the usual inertia tensor and scalar mass by a Kirchhoff tensor. This allows users to model fluid-body interactions in real-time without the need to generate the surrounding fluid at all.
- Technology
For this project, we directly explore and apply Kirchhoff’s tensor principles published in 1870. His model, though well known, has yet to be applied in the field of Computer Graphics and Animation. We hope to be the first ones to successfully implement his work as a basis for real-time simulation of rigid bodies immersed in a fluid.
Furthermore, we look to integrate our simulation with the open source Bullet Physics library. Disney Animation Studios contributed their in-house Maya plugin called ‘Dynamica’ to the Bullet project. This Dynamica plugin was used for physics special effects in the creation of the animated feature Bolt and is vastly used in physics simulations at major studios.
- Design Goals
Although, our tool is primarily targeted towards artists, technical artists, animators, game designers, and researchers, we want to it be simple, intuitive, and easy enough so that even a casual Maya user could take advantage of its features. Additionally, we envision our tool as dynamic and interactive. We want users to be able to set or modify certain attributes and be able to instantly see the effects on their simulation.
- Target Audience
- The target audience for our tool includes artists, technical artists, animators, game designers, and researchers.
- User Goals and Objectives
- The user can simulate realistic, real-time underwater motions for any rigid bodies without the need to create actual fluid particles/containers.
- The user will be able to modify a number of parameters to generate a diverse set of motions for any rigid body.
- Tool Features and Functionality
- Underwater Simulation
- Our authoring tool is directly integrated into the Bullet Physics Dynamica plugin. Users will be able to leverage all of Dynamica’s original functionality along with the new options added by us. Our underwater simulation feature takes a rigid body mesh as input, and enables users to set/ modify parameters, such as fluid properties and object properties, so that they can obtain their desired output.
- Tool Input and Output
- Input:
- To start off, the user will need to either create new mesh in the scene or load a pre-existing one for the simulation.
- The user may even choose predefined primitives such as spheres or cubes.
- There is also on option to create arrays of objects for the simulation.
- By selecting appropriate options in the underwater dynamics menu the mesh is set for underwater motion and collision detection.
- The user interface for the URBNode will allow attributes such as fluid density, viscosity, buoyancy, drag, Kirchhoff scaling factor, additional forces and torques, and object properties (mass, etc.), to be tweaked.
- Output:
- The tool will output a robust, dynamic, interactive, and real-time simulation of a rigid body’s motion in a particular fluid given a mesh and certain input parameters.
- The authoring tool supports the .fbx format to save simulation data and/or use it in other Maya projects.
- In order to do this, the user will first need to bake the simulation onto the object using the Bake options in the Dynamica menu.
- User Interface
- GUI Components and Layout
Our plugin has a minimal and simple user interface and workflow. Furthermore, it will be integrated directly into Dynamica’s GUI which designed like any standard Maya interface, thus making it familiar and easy to use. The user will be able to set or modify several attributes and parameters at any time during the simulation through our URBNode as shown below:
- User Tasks
Our tool’s user interface is integrated directly into Dynamica’s GUI which is designed like any other standard interface in Maya. A user familiar with the software should have no trouble navigating the options. The user must import or create a rigid body mesh for the simulation.
A mesh that is imported simply needs to be selected before clicking on the Mesh option in the Underwater Dynamics tab to set it up for the simulation. Primitives, like spheres or cubes, can be automatically created by clicking either of those options in the aforementioned tab. In addition, users may also choose to create arrays of objects for the simulation. Lastly, users have the option to bake their desired simulation on the mesh and export the animation in the .fbx format for future use.
- Work Flow
- Load the Dynamica plugin (DynamicaPlugin.mll).
- The plugin will create the Dynamica menu options for the user.
- Create or load an existing mesh that will be used in the simulation.
- Select or create object in the scene to behave as passive bodies for simulate collisions
- Select the mesh, and click the Mesh button in the Underwater Dynamics tab or alternatively, automatically create primitives for the simulation by clicking either the Sphere or Box buttons in the same tab.
- When the node is ready (i.e. its Kirchhoff tensor and collision data have been created), the user can simply play the animation.
- If the aniSmation does not match the user’s expectation the user may choose to tweak the parameters through the provided UI until the desired output is achieved.
- Authoring tool development
- Technical Approach
- Algorithm Details
Consider a rigid body in 3-dimensional space. This body, when in motion, will possess a certain amount of kinetic energy. This kinetic energy is comprised of two components, linear and angular, and is described by the equation that follows:
Where J is the inertia tensor and w is the angular velocity.
However, this equation can only represent the kinetic energy of a body in vacuum and does not consider the contributions of any surrounding medium.
Moment of inertia accounts for how much a body will resist rotation. For a body in three dimensions, we usually represent this as a 3×3 inertia tensor. The inertia tensor is used to find the kinetic energy of a body using the relationship shown above.
In our approach, we will attempt to simulate a rigid body immersed in a fluid medium without simulating any of the fluid particles.
The simulation depends mainly on the correct computation of the Kirchhoff tensor, K, which is essentially the sum of the body tensor, KB, and the fluid tensor, KF. Every rigid body’s properties in vacuum will be described by a unique Kirchhoff tensor represented by KB. But, in order to approximate the effect of the surrounding fluid, an additional KF tensor needs to be computed. The fluid tensor, KF, depends only on the shape of the body and is completely independent of its material realization as captured by the mass and inertia tensor of the body. Therefore, the final Kirchhoff tensor for the simulation is computed as follows:
Once we have the values K, we can simply replace the normal inertia tensor and the scalar mass of the body with the Kirchhoff tensor.
To calculate the values of the fluid tensor, KF we consider the rigid body’s boundary. In doing so, we define certain boundary points on the outer layer of the rigid body. Let the body be called B. Then, ΔB is a small part of the body under consideration. If z is a boundary point of the body and z ε B, then at the point z we define a condition – “At each boundary point z, the fluid velocity needs to have the same normal component as that of the body velocity.”
After specifying this condition, the next step is to find the scalar potential at all points along the boundary. Scalar potential is important to calculate the forces acting on the body, and hence helps find the linear and angular momentum acting on the body due to the fluid. Having computed the linear and angular momentum, we can calculate the fluid tensor KF.
To find scalar potential we use the following equations:
According to the potential theory, it is important to have point sj be inside the body, which is done by taking a point on the boundary and then projecting it in the direction of normal.
The above equation represents the mathematical form of the condition set earlier.
The following integral is used to get the linear and angular momentum due to the fluid:
Once the angular and linear momentums are calculated, we can easily find the fluid tensor and hence get the motion of the body in underwater.
Equations of motion to be used for integration:
- Maya Interface and Integration
All graphical user interface components of our tool will be directly incorporated into Dynamica’s GUI and designed to look like any standard interface in Maya, they will be created using MEL. The plugin itself will be implemented using Maya’s C++ API and will add functionality to Dynamica’s source code. Specifically, our code will add a new underwater dynamics tab to the menu. We provide options for the user to quickly and easily run simulations using primitives like spheres or cubes while also allowing user to import or create their own mesh. Upon creation of the rigid body, the user can adjust a number of parameters to obtain the desired output. The specific Maya nodes and classes used to do this are described in the following section.
- Software Design and Development
In our software design we build on the base code from the bullets maya dynamica plugin. The main nodes we use from the dynamica node are time,dsolverNode, dcollsionShapeNode and drigidbodynode.
Dsolver node is the node which calls the addexternaforce and addexternaltorque to the bullet code. Our goal is to solve for the new external forces and external torques and send it to the solver node without affecting the normal operation of the dynamica plugin.
Kirchoff tensor needs to be computed only during the being of the simulation and it depends only on the shape of the object. Therfore we implemented the computation of the 6 cross 6 matrix inside the collision shape. We added a flag such that only when the user clicks on the underwater body , then only our code gets executed. While calculating the tensor we needed to compute the inverse of a matrix and hence we used the Svzmatrix.h header file from CIS560 assignment.
Once the tensor is calculated ,another tensor called the drag tensor is also calculated. Both these matrices are stored as Mfloatarray .
A new node called “dURBNode” is added. In this node we use the tensor values, we get the current linear and angular velocity of the body and compute the new forces and torques to ac t on the body . This node is computed every time step by connecting to the time node. The newly calculated forces and torques are sent to the solver node, to get the underwater motion .
- Target Platforms
- Hardware
- (32-bit/ 64-bit) Intel® Pentium® IV or higher, AMD Athlon® XP processor
- 2 GB RAM
- Hardware-accelerated OpenGL® graphics card
- Software
Our authoring tool will be developed on Maya 2013 with support of the Bullet Physics Engine. The system requirements for our tool should be equivalent to the system requirements for Maya 2013 as listed below.
The 64-bit version of Maya 2013 software is supported by any of the following operating systems:
- Microsoft Windows 8 operating system
- Microsoft Windows 7 Professional operating system (SP1)
- Microsoft Windows XP Professional x64 Edition (SP2)
- Apple® Mac OS® X 10.7.x and 10.8.x operating system
- Red Hat® Enterprise Linux® 6.2 WS operating system
- Fedora™ 14 operating system
- Software Versions
- Alpha Version Features
The alpha version of our authoring will include a functional user interface and appropriate connection of attributes between all required hyper-graph nodes.
- Beta-1 version Features
- Computation of the Kirchhoff tensor correctly integrated within Dynamica.
- Basic set up of the user interface with modifiable parameters.
- Beta-2 version Features
- Support for additional forces such as drag and buoyancy.
- Support for arrays of rigid bodies.
- Beta-1 version bug fixes.
- Descriptions of Any Demos or Tutorials
Final demos will include simulations of the following objects:
- Coins
- Balloons
- Primitive objects – cubes, spheres, cylinders, cones
- Work Plan
3.1 Tasks
- Study the source code for Bullet Physics Engine extensively.
- Build Framework
- Implement user interface (MEL)
- Add a new Underwater Dynamics tab to Dynamica’s UI
- Add options to create primitives for the simulation
- Add option to select a rig a mesh for the simulation
- Implement node plugin framework (C++)
- Design and integrate URBNode into Dynamica’s existing node structure
- Underwater Simulation
- Compute body kinetic energy tensor
- Analyze mesh data and create body boundaries for computation of scalar potential
- Compute scalar potential over the boundary points
- Set constraints for fluid and body velocities based on input parameters
- Calculate the fluid kinetic energy tensor
- Express the Kirchhoff tensor as the sum of the previously computed tensors
- Use a suitable integration scheme to simulate motion (either the Bullet Physics solver or a Euclidean Lie Group solver)
- Add additional forces such as drag and buoyancy
- Add support for multiple rigid bodies at a time i.e. arrays of rigid bodies
- Testing and Debugging
- Final Renders
- Render basic samples that showcase the simulation for different objects and parameters
- Render sample simulations in a high quality underwater environment
- Implement user interface (MEL)
3.1.1 Alpha Version Features
The alpha version of our authoring tool will include a functional user interface and appropriate connection of attributes between all required hyper-graph nodes.
- Beta-1 version Features
The beta-1 version will have a basic working prototype of the underwater rigid body simulation. The user interface will be ready and simulation parameters will be modifiable.
- Beta-2 version Features
The beta-2 version will add some more detailed features such drag forces, and buoyancy. This version will also fix any bugs that may be found in the alpha and beta-1 versions.
- Final Version
The plugin will be complete and packaged for easy distribution to the end users.
- Schedule
Task Description | 2/18
Wk0 |
2/25
Wk1 |
¾
Wk2 |
3/11
Wk3 |
3/18
Wk4 |
3/25
Wk5 |
4/1
Wk6 |
4/8
Wk7 |
4/15
Wk8 |
4/22
Wk9 |
4/29
Wk10 |
5/6
Wk11 |
Learn Bullet Physics | ||||||||||||
Implement
UI |
||||||||||||
Submit alpha version | ||||||||||||
Implement simulation | ||||||||||||
Submit beta-1 version | ||||||||||||
Add additional functionality | ||||||||||||
Submit beta-2 version | ||||||||||||
Final testing/ Debugging | ||||||||||||
Final
Presentation |
- Related Research
KIRCHHOFF, G. R. 1870. [On the motion of a solid of revolution in a fluid].
Journal f¨ur die Reine und Angewandte Mathematik 71. (in German).
Kirchhoff was the pioneer when it came to studying the motion of solid rigid-bodies in fluids. Thus, we have selected his work as the seminal piece for our authoring tool.
When one considers a rigid body immersed in a fluid, it is intuitive to think that any motion of the body also involves motion of the surrounding ﬂuid, which adds to its kinetic energy.
In order to account for such a phenomenon, we would theoretically have to simulate the entire fluid system and observe its interactions with the object. It’s easy to see that this would be a computationally expensive affair.
Thus, all the way back in 1870, Kirchhoff proposed his idea to simplify the problem of fluid-body interactions by only modifying the inertia tensor to also include the kinetic energy of the surrounding fluid motion. However, his model makes assumptions which are clearly violated in many practical scenarios. It assumes a motion of one body will not have an influence on the other. And it assumes that the entire fluid is at rest, except the minimal flow at the boundaries. In spite of this, Kirchhoff’s model has been refined enough of the last century and has now become a viable option for simulating underwater rigid body dynamics.
LAMB, H. 1895. Hydrodynamics. Cambridge Univ Pr.
Based on Kirchhoff’s work in 1870, Lamb illustrates implementation of hydrodynamic principles using Kirchhoff’s model. In chapter 6 of his book, he gives the detailed description (including derivations of equations) of the procedures involved in the computation of kinetic energies of the rigid body and the fluids surrounding it.
ANDERSON JR, J. D. 2005. Ludwig Prandtl’s Boundary Layer. Physics Today, December.
Prandtl illustrated concepts of boundary layers which were not available at Kirchhoff’s time, his work describes the mechanism of frictional forces acting at the boundary layers of a body which is interacting with a fluid. Prandtl’s work is important because Kirchhoff assumes there is no hydrodynamic coupling between 2 bodies when inside a fluid, but Prandtls work shows that in reality, there is shear and pressure forces acting all along the body and because of the boundaries of the bodies, the fluid would be moving in a certain shape which in turn influences the neighboring bodies.
CARLSON, M., MUCHA, P. J., AND TURK, G. 2004. Rigid fluid. ACM Trans. 23, 3.
In this paper, the goal is to animate interactions between rigid bodies and viscous incompressible fluids. Here, Carlson’s approach treats a rigid body as if it was made of fluid. In order to preserve the rigidity of the object, he identifies the velocity fields inside the object and constrains the velocities to behave as if the body were rigid. This method works primarily on Navier-Stokes equations and uses distributed Lagrange multipliers to ensure two-way coupling. The strength of this technique is that it efficiently handles rigid body forces by adding only a small additional set of computations to the fluid solver.
BECKER, M., TESSENDORF, H., AND TESCHNER, M. 2008. Direct forcing for Lagrangian rigid-fluid coupling. IEEE Trans. Vis. Computer Graphics 15, 3.
This paper presents a unique boundary algorithm for particle based fluids using a predictor corrector scheme for position and velocity. In this method, initially fluid interactions are computed and then the fluid and rigid forces. Every particles position is then predicted and collision is detected. The net force acting on the body is computed and any collision corrections are later applied. But in this method the boundary conditions used to compute the forces across the body. The major difference between this paper and ours is that the authors here use a particle based approach and the hydro coupling is between both particle and rigid body and vice versa. Also, in this paper buoyancy effects and drag effects are implemented for fluids, which will be the same effects we will be implementing in our underwater simulation.
FIELD, S., KLAUS, M., AND MOORE, M. 1997. Chaotic dynamics of falling disks. Nature 388, July.
This paper examines the different types of trajectories that may arise from from thin disks falling underwater. In this paper, they show that free falling disks have helical trajectories and the vortex patterns of different trajectories are compared and analyzed. For rigid bodies falling in a fluid, the torque balance is described by generalized Kirchhoff’s equation. Even though this paper focuses primarily on disks, we would like to expand on these principles, so that they may be applied for all types of rigid bodies. The results obtained in this paper are in close accordance of what we would be obtaining in our paper and the results provide a detailed analysis of how the simulation should look.
OZGEN, O., KALLMANN, M., RAMIREZ, L. E., AND COIMBRA, C. F. 2010. Underwater cloth simulation with fractional derivatives. ACM Trans. Graph. 29, 3.
Ozgen et al. propose a method for simulating realistic deformations and motions of cloth under water using a fractional differentiation approach. When it comes to implementation this paper is not the closest fit to our authoring tool. However, similarities can be drawn from the fact that the authors, in this case, attempt to achieve their goal without simulating the body of water in which the cloth is immersed. Furthermore, the concept of their work is based on observations similar to those made by Weibman & Pinkall. The paper claims that the total force on a body immersed in a fluid is proportional to the sum of forces acting on it such as acceleration of displaced fluid, velocity of the body (Stokes drag), and history (Basset) forces. Understanding how to apply these forces is key as we look to implement the same in our simulation.
- Results
Our tool is a written as a plugin for Maya and has been directly integrated into the Bullet Physics Dynamica plugin. By computing Kirchhoff tensor for any arbitrary mesh we are able to generate a real-time, controllable, stable, robust, and dynamic underwater motion simulation without the need to create fluid particles. For more results, please see attached video.
- Discussion
- Lessons Learned
- References
Underwater Rigid Body Dynamics [S. Weißmann, U. Pinkall, TU Berlin – SIGGRAPH 2012]
Future work :
U… -The concept of kirchoff tensor can be extended to support character motion in underwater.
- Bullet supports voronoi fracture , this concept can be extended for objects crashing in water, when a object reaches the surface , voronoi fracture creates new rigid bodies and multiple underwater bodies can be simulated simultaneously as per the fracture.
Accomplisments – what features implanted , what worked and what does not, not implemented and why
Any body can be simulated as a underwater body. All the features given in the paper were implemented. Our paper asks us to vary parameters to get a good simulation, which is what we recommend the users to do so. Buoyancy forces work the way the paper explains to create balloons. Viscosity makes the translational force to be reduced ,but the torques are high. An alternative instead of varying viscocity would be to vary the mass and buoyancy to get a viscous motion. All the rest of the paper works the way the author has suggested.
Changes to technical approach , what they were and why did u change
Our initial idea was to create a new plugin or a command , that would then use the data from the bullet plugin to do the calculations, we soon realized that it is not possible and created a new node called dURBNode that would calculate the forces and torques needed. We did not know where to compute the tensor and thought of computing oin our new node. But it was computationally expensive as our node was being called for every time step , hence we figured out that the collision shape was calculated only once and also we need not do anything to access the mesh data , and hence we added our tensor calculation code in the collionshape node. Our intial idea was to just create the URBnode when we click on the mel button in the UI, We had to use the MEL script of bullet and hence we needed to add flags at various points to make sure that the .mll file knows that it is indeed a underwater body .
- min audio script
Slide 1: Overview
Hello everyone, in this video, we will present the working of our CIS660 Maya plugin called “Drown it!” developed by me, Sohail Mehra and my teammate, Vivek Reddy. Here are some of our results:
- A primitive cube falling underwater
- Similarly a vase mesh
- An array of coins
- Balloons floating through the air
- And finally, various other arbitrary meshes falling underwater
Slide 2: Goals and Objectives
The motion of rigid bodies in vacuum has been studied extensively over the years. More recently, however, studies dealing with the motion of rigid bodies inside a fluid, like water, have become more abundant. An obvious way to simulate the aforementioned motions is to create a fluid using a particle-based technique, immerse the object of interest within the particle system, and observe the interactions between the two. It is evident that adopting such an approach would be a computationally expensive affair. Many researchers have proposed a wide array of possible solutions to combat this problem. Although, none thought of using Kirchhoff’s fluid-body model until Weißmann & Pinkall published the paper “Underwater Rigid Body Dynamics” at SIGGRAPH 2012. Their paper shows that the motion of rigid bodies under water can be realistically simulated by simply replacing the usual inertia tensor and scalar mass by a Kirchhoff tensor. This allows users to model fluid-body interactions in real-time without the need to generate the surrounding fluid at all.
Slide 3: Technical Approach
- Titles of the paper(s) your authoring tool is based on (i.e. authors, title, SigGraph year)
- Main concepts of technical approach used
Consider a rigid body in 3-dimensional space. This body, when in motion, will possess a certain amount of kinetic energy. This kinetic energy is comprised of two components, linear and angular, and is described by the equation that follows:
Where J is the inertia tensor and w is the angular velocity.
However, this equation can only represent the kinetic energy of a body in vacuum and does not consider the contributions of any surrounding medium.
In our approach, we will attempt to simulate a rigid body immersed in a fluid medium without simulating any of the fluid particles as per the equation on the screen. In this equation K represents the Kirchhoff tensor.
The simulation depends mainly on the correct computation of the Kirchhoff tensor, K, which is essentially the sum of the body tensor, KB, and the fluid tensor, KF. Every rigid body’s properties in vacuum will be described by a unique Kirchhoff tensor represented by KB. But, in order to approximate the effect of the surrounding fluid, an additional KF tensor needs to be computed. The fluid tensor, KF, depends only on the shape of the body and is completely independent of its material realization as captured by the mass and inertia tensor of the body. Therefore, the final Kirchhoff tensor for the simulation is computed as follows:
Once we have the values K, we can simply replace the normal inertia tensor and the scalar mass of the body with the Kirchhoff tensor.
To calculate the values of the fluid tensor, KF we consider the rigid body’s boundary. In doing so, we define certain boundary points on the outer layer of the rigid body, B. If z is a boundary point of the body, we define the condition – “At each z, the fluid velocity needs to have the same normal component as that of the body velocity.”
After specifying this condition, the next step is to find the scalar potential at all points along the boundary. Scalar potential is important to calculate the forces acting on the body, and hence helps find the linear and angular momentum acting on the body due to the fluid. Having computed the linear and angular momentum, we can calculate the fluid tensor KF.
To find scalar potential we use the following equations:
According to the potential theory, it is important to have point sj be inside the body, which is done by taking a point on the boundary and then projecting it in the direction of normal.
The above equation represents the mathematical form of the condition set earlier.
The following integral is used to get the linear and angular momentum due to the fluid:
Once the angular and linear momentums are calculated, we can easily find the fluid tensor and hence get the motion of the body underwater.
Equations of motion to be used for integration:
Slide 4: Results
- Include a demo of your Maya plugin authoring tool
o You don’t need to show how to load the plugin (assume it is already loaded)
o Show the typical user workflow and the kind of content that can be produced as an output
In order to effectively use of our plugin, we recommend the following work flow:
To start off the user must load the dynamica plugin. The plugin will create the dynamica menu in the menu bar. Click this to explore all the available options. At the bottom of the dynamica window are our additional underwater simulation features. The user can either choosre to automatically create default simulations for primitives like spheres and cubes or may create or a import an arbitrary mesh. Once the mesh is ready , the user can select it and click the mesh option in the underwater dynamics tab to make it a active under-water rigid body. From here on the user can modify the attributes of the default simulation to get their desired output.
An additional option exists for the user to create arrays of rigid bodies at a time.
Lastly all features above are integrated to work in conjunction with dynamicas original tools.
And hence a variety of results can be easily produced.
Finally Here are some of the results showing the demo of our work.
We can observe the variation in output when the Kirchhoff Tensor, Mass, buoyancy, drag, viscosity and additional external forces and torques are varied.
We would like to thank Professor Lane for all his help and support.
Thank you.
Underwater Rigid Body Dynamics
A Maya Plugin
Sohail Mehra
Vivek Reddy
Based on:
Underwater Rigid Body Dynamics
Steffen Weißmann, Ulrich Pinkall, TU Berlin, SIGGRAPH 2012
CIS 660 – Advanced Topics in Computer Graphics and Animation
Instructor: Dr. Stephen Lane
PROJECT SUMMARY
Our authoring tool aims to simulate a rigid body’s motion in a fluid without having to create the actual surrounding fluid particles. We show that such motions can be realistically generated by simply replacing the usual inertia tensor and scalar mass by a Kirchhoff tensor.
According to Weißmann & Pinkall, many real scenarios (sinking bodies, balloons) can be matched using a single, hand-tuned scaling parameter. Furthermore, the method that they describe in their paper can be easily integrated into an existing physics engine, which makes underwater rigid body dynamics run in real time. For our project, we will look to integrate our simulation with the open source Bullet Physics library.
The simulation, here, depends mainly on the correct computation of the Kirchhoff tensor, K, which is essentially the sum of the body tensor, KB, and the fluid tensor, KF. KF depends only on the shape of the body and is completely independent of its material realization as captured by the mass and inertia tensor of the body.
In order to do this, we will first compute the kinetic energy of the rigid body in vacuum. After which, we will calculate the kinetic energy that would have been caused by if a fluid had existed.
For the simulation, we envision fluid-body interactions such as viscosity, drag forces, and buoyancy. Users will be able input and modify these parameters at any time during the simulation. Additionally, the user will be able to vary the output by selecting a scaling factor for the computed Kirchhoff tensor.
Given these values, we plan to compute the appropriate forces and torques at every time step acting on the rigid body using the equations of motion described in the algorithm details section (2.1.1).
- AUTHORING TOOL DESIGN
- Significance of Problem or Production/Development Need
The motion of rigid bodies in vacuum has been studied extensively over the years. More recently, however, studies dealing with the motion of rigid bodies inside a fluid, like water, have become more abundant. An obvious way to simulate the aforementioned motions is to create a fluid using a particle-based technique, immerse the object of interest within the particle system, and observe the interactions between the two. It is evident that adopting such an approach would be a computationally expensive affair. Many researchers have proposed a wide array of possible solutions to combat this problem. Although, none thought of using Kirchhoff’s fluid-body model until Weißmann & Pinkall published the paper “Underwater Rigid Body Dynamics” at SIGGRAPH 2012. Their paper shows that the motion of rigid bodies under water can be realistically simulated by simply replacing the usual inertia tensor and scalar mass by a Kirchhoff tensor. This allows users to model fluid-body interactions in real-time without the need to generate the surrounding fluid at all.
- Technology
For this project, we directly explore and apply Kirchhoff’s tensor principles published in 1870. His model, though well known, has yet to be applied in the field of Computer Graphics and Animation. We hope to be the first ones to successfully implement his work as a basis for real-time simulation of rigid bodies immersed in a fluid.
Furthermore, we look to integrate our simulation with the open source Bullet Physics library. Disney Animation Studios contributed their in-house Maya plugin called ‘Dynamica’ to the Bullet project. This Dynamica plugin was used for physics special effects in the creation of the animated feature Bolt and is vastly used in physics simulations at major studios.
- Design Goals
Although, our tool is primarily targeted towards artists, technical artists, animators, game designers, and researchers, we want to it be simple, intuitive, and easy enough so that even a casual Maya user could take advantage of its features. Additionally, we envision our tool as dynamic and interactive. We want users to be able to set or modify certain attributes and be able to instantly see the effects on their simulation.
- Target Audience
- The target audience for our tool includes artists, technical artists, animators, game designers, and researchers.
- User Goals and Objectives
- The user can simulate realistic, real-time underwater motions for any rigid bodies without the need to create actual fluid particles/containers.
- The user will be able to modify a number of parameters to generate a diverse set of motions for any rigid body.
- Tool Features and Functionality
- Underwater Simulation
- Our authoring tool is directly integrated into the Bullet Physics Dynamica plugin. Users will be able to leverage all of Dynamica’s original functionality along with the new options added by us. Our underwater simulation feature takes a rigid body mesh as input, and enables users to set/ modify parameters, such as fluid properties and object properties, so that they can obtain their desired output.
- Tool Input and Output
- Input:
- To start off, the user will need to either create new mesh in the scene or load a pre-existing one for the simulation.
- The user may even choose predefined primitives such as spheres or cubes.
- There is also on option to create arrays of objects for the simulation.
- By selecting appropriate options in the underwater dynamics menu the mesh is set for underwater motion and collision detection.
- The user interface for the URBNode will allow attributes such as fluid density, viscosity, buoyancy, drag, Kirchhoff scaling factor, additional forces and torques, and object properties (mass, etc.), to be tweaked.
- Output:
- The tool will output a robust, dynamic, interactive, and real-time simulation of a rigid body’s motion in a particular fluid given a mesh and certain input parameters.
- The authoring tool supports the .fbx format to save simulation data and/or use it in other Maya projects.
- In order to do this, the user will first need to bake the simulation onto the object using the Bake options in the Dynamica menu.
- User Interface
- GUI Components and Layout
Our plugin has a minimal and simple user interface and workflow. Furthermore, it will be integrated directly into Dynamica’s GUI which designed like any standard Maya interface, thus making it familiar and easy to use. The user will be able to set or modify several attributes and parameters at any time during the simulation through our URBNode as shown below:
- User Tasks
Our tool’s user interface is integrated directly into Dynamica’s GUI which is designed like any other standard interface in Maya. A user familiar with the software should have no trouble navigating the options. The user must import or create a rigid body mesh for the simulation.
A mesh that is imported simply needs to be selected before clicking on the Mesh option in the Underwater Dynamics tab to set it up for the simulation. Primitives, like spheres or cubes, can be automatically created by clicking either of those options in the aforementioned tab. In addition, users may also choose to create arrays of objects for the simulation. Lastly, users have the option to bake their desired simulation on the mesh and export the animation in the .fbx format for future use.
- Work Flow
- Load the Dynamica plugin (DynamicaPlugin.mll).
- The plugin will create the Dynamica menu options for the user.
- Create or load an existing mesh that will be used in the simulation.
- Select or create object in the scene to behave as passive bodies for simulate collisions
- Select the mesh, and click the Mesh button in the Underwater Dynamics tab or alternatively, automatically create primitives for the simulation by clicking either the Sphere or Box buttons in the same tab.
- When the node is ready (i.e. its Kirchhoff tensor and collision data have been created), the user can simply play the animation.
- If the aniSmation does not match the user’s expectation the user may choose to tweak the parameters through the provided UI until the desired output is achieved.
- Authoring tool development
- Technical Approach
- Algorithm Details
Consider a rigid body in 3-dimensional space. This body, when in motion, will possess a certain amount of kinetic energy. This kinetic energy is comprised of two components, linear and angular, and is described by the equation that follows:
Where J is the inertia tensor and w is the angular velocity.
However, this equation can only represent the kinetic energy of a body in vacuum and does not consider the contributions of any surrounding medium.
Moment of inertia accounts for how much a body will resist rotation. For a body in three dimensions, we usually represent this as a 3×3 inertia tensor. The inertia tensor is used to find the kinetic energy of a body using the relationship shown above.
In our approach, we will attempt to simulate a rigid body immersed in a fluid medium without simulating any of the fluid particles.
The simulation depends mainly on the correct computation of the Kirchhoff tensor, K, which is essentially the sum of the body tensor, KB, and the fluid tensor, KF. Every rigid body’s properties in vacuum will be described by a unique Kirchhoff tensor represented by KB. But, in order to approximate the effect of the surrounding fluid, an additional KF tensor needs to be computed. The fluid tensor, KF, depends only on the shape of the body and is completely independent of its material realization as captured by the mass and inertia tensor of the body. Therefore, the final Kirchhoff tensor for the simulation is computed as follows:
Once we have the values K, we can simply replace the normal inertia tensor and the scalar mass of the body with the Kirchhoff tensor.
To calculate the values of the fluid tensor, KF we consider the rigid body’s boundary. In doing so, we define certain boundary points on the outer layer of the rigid body. Let the body be called B. Then, ΔB is a small part of the body under consideration. If z is a boundary point of the body and z ε B, then at the point z we define a condition – “At each boundary point z, the fluid velocity needs to have the same normal component as that of the body velocity.”
After specifying this condition, the next step is to find the scalar potential at all points along the boundary. Scalar potential is important to calculate the forces acting on the body, and hence helps find the linear and angular momentum acting on the body due to the fluid. Having computed the linear and angular momentum, we can calculate the fluid tensor KF.
To find scalar potential we use the following equations:
According to the potential theory, it is important to have point sj be inside the body, which is done by taking a point on the boundary and then projecting it in the direction of normal.
The above equation represents the mathematical form of the condition set earlier.
The following integral is used to get the linear and angular momentum due to the fluid:
Once the angular and linear momentums are calculated, we can easily find the fluid tensor and hence get the motion of the body in underwater.
Equations of motion to be used for integration:
- Maya Interface and Integration
All graphical user interface components of our tool will be directly incorporated into Dynamica’s GUI and designed to look like any standard interface in Maya, they will be created using MEL. The plugin itself will be implemented using Maya’s C++ API and will add functionality to Dynamica’s source code. Specifically, our code will add a new underwater dynamics tab to the menu. We provide options for the user to quickly and easily run simulations using primitives like spheres or cubes while also allowing user to import or create their own mesh. Upon creation of the rigid body, the user can adjust a number of parameters to obtain the desired output. The specific Maya nodes and classes used to do this are described in the following section.
- Software Design and Development
In our software design we build on the base code from the bullets maya dynamica plugin. The main nodes we use from the dynamica node are time,dsolverNode, dcollsionShapeNode and drigidbodynode.
Dsolver node is the node which calls the addexternaforce and addexternaltorque to the bullet code. Our goal is to solve for the new external forces and external torques and send it to the solver node without affecting the normal operation of the dynamica plugin.
Kirchoff tensor needs to be computed only during the being of the simulation and it depends only on the shape of the object. Therfore we implemented the computation of the 6 cross 6 matrix inside the collision shape. We added a flag such that only when the user clicks on the underwater body , then only our code gets executed. While calculating the tensor we needed to compute the inverse of a matrix and hence we used the Svzmatrix.h header file from CIS560 assignment.
Once the tensor is calculated ,another tensor called the drag tensor is also calculated. Both these matrices are stored as Mfloatarray .
A new node called “dURBNode” is added. In this node we use the tensor values, we get the current linear and angular velocity of the body and compute the new forces and torques to ac t on the body . This node is computed every time step by connecting to the time node. The newly calculated forces and torques are sent to the solver node, to get the underwater motion .
- Target Platforms
- Hardware
- (32-bit/ 64-bit) Intel® Pentium® IV or higher, AMD Athlon® XP processor
- 2 GB RAM
- Hardware-accelerated OpenGL® graphics card
- Software
Our authoring tool will be developed on Maya 2013 with support of the Bullet Physics Engine. The system requirements for our tool should be equivalent to the system requirements for Maya 2013 as listed below.
The 64-bit version of Maya 2013 software is supported by any of the following operating systems:
- Microsoft Windows 8 operating system
- Microsoft Windows 7 Professional operating system (SP1)
- Microsoft Windows XP Professional x64 Edition (SP2)
- Apple® Mac OS® X 10.7.x and 10.8.x operating system
- Red Hat® Enterprise Linux® 6.2 WS operating system
- Fedora™ 14 operating system
- Software Versions
- Alpha Version Features
The alpha version of our authoring will include a functional user interface and appropriate connection of attributes between all required hyper-graph nodes.
- Beta-1 version Features
- Computation of the Kirchhoff tensor correctly integrated within Dynamica.
- Basic set up of the user interface with modifiable parameters.
- Beta-2 version Features
- Support for additional forces such as drag and buoyancy.
- Support for arrays of rigid bodies.
- Beta-1 version bug fixes.
- Descriptions of Any Demos or Tutorials
Final demos will include simulations of the following objects:
- Coins
- Balloons
- Primitive objects – cubes, spheres, cylinders, cones
- Work Plan
3.1 Tasks
- Study the source code for Bullet Physics Engine extensively.
- Build Framework
- Implement user interface (MEL)
- Add a new Underwater Dynamics tab to Dynamica’s UI
- Add options to create primitives for the simulation
- Add option to select a rig a mesh for the simulation
- Implement node plugin framework (C++)
- Design and integrate URBNode into Dynamica’s existing node structure
- Underwater Simulation
- Compute body kinetic energy tensor
- Analyze mesh data and create body boundaries for computation of scalar potential
- Compute scalar potential over the boundary points
- Set constraints for fluid and body velocities based on input parameters
- Calculate the fluid kinetic energy tensor
- Express the Kirchhoff tensor as the sum of the previously computed tensors
- Use a suitable integration scheme to simulate motion (either the Bullet Physics solver or a Euclidean Lie Group solver)
- Add additional forces such as drag and buoyancy
- Add support for multiple rigid bodies at a time i.e. arrays of rigid bodies
- Testing and Debugging
- Final Renders
- Render basic samples that showcase the simulation for different objects and parameters
- Render sample simulations in a high quality underwater environment
- Implement user interface (MEL)
3.1.1 Alpha Version Features
The alpha version of our authoring tool will include a functional user interface and appropriate connection of attributes between all required hyper-graph nodes.
- Beta-1 version Features
The beta-1 version will have a basic working prototype of the underwater rigid body simulation. The user interface will be ready and simulation parameters will be modifiable.
- Beta-2 version Features
The beta-2 version will add some more detailed features such drag forces, and buoyancy. This version will also fix any bugs that may be found in the alpha and beta-1 versions.
- Final Version
The plugin will be complete and packaged for easy distribution to the end users.
- Schedule
Task Description | 2/18
Wk0 |
2/25
Wk1 |
¾
Wk2 |
3/11
Wk3 |
3/18
Wk4 |
3/25
Wk5 |
4/1
Wk6 |
4/8
Wk7 |
4/15
Wk8 |
4/22
Wk9 |
4/29
Wk10 |
5/6
Wk11 |
Learn Bullet Physics | ||||||||||||
Implement
UI |
||||||||||||
Submit alpha version | ||||||||||||
Implement simulation | ||||||||||||
Submit beta-1 version | ||||||||||||
Add additional functionality | ||||||||||||
Submit beta-2 version | ||||||||||||
Final testing/ Debugging | ||||||||||||
Final
Presentation |
- Related Research
KIRCHHOFF, G. R. 1870. [On the motion of a solid of revolution in a fluid].
Journal f¨ur die Reine und Angewandte Mathematik 71. (in German).
Kirchhoff was the pioneer when it came to studying the motion of solid rigid-bodies in fluids. Thus, we have selected his work as the seminal piece for our authoring tool.
When one considers a rigid body immersed in a fluid, it is intuitive to think that any motion of the body also involves motion of the surrounding ﬂuid, which adds to its kinetic energy.
In order to account for such a phenomenon, we would theoretically have to simulate the entire fluid system and observe its interactions with the object. It’s easy to see that this would be a computationally expensive affair.
Thus, all the way back in 1870, Kirchhoff proposed his idea to simplify the problem of fluid-body interactions by only modifying the inertia tensor to also include the kinetic energy of the surrounding fluid motion. However, his model makes assumptions which are clearly violated in many practical scenarios. It assumes a motion of one body will not have an influence on the other. And it assumes that the entire fluid is at rest, except the minimal flow at the boundaries. In spite of this, Kirchhoff’s model has been refined enough of the last century and has now become a viable option for simulating underwater rigid body dynamics.
LAMB, H. 1895. Hydrodynamics. Cambridge Univ Pr.
Based on Kirchhoff’s work in 1870, Lamb illustrates implementation of hydrodynamic principles using Kirchhoff’s model. In chapter 6 of his book, he gives the detailed description (including derivations of equations) of the procedures involved in the computation of kinetic energies of the rigid body and the fluids surrounding it.
ANDERSON JR, J. D. 2005. Ludwig Prandtl’s Boundary Layer. Physics Today, December.
Prandtl illustrated concepts of boundary layers which were not available at Kirchhoff’s time, his work describes the mechanism of frictional forces acting at the boundary layers of a body which is interacting with a fluid. Prandtl’s work is important because Kirchhoff assumes there is no hydrodynamic coupling between 2 bodies when inside a fluid, but Prandtls work shows that in reality, there is shear and pressure forces acting all along the body and because of the boundaries of the bodies, the fluid would be moving in a certain shape which in turn influences the neighboring bodies.
CARLSON, M., MUCHA, P. J., AND TURK, G. 2004. Rigid fluid. ACM Trans. 23, 3.
In this paper, the goal is to animate interactions between rigid bodies and viscous incompressible fluids. Here, Carlson’s approach treats a rigid body as if it was made of fluid. In order to preserve the rigidity of the object, he identifies the velocity fields inside the object and constrains the velocities to behave as if the body were rigid. This method works primarily on Navier-Stokes equations and uses distributed Lagrange multipliers to ensure two-way coupling. The strength of this technique is that it efficiently handles rigid body forces by adding only a small additional set of computations to the fluid solver.
BECKER, M., TESSENDORF, H., AND TESCHNER, M. 2008. Direct forcing for Lagrangian rigid-fluid coupling. IEEE Trans. Vis. Computer Graphics 15, 3.
This paper presents a unique boundary algorithm for particle based fluids using a predictor corrector scheme for position and velocity. In this method, initially fluid interactions are computed and then the fluid and rigid forces. Every particles position is then predicted and collision is detected. The net force acting on the body is computed and any collision corrections are later applied. But in this method the boundary conditions used to compute the forces across the body. The major difference between this paper and ours is that the authors here use a particle based approach and the hydro coupling is between both particle and rigid body and vice versa. Also, in this paper buoyancy effects and drag effects are implemented for fluids, which will be the same effects we will be implementing in our underwater simulation.
FIELD, S., KLAUS, M., AND MOORE, M. 1997. Chaotic dynamics of falling disks. Nature 388, July.
This paper examines the different types of trajectories that may arise from from thin disks falling underwater. In this paper, they show that free falling disks have helical trajectories and the vortex patterns of different trajectories are compared and analyzed. For rigid bodies falling in a fluid, the torque balance is described by generalized Kirchhoff’s equation. Even though this paper focuses primarily on disks, we would like to expand on these principles, so that they may be applied for all types of rigid bodies. The results obtained in this paper are in close accordance of what we would be obtaining in our paper and the results provide a detailed analysis of how the simulation should look.
OZGEN, O., KALLMANN, M., RAMIREZ, L. E., AND COIMBRA, C. F. 2010. Underwater cloth simulation with fractional derivatives. ACM Trans. Graph. 29, 3.
Ozgen et al. propose a method for simulating realistic deformations and motions of cloth under water using a fractional differentiation approach. When it comes to implementation this paper is not the closest fit to our authoring tool. However, similarities can be drawn from the fact that the authors, in this case, attempt to achieve their goal without simulating the body of water in which the cloth is immersed. Furthermore, the concept of their work is based on observations similar to those made by Weibman & Pinkall. The paper claims that the total force on a body immersed in a fluid is proportional to the sum of forces acting on it such as acceleration of displaced fluid, velocity of the body (Stokes drag), and history (Basset) forces. Understanding how to apply these forces is key as we look to implement the same in our simulation.
- Results
Our tool is a written as a plugin for Maya and has been directly integrated into the Bullet Physics Dynamica plugin. By computing Kirchhoff tensor for any arbitrary mesh we are able to generate a real-time, controllable, stable, robust, and dynamic underwater motion simulation without the need to create fluid particles. For more results, please see attached video.
- Discussion
- Lessons Learned
- References
Underwater Rigid Body Dynamics [S. Weißmann, U. Pinkall, TU Berlin – SIGGRAPH 2012]
Future work :
U… -The concept of kirchoff tensor can be extended to support character motion in underwater.
- Bullet supports voronoi fracture , this concept can be extended for objects crashing in water, when a object reaches the surface , voronoi fracture creates new rigid bodies and multiple underwater bodies can be simulated simultaneously as per the fracture.
Accomplisments – what features implanted , what worked and what does not, not implemented and why
Any body can be simulated as a underwater body. All the features given in the paper were implemented. Our paper asks us to vary parameters to get a good simulation, which is what we recommend the users to do so. Buoyancy forces work the way the paper explains to create balloons. Viscosity makes the translational force to be reduced ,but the torques are high. An alternative instead of varying viscocity would be to vary the mass and buoyancy to get a viscous motion. All the rest of the paper works the way the author has suggested.
Changes to technical approach , what they were and why did u change
Our initial idea was to create a new plugin or a command , that would then use the data from the bullet plugin to do the calculations, we soon realized that it is not possible and created a new node called dURBNode that would calculate the forces and torques needed. We did not know where to compute the tensor and thought of computing oin our new node. But it was computationally expensive as our node was being called for every time step , hence we figured out that the collision shape was calculated only once and also we need not do anything to access the mesh data , and hence we added our tensor calculation code in the collionshape node. Our intial idea was to just create the URBnode when we click on the mel button in the UI, We had to use the MEL script of bullet and hence we needed to add flags at various points to make sure that the .mll file knows that it is indeed a underwater body .
- min audio script
Slide 1: Overview
Hello everyone, in this video, we will present the working of our CIS660 Maya plugin called “Drown it!” developed by me, Sohail Mehra and my teammate, Vivek Reddy. Here are some of our results:
- A primitive cube falling underwater
- Similarly a vase mesh
- An array of coins
- Balloons floating through the air
- And finally, various other arbitrary meshes falling underwater
Slide 2: Goals and Objectives
The motion of rigid bodies in vacuum has been studied extensively over the years. More recently, however, studies dealing with the motion of rigid bodies inside a fluid, like water, have become more abundant. An obvious way to simulate the aforementioned motions is to create a fluid using a particle-based technique, immerse the object of interest within the particle system, and observe the interactions between the two. It is evident that adopting such an approach would be a computationally expensive affair. Many researchers have proposed a wide array of possible solutions to combat this problem. Although, none thought of using Kirchhoff’s fluid-body model until Weißmann & Pinkall published the paper “Underwater Rigid Body Dynamics” at SIGGRAPH 2012. Their paper shows that the motion of rigid bodies under water can be realistically simulated by simply replacing the usual inertia tensor and scalar mass by a Kirchhoff tensor. This allows users to model fluid-body interactions in real-time without the need to generate the surrounding fluid at all.
Slide 3: Technical Approach
- Titles of the paper(s) your authoring tool is based on (i.e. authors, title, SigGraph year)
- Main concepts of technical approach used
Consider a rigid body in 3-dimensional space. This body, when in motion, will possess a certain amount of kinetic energy. This kinetic energy is comprised of two components, linear and angular, and is described by the equation that follows:
Where J is the inertia tensor and w is the angular velocity.
However, this equation can only represent the kinetic energy of a body in vacuum and does not consider the contributions of any surrounding medium.
In our approach, we will attempt to simulate a rigid body immersed in a fluid medium without simulating any of the fluid particles as per the equation on the screen. In this equation K represents the Kirchhoff tensor.
The simulation depends mainly on the correct computation of the Kirchhoff tensor, K, which is essentially the sum of the body tensor, KB, and the fluid tensor, KF. Every rigid body’s properties in vacuum will be described by a unique Kirchhoff tensor represented by KB. But, in order to approximate the effect of the surrounding fluid, an additional KF tensor needs to be computed. The fluid tensor, KF, depends only on the shape of the body and is completely independent of its material realization as captured by the mass and inertia tensor of the body. Therefore, the final Kirchhoff tensor for the simulation is computed as follows:
Once we have the values K, we can simply replace the normal inertia tensor and the scalar mass of the body with the Kirchhoff tensor.
To calculate the values of the fluid tensor, KF we consider the rigid body’s boundary. In doing so, we define certain boundary points on the outer layer of the rigid body, B. If z is a boundary point of the body, we define the condition – “At each z, the fluid velocity needs to have the same normal component as that of the body velocity.”
After specifying this condition, the next step is to find the scalar potential at all points along the boundary. Scalar potential is important to calculate the forces acting on the body, and hence helps find the linear and angular momentum acting on the body due to the fluid. Having computed the linear and angular momentum, we can calculate the fluid tensor KF.
To find scalar potential we use the following equations:
According to the potential theory, it is important to have point sj be inside the body, which is done by taking a point on the boundary and then projecting it in the direction of normal.
The above equation represents the mathematical form of the condition set earlier.
The following integral is used to get the linear and angular momentum due to the fluid:
Once the angular and linear momentums are calculated, we can easily find the fluid tensor and hence get the motion of the body underwater.
Equations of motion to be used for integration:
Slide 4: Results
- Include a demo of your Maya plugin authoring tool
o You don’t need to show how to load the plugin (assume it is already loaded)
o Show the typical user workflow and the kind of content that can be produced as an output
In order to effectively use of our plugin, we recommend the following work flow:
To start off the user must load the dynamica plugin. The plugin will create the dynamica menu in the menu bar. Click this to explore all the available options. At the bottom of the dynamica window are our additional underwater simulation features. The user can either choosre to automatically create default simulations for primitives like spheres and cubes or may create or a import an arbitrary mesh. Once the mesh is ready , the user can select it and click the mesh option in the underwater dynamics tab to make it a active under-water rigid body. From here on the user can modify the attributes of the default simulation to get their desired output.
An additional option exists for the user to create arrays of rigid bodies at a time.
Lastly all features above are integrated to work in conjunction with dynamicas original tools.
And hence a variety of results can be easily produced.
Finally Here are some of the results showing the demo of our work.
We can observe the variation in output when the Kirchhoff Tensor, Mass, buoyancy, drag, viscosity and additional external forces and torques are varied.
We would like to thank Professor Lane for all his help and support.
Thank you.