IMPLEMENTATION AND ANALYSIS OF SINGLE
SCATTERING MODELS FOR HAIR
Student: Javier Meseguer de PazSupervisor: Jan Kautz
CONTEXT Hair simulation
Modelling Animation Rendering
Single scattering Multiple scattering Shadows Other effects Data acquisition and capture
MOST IMPORTANT WORKS Kajiya
First shading model for hair (actually fur) Marschner et. al.
First physically-based shading model for hair Nguyen and Donelly
First real-time implementation of Marschner Zinke
First formal mathematical framework to study and generate hair shading models
GOALS OF THE PROJECT
Derive Marschner’s model using his framework
Hint a more general model could be used in real-time
Explain every step in detail
Derive the model
Implement the model
Compare the results
Zinke did Zinke did not
GOALS OF THE PROJECT
Explain every step in detail
Derived the model
Implement the model …and the others
Compare the results
So we:
FRAMEWORK• A precise notation is set
FRAMEWORK
),,,,,,( oooiiiBFSDF hhsf
),,,( ooiiBCSDFf
• Models every detail
• Requires fiber width less than a pixel• Suitable for real-time rendering
• Two kind of functions are defined:
• It is possible to convert the BFSDF into BCSDF
oioooiiiBFSDFooiiBCSDF hhshhsff ddd),,,,,,(21),,,(
1
1
1
1
FRAMEWORK To derive models, we start with the BFSDF for
perfect cylinderTRTBFSDF
TTBFSDF
RBFSDFBFSDF ffff
R TRT
TT
interior:refrac. index nabsoprtion s
FRAMEWORK Then, we modify it to match hair’s model -
MarschnerTRTBFSDF
TTBFSDF
RBFSDFBFSDF ffff
FRAMEWORK Then, we modify it to match hair’s model -
ZinkeTRTBFSDF
TTBFSDF
RBFSDFBFSDF ffff
FRAMEWORK And we convert from BFSDF to BCSDF
In Marschner model integrals can be solved In the case of Zinke only simplified a little:
BCSDFBFSDF ff
IMPLEMENTATION We pre-compute the model offline:
Numerical integration for these Caching to speed-up this
IMPLEMENTATION And store it into floating-point textures:
• Then, in real-time, we just have to lookup
RESULTS
RESULTS
RESULTS
COMPARISON Complexity
Kajiya is the easiest (it’s just a shader!) Marschner is quite complex Zinke even more! (numerical integration involved)
COMPARISON Speed
Kajiya doesn’t have pre-computation Marschner is 2500 times faster than Zinke on
average
Rendered images Kajiya looks quite good Marschner and Zinke are essentially the same
CONCLUSIONS It is possible to derive and implement a real-
time version of Zinke model However, it is not really a good choice Kajiya has a very good quality/complexity
trade-off Marschner looks good but definitely needs
shadowing to show its potential