using flex for real-time fluid simulation in virtual...
TRANSCRIPT
Slide 2
Introduction
• Temporal bone surgery among most complex
• Average $80,000/year to properly train ENT surgeons
• Lack of cadaveric training material
Slide 5
Fluid Setup
• Fixed number of particles
• Recycle particles
• Blood and saline same phase
• Multiple mesh collisions
• Signed Distance Field (SDF)
Slide 6
SDF Issues
• Too expensive for real-time performance
• Particles fall through SDF
Dataset Size 7683
(s) 3843
(s) 1923
(s) 963
(s)
Intel Xeon E5-1650 v3 3.5 GHz 2179.01 216.517 19.6141 1.52809
Slide 8
SDF Results
0.001
0.01
0.1
1
10
76838419296
Tim
e (
s)
Quadro K5000
Quadro M5000
Quadro P5000
Quadro GP100
Slide 12
Bleeding
• Create static emitter
• Constant bleeders for critical structures
• Blood and saline mixing
Slide 13
Multi-thread configuration
void updateThread (FluidSim *sim) {
sim->init ();
std::thread upThread =
std::thread([sim] { updateThread(sim); });
while (!sim->ShuttingDown) {
double dt = 1.0 / float (sim->DeltaTime);
double startTime = timer.read ();
sim->update ();
while (timer.read () - startTime < dt){}
}
upThread.join();
}
Slide 14
Multi-thread configuration
void updateThread (FluidSim *sim) {
sim->init ();
std::thread upThread =
std::thread([sim] { updateThread(sim); });
while (!sim->ShuttingDown) {
double dt = 1.0 / float (sim->DeltaTime);
double startTime = timer.read ();
sim->update ();
while (timer.read () - startTime < dt){}
}
upThread.join();
}
Slide 15
Multi-GPU
Main
Thread
(Render)
Fluid
Update
Update Fluid buffers
For Rendering
Add emitter
Remove suction
FLeX Update
GPU 0 GPU 1
Update Volume
for SDF
Slide 20
Special Thanks
• Hector Medina-Fetterman
• Dennis Sessanna (NVIDIA)
• Funded by NIDCD - R01 DC011321 (2011-2016)