10.01.2015 Views

Real-Time Weighted Pose-Space Deformation on the GPU

Real-Time Weighted Pose-Space Deformation on the GPU

Real-Time Weighted Pose-Space Deformation on the GPU

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

T. Rhee, J.P. Lewis, and U. Neumann / EG 2006<br />

(a) (b) (c)<br />

(d) (e) (f)<br />

Figure 1: Skinning result of each algorithm: (a) SSD, (b) PSD, (c) WPSD, (d) Difference between SSD and PSD (blue dotted<br />

area), (e) Difference between SSD and WPSD (blue dotted area), (f) Difference between PSD and WPSD (blue dotted area);<br />

areas around blue and red arrows represent unexpected results of SSD and PSD respectively.<br />

3.1. Skeletal subspace deformati<strong>on</strong> (SSD)<br />

SSD [MTLT88] is based <strong>on</strong> <strong>the</strong> weighted blending of an<br />

affine transformati<strong>on</strong> of each joint by equati<strong>on</strong> 2.<br />

n joint<br />

v a = S(v 0 )=( ∑ w j T j )v 0 (2)<br />

j=1<br />

where n joint is <strong>the</strong> number of joints, v a is a vertex in an<br />

arbitrary pose p a, v 0 is a vertex in <strong>the</strong> rest pose, and w j<br />

is a joint weight that defines <strong>the</strong> c<strong>on</strong>tributi<strong>on</strong> of joint j’s<br />

transformati<strong>on</strong>s to <strong>the</strong> current vertex. The weight w j can<br />

be assigned by <strong>the</strong> artist to c<strong>on</strong>trol deformati<strong>on</strong> and usually<br />

∑ n joint<br />

j=1 (w j)=1.0. This simple algorithm is used in many<br />

commercial graphics packages and real-time rendering applicati<strong>on</strong>s<br />

but shows several limitati<strong>on</strong>s, because <strong>the</strong> deformati<strong>on</strong><br />

of this method is restricted to <strong>the</strong> subspace of <strong>the</strong><br />

affine transformati<strong>on</strong> of <strong>the</strong> joints [LCF00].<br />

3.2. <str<strong>on</strong>g>Pose</str<strong>on</strong>g> space deformati<strong>on</strong> (PSD)<br />

If we have a sufficient set of examples to describe <strong>the</strong> movement<br />

of an articulated object, we can interpolate displacement<br />

in “pose space” [LCF00]. Each sample pose c<strong>on</strong>sists<br />

of sample skin geometry and <strong>the</strong> related joint skelet<strong>on</strong>, and<br />

a vector c<strong>on</strong>taining <strong>the</strong> joint angles represents <strong>the</strong> pose.<br />

If we translate each skinning sample k to <strong>the</strong> rest coordinate<br />

frame using inverse SSD, <strong>the</strong> displacement between <strong>the</strong><br />

sample vertex v k and <strong>the</strong> rest pose vertex can be calculated:<br />

n joint<br />

d k =( ∑ w j T j ) −1 v k − v 0 (3)<br />

j=1<br />

where v k is a vertex in sample pose p k and d k is <strong>the</strong> displacement<br />

of this vertex relative to v 0 in <strong>the</strong> sample pose p k ; <strong>the</strong><br />

o<strong>the</strong>r variables are defined as in equati<strong>on</strong> 2. Note that <strong>the</strong><br />

inverse here is of <strong>the</strong> weighted sum of affine transforms.<br />

After defining <strong>the</strong> displacement of each pose, <strong>the</strong> displacement<br />

at an arbitrary pose can be calculated by RBF<br />

(Radial Basis Functi<strong>on</strong>) [LCF00] or normalized radial basis<br />

functi<strong>on</strong> [KM04] interpolati<strong>on</strong> of <strong>the</strong> example poses’ displacements.<br />

The displacement d a of a vertex in an arbitrary pose p a<br />

can be calculated as<br />

n pose<br />

d a = D(p a)= ∑ r k (p a)d k (4)<br />

k=1<br />

where n pose is <strong>the</strong> number of sample poses, d a is a displacement<br />

of <strong>the</strong> vertex in an arbitrary pose p a, and <strong>the</strong> weight<br />

r k (p a) defines <strong>the</strong> c<strong>on</strong>tributi<strong>on</strong> of each sample pose.<br />

Normalized Radial Basis Functi<strong>on</strong>s can smoothly interpolate<br />

pose space using:<br />

n pose<br />

f t(p a)= ∑ λ t,k φ k (γ k ) (5)<br />

k=1<br />

where f t(p a) is <strong>the</strong> radial basis weight functi<strong>on</strong> for example<br />

t evaluated at an arbitrary pose p a, n pose is <strong>the</strong> number of<br />

c○ The Eurographics Associati<strong>on</strong> and Blackwell Publishing 2006.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!