mesh-based inverse kinematics robert w. sumner matthias zwicker. jovan popovic mit craig gotsman...
DESCRIPTION
DemoTRANSCRIPT
Mesh-Based Inverse Kinematics
Robert W. Sumner Matthias Zwicker. Jovan PopovicMIT
Craig Gotsman Harvard University
Demo
Demo
f1 f2 f3f4 f5
f6
f7 f8 f9
f10
w1
w2 w3 w4 w5
w6
w7 w8w9
w10
Compute Feature VectorsNonlinear Combination F= Σwifi
What is this paper about?
• New framework – Feature Vectors– Traditional Point-based
• Nonlinear mesh interpolation– Linear is good?
• Efficient Optimization
• Feature Vector = a group of deformation gradients.• What is deformation gradient
– affine mapping is– Φ(p) = T*p + d, T = rotation, scaling, skewing– dΦ(p) / dp = T is deformation gradient
• So given two triangles, how to find T?
Feature Vectors
┌││└
┐││┘
T┌││└
┐││┘
XYZ
┌││└
┐││┘
dX +
Reference Deformed
Feature Vectors
• Deformation gradient of affine mapping– Φ(p) = T*p+d, T = rotation, scaling, skewing
• Illustration in 2-D curveΦ 1 Φ 2 Φ 3
Φ 4Φ 5
Φ 6
F = [T1, T2, T3, T4, T5, T6 ]T
In Mesh IK
T
d
T 1 T 2 T 3 T 4 T 5 T 6
•Interpolation among feature vectors•Yet
In 3D
Output
?Targ
et
Output
OutputOutput?
How it works?
• Actually solving for position directly– x = argminx || f(x) - F || – f(x) = deformation gradient using x
– x = argmin x ||G’x – (F + c)||
Output
Output
f1
f2
x = argmin x ||G’x – [(f1*w1 + f2*w2) + c] ||
Outline
• New framework• Non-linear mesh interpolation
– How to interpolate linearly?– Polar decomposition– Exponential map
• Efficient Optimization
Linear Feature Space
• We can find the desired mesh with feature vector fw = M*w, M is [f1,f2, … fn]
• x*, w* = argmin || Gx – (Mw + c) ||• If set Mw = davg + Σwidi
– x*, w* = argmin || Gx – (Mw + c) || + k*||w||
= *[1/3 2/3]T
┌││││└
┐││││┘
NonLinear versus Linear
Alternative: Nonlinear
• Polar decomposition– rotation & scaling differently
• Exponential map– different interpolation
• “Matrix animation and Polar Decomposition” - Shoemake & Duff• “Linear Combination of Transformation” - Marc Alexa
Polar Decomposition
R RS
┌││││││││└
┐││││││││┘
R1S1
R2S2
R3S3
. . .RnSn
┌││││││││└
┐││││││││┘
T1
T2
T3
. . .Tn
==
R must be orthogonal => SVD : UΣVT, QR : RL
Exponential Map
T = =>
Half T = =>
For T x M = Tb x Ta x M if a = b = 1/2
So ½ T x ½ T = T => ½ of T = T ½
AxB = BxA? (Commutative) For T ½ T ⊙ ½ ⊙ = exp( Log(A) + Log(B) )
T ½ T ⊙ ½ = exp( ½ Log(T) + ½ Log(T) ) = T
Examples
Nonlinear Feature Space• Polar decomposition Tj = Rj * Sj,
• Exponential map – Tj(w) = exp(Σwi*log(Rij)) * Σwi*Sij
• We can find the desired mesh with feature vector fw = M*w = [f1,f2, … fn] * [w1, w2, … wn]T
• Defined as fw = [T1(w1), T2(w2), … Tn(Wn)] = M(w)
= *[1/3 2/3]T
┌││││└
┐││││┘
Why use exponential map?
1. Easier to find derivatives, with respect to w
– Tj(w) = R(w) * S(w)– dwkTj(w) = dR(w) * S(w) + R(w) * dS(w)
2. Then why do we need derivatives?– x*, w* = argmin || Gx – [M(w)+c] ||– Gauss-Newton Algorithm– M(w +δ) = M(w) + dwM(w)* δ
Gauss-Newton Method
• For k-th iteration:• δk, xk+1 = argmin||Gx – dwM(wk)*δ–(M(wk)+c)||• wk+1 = wk + δk
• ATA * [x, δ]T = AT( M(wk) + c )
• A =
• Take about a minute or longer to solve
┌││└
┐││┘
G | - J1
G | - J2
G | - J3
Ji = dwM(w)
Outline
• New framework
• Non-linear mesh interpolation
• Efficient Optimization– Specialized Cholesky-Factorization
Optimized Solver
• General Cholesky or QR factorization might not suffice
• The structure of ATA in previous normal equation is well defined
┌│││└
┐│││┘
GTG - GTJ1
GTG - GTJ2
GTG - GTJ3
- J1TG - J2
TG - J3TG ΣJi
TJi
ATA =
┌││└
┐││┘
G | - J1
G | - J2
G | - J3
A =
ATA * [x, δ]T = AT( M(wk) + c )
Precomputation┌│││└
┐│││┘
GTG - GTJ1
GTG - GTJ2
GTG - GTJ3
- J1TG - J2
TG - J3TG ΣJi
TJi
ATA =
┌│││└
┐│││┘
R - R1
R - R2
R - R3
Rs
U =
Make U such that UTU = ATA
where RTR = GTG, this R can be pre-computed
┌││└
┐││┘
G | - J1
G | - J2
G | - J3
A =
ATA * [x, δ]T = AT( M(wk) + c )
Solving for
┌│││└
┐│││┘
RTR - RTR1
RTR - RTR2
RTR - RTR3
- R1TR - R2
TR - R3TR ΣRi
TRi + RsTRs
UTU =
┌│││└
┐│││┘
GTG - GTJ1
GTG - GTJ2
GTG - GTJ3
- J1TG - J2
TG - J3TG ΣJi
TJi
ATA = =
1. Solve Ri ,where RTRi = GTJi, 1<=i<=3
2. Solve Rs ,where RsTRs = Σ Ji
TJi - RiTRi
3. The bottleneck for MeshIK
Numerical Result