530 likes | 684 Views
A Self Shadow Algorithm for Dynamic Hair using Density Clustering. Tom Mertens 1 Jan Kautz 2 Philippe Bekaert 1 Frank Van Reeth 1 Limburgs Universitair Centrum - Belgium 1 MIT – Cambridge, MA 2. Rendering Hair. Realistic appearance Light Scattering
E N D
A Self Shadow Algorithm for Dynamic Hair using Density Clustering Tom Mertens1 Jan Kautz2 Philippe Bekaert1 Frank Van Reeth1 Limburgs Universitair Centrum - Belgium1 MIT – Cambridge, MA2
Rendering Hair • Realistic appearance • Light Scattering [Marschner et al ’03] • Multiple Scattering • Self-shadows • Dynamic hair, real-time rate GPU Without self-shadows With self-shadows
Self-Shadows for Hair • Canonical solutions • Shadow Volume [Crow ’77] • Shadow Mapping [Williams ’78]
Self-Shadows for Hair • Canonical solutions • Shadow Volume [Crow ’77] • Shadow Mapping [Williams ’78] • Problems • Geometric complexity • Hair strand ≤ pixel → aliasing
Shadow Mapping light source view shadow map [Williams et al. ’78]
Shadow Mapping light source view depth( ) shadow map depth( ) > depth( ) shadowed [Williams et al. ’78]
Shadow Mapping 1D visibility function [Williams et al. ’78]
area a = hair area pixel Deep Shadow Maps 1D visibility function [Lokovic et al. ’00]
1D visibility function Deep Shadow Maps compression Used during offline rendering [Lokovic et al. ’00]
Opacity Shadow Maps 1D visibility function Near interactive performance Regular sampling [Kim et al. ’01] Images from [Kim et al. ‘01]
s t s - s dt ò t = V ( s ) e 0 Hair as a Density Field density
s t s - s dt ò t = V ( s ) e 0 Hair as a Density Field density
s t s - s dt ò t = V ( s ) e 0 Hair as a Density Field density
s t D s P - s D a = s e t i i s - s dt ò t = V ( s ) e 0 Hair as a Density Field density
s t D s å b P - s D a = s b = - a e ln i t i i s = i i t D s i s - s dt ò t = V ( s ) e 0 Hair as a Density Field and density density estimation
Density Clustering • Density estimation histogram s s Our approach: non-uniform • Uniform • Opacity Shadow Mapping [Kim et al. ’01]
Density Clustering Rasterize hair strands
Density Clustering Rasterize hair strands Pre-filtering
Density Clustering d0 β0 Rasterize hair strands Intersection at depth d0 with weight β0
Density Clustering d0 β0 Rasterize hair strands
Density Clustering d0 d1 β0β1 Rasterize hair strands
Density Clustering d0 d1 d2 β0β1β2 Rasterize hair strands
Density Clustering d0 d1 d2 … dn β0β1β2 … βn Rasterize hair strands
Density Clustering d0 d1 d2 … dn β0β1β2 … βn Clustering of di’s K-means (while rasterizing) • Pick initial clusters • Update clusters • get closest samples • new cluster pos • = mean of closest
Density Clustering d0 d1 d2 … dn β0β1β2 … βn Clustering of di’s K-means (while rasterizing) • Pick initial clusters • Update clusters • get closest samples • new cluster pos • = mean of closest
Density Clustering d0 d1 d2 … dn β0β1β2 … βn Clustering of di’s K-means (while rasterizing) • Pick initial clusters • Update clusters • get closest samples • new cluster pos • = mean of closest
Density Clustering d0 d1 d2 … dn β0β1β2 … βn Clustering of di’s K-means (while rasterizing) Histogram bins μ = mean σ = standard dev μ μ ~σ ~σ
s t Density Clustering d0 d1 d2 … dn Fill bins β0β1β2 … βn s
s t Density Clustering d0 d1 d2 … dn Fill bins β0β1β2 … βn s
s t s ò s dt t 0 s - s dt ò t = V ( s ) e 0 Density Clustering d0 d1 d2 … dn Fill bins β0β1β2 … βn s Integrate s Exp s
Rendering Overview • For light source view • Compute initial clusters • Rasterize K-means • Construct bins • Fill histogram bins • Integrate σt
s ò s dt t 0 Rendering Overview • For light source view • Compute initial clusters • Rasterize K-means • Construct bins • Fill histogram bins • Integrate σt • Eye view: shadow attenuation • Use piecewise linear function as lookup
Conceptual Comparison all intersections along ray Ground truth Uniform (8-bins) Non-uniform (4-means clustering)
Qualitative Comparison Our method (4 clusters) Opacity Shadow Mapping [Kim et al. ’01] (256 slices)
Qualitative Comparison Our method (4 clusters) Opacity Shadow Mapping [Kim et al. ’01] (256 slices)
Conclusion • Realistic self-shadowing • Interactive rates • 200K line segments @ 3Hz (scales linearly) • Order of magnitude speedup Opacity Sh. Maps
Conclusion • Realistic self-shadowing • Interactive rates • 200K line segments @ 3Hz (scales linearly) • Order of magnitude speedup Opacity Sh. Maps • Future work • Implementation on next generation HW 4x speedup expected (due to floating point blending) • Better initial clusters for K-means • Explore other cluster techniques • Smoke, clouds, …
Thank you for your attention The first author gratefully acknowledges the European Commission (European Regional Development Fund).
Qualitative Comparison Our method (4 clusters) Opacity Shadow Mapping [Kim et al. ’01] (256 slices)
Qualitative Comparison Our method (4 clusters) Opacity Shadow Mapping [Kim et al. ’01] (256 slices)
Qualitative Comparison Our method (4 clusters) Opacity Shadow Mapping [Kim et al. ’01] (256 slices)
Qualitative Comparison N=256 N=64 N=16 N=4 Opacity Shadow Mapping [Kim et al. ’01] (N slices) Our method (4 clusters)
Qualitative Comparison N=256 N=64 N=16 N=4 Opacity Shadow Mapping [Kim et al. ’01] (N slices) Our method (4 clusters)
Qualitative Comparison N=256 N=64 N=16 N=4 Opacity Shadow Mapping [Kim et al. ’01] (N slices) Our method (4 clusters)