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

Week 4: Rigging and Skinning

Motion Editing

We looked at PRECISION which can figure out what motions go with new geometry. I feel like this tool makes it much easier for large quantities of content in games and animations; however, it didn’t seem like the artists had much control over how animations might look. There were also issues with transitioning between fixed motion captured animations.


Linear Blend Skinning is intuitive but the candy-wrapper problem is well known. Dual quaternion skinning I feel is a really smart way of using mathematical properties of quaternions to avoid the candy wrapper effect. But to be honest, skinning of organic bodies to skeletons has a lot of variations that can’t be described just by one algorithm. I guess that’s why there are still so many artists working to do weight-painting all the time.

On the note of artist input, we looked at this paper for using line-of-action concept to generate 3D poses. Although this seemed like a very time-efficient method, the poses generated still needed to be tweaked by artists a fair bit, so I think the added value is not that much.

On the topic of weight painting, we also looked at this paper on spline-based weight painting. This concept was really exciting to me as an artist who has always found Maya’s weight painting tools to feel very clumsy. Especially because it is hard to tell when your weight painting is blended properly:

Picture taken from this really good resource for learning how difficult and complex the weight-painting process is!

Using splines to determine the falloff or interpolation of weights seems very elegant. Although I have yet to try using a system like that.

Using cages to warp the mesh seemed like a really intuitive idea as well. We see cage methods all the time in 2D animation software. I’m pretty sure Live2D is using a cage deformation method, and it has some really beautiful results. I’m really curious why we don’t see cage methods in 3D more often. It seems really convenient, there are different methods for applying the cage transform to the cuboid or tetrahedron that can be used for artist control. Perhaps it is more difficult to determine what happens at the joints.

We also looked at implicit functions for mesh wrapping. Seems like we use a bounding mesh as a “cage”, and the bounding mesh can be represented by an implicit function. This method seems like it will not be able to take care of sharp details that well. I also want to read more on implicit functions for meshes as the meta-balls or blobbys idea is unfamiliar to me.