Using FLeX for Real-time Fluid Simulation in Virtual Surgery Brad - - PowerPoint PPT Presentation

using flex for real time fluid simulation in virtual
SMART_READER_LITE
LIVE PREVIEW

Using FLeX for Real-time Fluid Simulation in Virtual Surgery Brad - - PowerPoint PPT Presentation

Using FLeX for Real-time Fluid Simulation in Virtual Surgery Brad Hittle May 11 th 2017 Slide 1 Introduction Temporal bone surgery among most complex Average $80,000/year to properly train ENT surgeons Lack of cadaveric training


slide-1
SLIDE 1

Slide 1

Using FLeX for Real-time Fluid Simulation in Virtual Surgery

Brad Hittle May 11th 2017

slide-2
SLIDE 2

Slide 2

Introduction

  • Temporal bone surgery among most complex
  • Average $80,000/year to properly train ENT surgeons
  • Lack of cadaveric training material
slide-3
SLIDE 3

Slide 3

Virtual Surgery

  • Complex surgeries
  • Teaching/Training
  • Informative feedback
slide-4
SLIDE 4

Slide 4

Fluid Simulation?

  • Multi-instrument process
  • Visibility
  • Temperature
slide-5
SLIDE 5

Slide 5

Fluid Setup

  • Fixed number of particles
  • Recycle particles
  • Blood and saline same phase
  • Multiple mesh collisions
  • Signed Distance Field (SDF)
slide-6
SLIDE 6

Slide 6

SDF Issues

  • Too expensive for real-time performance
  • Particles fall through SDF

Dataset Size 768

3 (s)

384

3 (s)

192

3 (s)

96

3 (s)

Intel Xeon E5-1650 v3 3.5 GHz 2179.01 216.517 19.6141 1.52809

slide-7
SLIDE 7

Slide 7

SDF Approximation

  • Subsample
  • Edge detection
  • Shelling algorithm
  • Scale
slide-8
SLIDE 8

Slide 8

SDF Results

0.001 0.01 0.1 1 10 768 384 192 96 Time (s) Quadro K5000 Quadro M5000 Quadro P5000 Quadro GP100

slide-9
SLIDE 9

Slide 9

Cost of Approximation?

slide-10
SLIDE 10

Slide 10

Irrigation

  • Emitters
  • Absorbers
slide-11
SLIDE 11

Slide 11

Blood Label

  • Setup
  • Algorithm
  • Cull Extra Voxels
slide-12
SLIDE 12

Slide 12

Bleeding

  • Create static emitter
  • Constant bleeders for critical structures
  • Blood and saline mixing
slide-13
SLIDE 13

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
SLIDE 14

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
SLIDE 15

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-16
SLIDE 16

Slide 16

Simulation in Action

slide-17
SLIDE 17

Slide 17

Simulation in Action

slide-18
SLIDE 18

Slide 18

Simulation in Action

slide-19
SLIDE 19

Slide 19

Simulation in Action

slide-20
SLIDE 20

Slide 20

Special Thanks

  • Hector Medina-Fetterman
  • Dennis Sessanna (NVIDIA)
  • Funded by NIDCD - R01 DC011321 (2011-2016)
slide-21
SLIDE 21

Slide 21

Contact Information

Brad Hittle bhittle@osc.edu