Displaying simulation data for rigid bodies and cloth

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
  • All the visualisation options can be enabled/disabled in a panel The forces option can have an additional sub-panel where the user can choose to enable/ disable gravity, force-field forces and collision forces(normal/friction) individually.
  • Display all forces (Gravity, Force-fields, Normal and Frictional) acting on a rigid body as well as the resultant vector in the form of arrows extending from the rigid body. Normal and frictional forces only arise as a result of collisions, so those vectors will be directed out of the colliding faces/edges/vertices. Arrows can be scaled according to their magnitude, with minimum and maximum clamps to avoid unreasonable arrows sizes. Magnitude of vectors can be displayed at the tip of the arrows, and hovering on the arrow could display x/y/z components of the forces. Resultant of all forces can be in one colour, and the individual forces in another.
  • 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.