Displaying simulation data for rigid bodies and cloth

Name
Soumya Pochiraju

Contact
Email: soumya.pochiraju@gmail.com

Blender-coders nickname: Forest

Blender ID: Soumya Pochiraju

Github: https://github.com/forest113

Synopsis
Display all individual forces acting on objects, acceleration, velocity and constraints for rigid body simulations, and spring data in cloth simulations. Display collision shapes for complex types as well.

Benefits
Being able to see all the forces acting on a rigid body, would make it easier for the user to achieve their desired outcome. The individual forces can be tweaked accordingly so that the object moves in the desired direction. It would also help developers with debugging. Similarly, visualising constraints and cloth springs will help users and developers easily understand what is going on.

Deliverables

 * Visualisation of rigid body simulation data
 * Displaying cloth simulation spring data
 * Panels for the user to choose which data is to be displayed
 * User documentation

Project details:
The project will include displaying of the following data:

1. Rigid Body simulation data:

 * Display collision shapes for compound, mesh and convex hull types
 * Indicate when a collision happens by highlighting the intersecting faces,edges or vertices


 * Display Acceleration and Velocity(Only the resultant vectors) in a similar way. Hover over the vector arrows to see x/y/z components of the vectors. Forces, acceleration and velocity can be colour coded to differentiate amongst them.
 * Display Object states(sleeping/Active/Passive) in the viewport by colour-coding the objects according to their state.
 * Some forces may result in torques. When these torques are generated, display angular velocity generated as a circular arrow with a perpendicular arrow coming out of its plane to show the torque

2.Visualising constraints:

 * Displaying the impulse acting on a constraint point can be done in two ways, which can be chosen in a drop down panel.
 * 1) If the direction of the force is important, we can depict the force as a vector originating from the point of constraint. If breakable, mark the magnitude of the threshold either on or outside the force vector, depending on whether the threshold is being crossed or not.
 * 2) If only magnitude is required, and the constraint is  breakable, A line connecting the point and the rigid body changes colour depending on how far the current impulse is from breaking the threshold. (will implement this if time permits)
 * Display the angular limits of the hinge generic, spring constraints
 * Display limits of linear traversal in slider, generic and spring constraints

3.Cloth springs data:

 * Display tension springs when they are in an expanded state, shear and compression springs when they are in a compressed state, bending and internal springs when they are deformed, each type in a different colour. They can be displayed as line segments next to the edges of the corresponding faces.

The user will be able to hover over an individual spring to see the force experienced by it in a text field.

Schedule
I will start looking into and understanding the code related to physics,UI and learn more about the bullet api before the coding period starts.

Week 1: Display All forces, Velocity, Acceleration and torques

Week 2: Indicate when collisions occur, show the states of rigid bodies

Week 3,4: Display Collision shapes for complex shape types.

Week 5,6: Visualize constraints

Week 7: Catch up if I’m lagging behind/ generate test cases, create user documentation

Week 8,9: Display spring data for cloth simulations

Week 10: creating test cases, bug fixes if any,create more user documentation

Bio
I’m Soumya Pochiraju, and I’m 21 years old. I’m pursuing a dual degree in Physics and Computer Science at BITS Pilani, Hyderabad. I’ve been using blender for around 4 years now. I love making short animated loops, some of which I’ve posted on Instagram. I even made a 40 second clip that was commissioned by a family member for their business product. I have used physics in some of my animations.

I have been coding in C and C++ since grade 11. I also have some experience in Python and Java. Last summer, I worked with Python on a project about simple classification algorithms in quantum computing.I also developed a small android application as a part of my coursework. I have worked on one bug fix for blender, I submitted a diff for the bug T81957.

I learnt the basics of the Bullet Physics API, and edited the Hello world example to create some simple simulations where velocity, acceleration,etc are printed.