Modeling, rigging, skinning. Use very simple lights setup and a plane to cast shadow on. The rig used is from CMU motion capture database. The animation is a motion-capture walking data. It is the same rig & animation for all three models. The result is a little shaky.
The best idea inside rigid body simulation is that, you can use one single point and its state ( orientation & movement ) to represent the whole object. I used Houdini to dig further into this feature. I did a Destruction Simulation.
The tutorial I used is: https://www.sidefx.com/tutorials/applied-rigid-body-destruction/
and my result looks like this:
Because these are just choruses instead of some cool model, some of the effort in there can not be told without observation. Now I will explain step by step (not digging into the houdini nodes) how to make this simulation looks real.
It is very natural to think of packing an object. Packing means store all the mesh information in the memory and use a point to represent its state and reference to that mesh. Packing can make preview runs faster but it doesn’t save real rendering time.
2. Give It a Bullet Solver
Here is the link to explain bullet solver in houdini: http://www.sidefx.com/ja/docs/houdini/nodes/dop/bulletrbdsolver
In a word, the bullet solver can represent the object with simpler shape. It can use convex shapes with less points to represent the object in any situation, which is especially useful in collision detection.
3. Voronoi: Divide the object in space
Voronoi is very fast and the pieces it devided into are very simple. Because of that, the simulation looks a little fake when you look closely. With fogs and motion blur it might look ok.
So the way to do this is to give voronoi the original mesh and some control points around the mesh. The points on the mesh will be clustered with the nearest control point. That is, the mesh is divided by bisections of the control points.
By now, if you give the object a height and drop it onto the ground, it will be broken into pieces. However, if you give it a initial angular velocity, it will be Broken Immediately. The reason is that, they are just pieces that start with a position with the same velocity. They are not bounded together.
Also, the pieces it generated are too regular. To do that, you can use voronoi’s own clustering. But it is not good at all. It can create interpenetrating problem between pieces so, not recommended.
4. Add constraints (glue constraints in houdini)
To bound them together you can create connections that linked adjacent pieces together after you use Voronoi. With appropriate search radius and max connections, you can create beautiful link network. I deleted the connections that exist outside the mesh. After that, you can give the connections strengths. In Houdini you can write expressions to give connections random chance to be extremely strong.
After that, you input the constraints inside the simulation. It improves both problems: the pieces will not flew apart with an angular velocity and also, the part that falls on the ground will break the most, and the others will generate bigger parts because of the constraints’ strength.
5. Break it again with smaller pieces
By now we have regular pieces and big pieces, but it should have more small pieces that fall apart. To do this, the tutorial breaks random pieces again before it is assembled into another pack.
The result looks like this:
It looks quite nice with all the details. The breaking time looks reasonable, and the pieces generated contain all kinds of shapes. It will look nicer with dust and smoke.
Class Summary — Three Techniques of Skinning
LBS Linear Blend Skinning ( = SSD, skeletal subspace deformation)
The logic of LBS is very simple. Here is a reference I found that explain this method in details: http://graphics.ucsd.edu/courses/cse169_w05/3-Skin.htm
The joints have weight on every vertex, reflecting their impacts. The movement of the vertex will be the blended by the weight.
MIT has developed Pinocchio to show the result of LBS. It first use circles to determine the best position of the skeleton.
LBS has artifacts. One of the biggest problem is the Candy Wrapper Problem, shown below.
DQB is one way to solve this problem.
Dual Quaternion Blending
DQB adds the rotation dimensions and interpolate on them. It is not slower than the LBS.
One problem it has is that it can not do extreme things like twist your joint 360 degrees. This problem can be solved by divide the rotation equally into parts and do calculation one by one.
Differential Blending ( Disney)
Anatomy Transfer ( A good way to think about this problem)
Reference website: www.skinning.org
Feb 1 & Feb 6
Here is a collection of information provided in the class.
Here is a link that explains gimbal lock: http://www.anticz.com/eularqua.htm
“Every system that uses Eular angles will have this problem. The reason for this is that Eular angles evaluate each axis independently in a set order.”
The solution for this is to use Quaternion.
2. Different Kinds of IK Approaches
Classic Approach ( Linear Approximation): Not efficient
– Jacobian Transpose
– Jacobian Pseudoinverse
– Damped Pseudoinverse
– Use Nullspace to achieve objectives ( can be used to solve singularity problem)
– Priority ( e.g. hands moving but want to keep feet on the ground)
Solve 1st priority with damped, 2nd with nullspace.
Priority Chain: keep projecting into nullspace
– Linear Search
– CCD ( much faster)
– FABRIK (forward and backward reaching IK)
Other Interesting papers can be found here: http://graphics.cs.cmu.edu/nsp/course/15464-s17/lectures/Feb6ReferenceList.pdf
After the class, I find not classic ways easy to implement and also, from what I have seen, have more natural result than classic ones. More research will be put into this and I will keep updating this post.
Jan 30, 2017
Motion Capture Basics
Imagine convert this into 3D world. Center of the capturing area is the origin. Axes shown in the picture. 15 cameras tracking the markers to get tracking information.
The reference cameras are used to see if the mapping of the rig is always right. The reference cameras includes software that can map the ref camera into the 3D space and you can get a clearer view of that.
Before using the system, the cameras should be calibrated.
This is the markers. It has a variety of sizes and can cost about $8. The cameras emits rays and captures the reflected frequencies to identify the markers. There’s something it can not capture: hair.
After putting on the markers, the markers will be mapped in the software, but not necessary to the rig. Information of motion at each point are stored and then processed. You can map the points to rigs, skins, and you can use multiple points to calculate one joint. It is also said that you can get forces.
There are some movements that involves a lot of occlusions. E.g. swimming. They tried to hang the actor to get the motion.
// Here is the beginning of a blog series. This post will be updated after every technical animation class
from Walk Cycle to Motion Capture
– Stop Motion Animation
My classmates in class asked why it still exist. The reason is, there is too many factors that influence the reality, and we have only discovered ways to mimic it. We may achieve it in the future, or may not; but stop motion uses REAL PHYSICS. That is why I love stop motion animation. Actually, Laika is one of my favourite company.
What I love about stop motion animation:
- The Randomness in motion. Posing a real model with the artist’s hands feels different from using Maya. The frame-by-frame posing adds more style to the animation than setting key-frames. Think about flash animation verses hand-drawn animation and you will understand that different feelings.
- The Details in material and the lighting. Stop motion animation use real materials, and because the physics behind lighting is so complicated, every object respond uniquely. When lighting a scene, the materials and the lights always work together. The stop motion animations made by Laika are like exhibitions of the beauty of the materials, always make me feel intimate and satisfied.
- The Style itself. The animation in the movie Kubo and the Two Strings looks very fluent, but there’s still some parts (especially facial animation) that you can tell it is stop motion. Instead of feeling skeptical, I feel strongly into this kind of style. It is lovely and artistic.
And you can not deny, stop motion is the first 3D animation. In a way, computer animation referred to it when it first came out.
– Key Framing Animation and Motion Capture Animation
Different from my classmates’ opinion, I like the key framing animation better. And in animation feature, people seldom use motion capture. Motion capture can preserve the motion, but it has the limitation of reality. In animation, there is a balance between novelty and reality. If it looks too real, it is boring. If it is not real enough, it is not believable. Motion Capture creates realistic result, but too real. The philosophy of exaggerating in animation is lost in Motion Capture, and make it lose the style. Because of the fact that if you use motion capture, you will need to adjust the animation frame by frame, it is not ideal for animation features.
– Different Problems: Calculate Key Frame Animations, Transition Between Animation Clips and Motion Capture Displacement Curves
After the class I have some doubts about the difference between the three I mentioned above, so I did some research.
Keyframe Animation and Animation Curves
Here is a short description of maya’s graph editor.
Keyframe animation is calculated based on interpolation.
Transition between 2 Animation Clips:
The actual problem is Animation Blending, It is used both on smooth transition between 2 animation clips and create new animations from existing ones. Also it can be used to combine multiple clips according to time-varying weights to get better result for motion capture.
The animations are represented with rotations. It is more complex than linear interpolation since it also involves complex problems like synchronization.
Use the example I found on stackoverflow:
Basically, if you have two animations clips A and B:
- If A and B are completely different (blending jump and swimming), then chances are you will have strange/funny results;
- If A and B are similar (two walking animation clips), then, you must first synchronize them to blend them when both left feet are on the ground for example.
The answer also mentioned a paper used a method called registration curves.
stackoverflow link : http://gamedev.stackexchange.com/questions/22402/animation-blending-basics
paper link: http://graphics.cs.wisc.edu/Papers/2003/KG03/regCurves.pdf
Displacement Curves on Motion Capture Results
This problem is more of a “spacetime constraint problem“. (A Hierarchical Approach to Interactive Motion Editing for Human-like Figures, 1999, http://dl.acm.org/citation.cfm?id=311539)
In this paper, it “combines a hierarchical curve fitting technique with a new inverse kinematics solver”. IK is calculated frame by frame to meet the constraints. The motion displacement of every joint at each constrained frame is interpolated and then the curve is smoothed.
Conclusion: All based on motion graph. Keyframe animations use linear interpolation as default. The two later problems both connect closely to the skeleton. The goal of transition is to get a right and smooth result, and adding displacement curves is more of a constraint problem.