Mesh-Based Inverse Kinematics Robert W. Sumner Matthias Zwicker. Jovan Popovic MIT Craig Gotsman...

Preview:

DESCRIPTION

Demo

Citation preview

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