I’m learning Houdini!

Last week, I spoke with Mai Ao, an alumnus of the ETC now at Schell Games as a technical artist. Ricardo had put me in contact with him as I was struggling with learning Houdini, and Mai gave me some really awesome resources.

This is the one I am starting with: Joy of Vex.

Week 11: Paper Presentation and Faces/Hair

This week we have paper presentations and I talk about this paper to the class, Fast Energy Projection for Real-time Simulation of Deformable Objects by Dinev, Liu et. al. Reference links are at the bottom.

Here is the presentation I gave.

Disclaimer: Tiantian Liu made a much better video explaining the paper. You can find that in the references as well. My presentation is very much tailored to the class and what we know collectively, which is not that much.

The link to the slides is http://bit.ly/yuifepr


Week 10: Particle-based Systems and Deformables

Unified particle-based system:

Smoke done by advecting tiny particles along velocities provided by unified particle system.

Seems like it is a lot of non-physically-based implementations, for example, rigidbody collisions don’t work that way.

But it is convenient to have everything using the same system (maybe).


Position-based Dynamics (PBD)

At first, Position-based Dynamics seems to be similar to Verlet integrator, which I have previously used for cloth simulation. However, the author highlights that where Verlet stores velocity implicitly with the previous and current position, PBD uses velocities explicitly.

Later, I realised that for PBD, we try to treat everything as a constraint, including forces (except general forces like gravity, see my annotation on algorithm. When we used position constraints in the cloth simulation, it seemed to automatically correct for any instabilities given by the numerical integration method. But actually when everything is made into a constraint, this seems to shift the problem from the integration step to the constraint solver. As a result, the stability of PBD no longer depends on time-step but on the shape of the constraint functions.

I want to look more into XPBD. Updates soon.

Finite Element Method

The paper “Breaking Things” video by O’Brien and Hodgins uses continuous model and finite elements made up of tetrahedrons. I was unclear on the meaning of the vector u in the equations as it does not correspond to vertex locations, instead it refers to the location of the element? Do we just take the center of the tetrahedron as u?

Additionally, they say that the rows of β are the coefficients of the shape functions, which I don’t understand.

Projective Dynamics

For PBD the constraint solver which does most of the work does it in a “Gauss-Seidel-like fashion”, which means solving each constraint individually independent of each other. When we project particles, the modifications are visible to the process, so the order of constraints is extremely important. For projective dynamics, constraints are taken from a local/global optimization perspective. The authors say that PBD converges to inelastic behaviour (I’m not sure why yet) and PD converges to the “true implicit Euler solution”.

Self-study on deformables (lit review)

Miniproject 2: Cloth Simulation

The target of this assignment is to experiment with simulation. Based on the six project options given to us, I accomplished the following:

Cloth Models Implemented

  • Mass-spring cloth simulation
  • Constraint-based Cloth Simulation

Numerical Integration Methods

  • Position Verlet
  • Explicit Euler

I also attempted to implement self-collisions for better visual effect, but my method is not ready for real-time.

My goal for this assignment was to create an environment where people learning about simulation techniques could have a playground to explore the different variables in a simulation engine. Although this is only for cloth, being able to change the integration method and the cloth model allows me to see how the cloth is affected in real time. I also added controls for adding different kinds of springs/constraints, so that we can clearly see the effect of each kind of spring/constraint on the simulation.

Additionally, I exposed the constants that I used in the implementation, such as damping, time step, number of iterations for constraint solver, and so on. We can play with this as we wish.

Some Findings

Continue reading

Week 8: Paper Presentations and Final Project Pitches

Final Project Idea

Energy drift – usually damping – is substantial for numerical integration schemes that are not symplectic, such as the Runge-Kutta family.

Symplectic integrators usually used in molecular dynamics, such as the Verlet integrator family, exhibit increases in energy over very long time scales, though the error remains roughly constant. These integrators do not in fact reproduce the actual Hamiltonian mechanics of the system; instead, they reproduce a closely related “shadow” Hamiltonian whose value they conserve many orders of magnitude more closely.

Miniproject 1: Traditional Animation

There are two parts to this project. In the first part, I talk about keyframe animation and show some walk cycles and how to make them. In the second part, I demonstrate my implementation of Jacobian Transpose Inverse Kinematics in Maya.

To skip to the inverse kinematics portion, click here:

Keyframing: Walk Cycles

The objective of this task is to explore setting of keyframes to create expressive animation. For this part, I used the model of Kayla2014 which has a very complex rig, including IK handles and facial controls. I created three different walks that tried to express different emotions.

Neutral Walk

First, I started out by making what I thought is a basic or neutral walk.

I used 16’s for this by following the Animator’s Survival Kit. The contact frames are on frame 1 and 17, pass position on 9, and the down and up on 5 and 13. This video shows the breakdown of the neutral walk before I added hip swing.

Confident Walk

Next, I made a more confident and expressive walk cycle by adding head bounce and more torso bend.

Continue reading