Procedural Haptic Texture Jeremy Shopf Marc Olano University of Maryland, Baltimore County
Introduction We have designed a system for procedurally defining haptic surface interaction Background Haptic Rendering Haptic Texture Procedural Shading
Haptics Creating a sense of touch through the use of force-feedback Increasing user experience by adding another mode of interaction Essential to creating an immersive virtual experience SensAble PHANToM
Application Domains Surgical simulation Molecular modeling Teleoperation Telerobotics Telemedicine Virtual prototyping Image courtesy of Dr. Roger Webster
Haptic Force Models Generate response forces based on the position of the haptic cursor in the scene Restorative force based on Hooke’s Law F = kΔx → → k = stiffness of object |Δx| = depth of penetration →
Haptic Texturing Adding tangential forces creates the sensation of surface friction and texture Increases realism Convey information Molecular biology example Changing information requires flexibility
Procedural Shading Defining the visual appearance of an object with a short procedure or “shader” Pixar’s RENDERMAN ©Pixar
Stochastic Methods Use noise to create pseudo- randomness ATI Procedural Wood Demo
Motivation Describe haptic surface characteristics with short procedures/shaders Provide familiar shading environment (C++, RENDERMAN) Compatible with existing force models
Haptic Shading Framework Features User-defined surface characteristics User-defined shader parameters that can be changed during execution Adjust size of surface features Apply to arbitrary geometry Change shaders dynamically
Standard Haptic Rendering
Haptic Shading Framework
System Shader Parameters * * * * * * * *
Anatomy of a Haptic Shader HapticTextureOut GetHapticTexture(HapticTextureIn input, DLLparams params) { float ringscale = params.GetValue("ringscale", 5.0); float lightwood_staticF = params.GetValue("lightwood_staticF", 0.02); float lightwood_dynF = params.GetValue("lightwood_dynF", 0.02); float darkwood_staticF = params.GetValue("darkwood_staticF", 0.5); float darkwood_dynF = params.GetValue("darkwood_dynF", 0.5); HapticTextureOut output; vector3 PP; float y, z, r; PP = before.p + noise3(before.p); y = ycomp(PP); z = zcomp(PP); r = sqrt(y*y + z*z); /* map radial distance r into ring position [0, 1] */ r *= ringscale; r += abs(noise1(r,r,r)); r -= floor (r); /* use ring position r to select wood friction */ after.staticF = mix(lightwood_staticF, darkwood_staticF, r); after.dynamicF = mix(lightwood_dynF, darkwood_dynF, r); after.f = before.f; return output; } Fetch user-defined parameters Shader Body Return Results Fetch User-defined Parameters float ringscale = params.GetValue("ringscale", 5.0); float lightwood_staticF = params.GetValue("lightwood_staticF", 0.02); float lightwood_dynF = params.GetValue("lightwood_dynF", 0.02); float darkwood_staticF = params.GetValue("darkwood_staticF", 0.5); float darkwood_dynF = params.GetValue("darkwood_dynF", 0.5); HapticTextureOut output; vector3 PP; float y, z, r; PP = before.p + noise3(before.p); y = ycomp(PP); z = zcomp(PP); r = sqrt(y*y + z*z); /* map radial distance r into ring position [0, 1] */ r *= ringscale; r += abs(noise1(r,r,r)); r -= floor (r); /* use ring position r to select wood friction */ after.staticF = mix(lightwood_staticF, darkwood_staticF, r); after.dynamicF = mix(lightwood_dynF, darkwood_dynF, r); after.f = before.f; Shader Body
Comparison to Visual Shading Interactive Reqs Insufficient Refresh Shader Executions Haptic Rendering 1000 HzInstability1 Graphics Rendering HzFlickering1 million+
Dynamic Surface Characteristics Model virtual geometry Change surface properties based on proxy movement Change surface properties using stochastic methods Change surface properties based on user-interaction with the object
Dynamic Surface Characteristics Model virtual geometry Add small-scale surface features Increase/decrease collision force based on surface displacement
Dynamic Surface Characteristics Surface properties depend on direction of movement Anisotropic shader Friction based on proxy direction
Dynamic Surface Characteristics Using stochastic methods Wood shader Alter surface friction based on wood grain
Dynamic Surface Characteristics Modify texture based on interaction Store surface properties in a texture Plaque shader
Future Directions Apply to surface-to-surface interaction Programmable hardware on the device for force modeling would dramatically increase performance Demonstrate on more haptic devices
Conclusion We have presented a novel technique that uses user-defined shaders to redefine the haptic experience Dynamic haptic texture (example: a surface that changes texture as a user interacts with it) Change of surface shape and contours without additional object geometry Dynamically loaded haptic shaders can be applied to arbitrary objects in the virtual scene
Acknowledgments Funded in part by the UMBC SRIS/RAS grant program Thanks to Dr. Alan Liu, Dr. Roger Webster, Alark Joshi, Kishalay Kundu and the UIST paper reviewers for their assistance
Questions? Jeremy Shopf