Procedural Haptic Texture Jeremy Shopf Marc Olano University of Maryland, Baltimore County.
-
Upload
amberlynn-griffin -
Category
Documents
-
view
215 -
download
0
Transcript of Procedural Haptic Texture Jeremy Shopf Marc Olano University of Maryland, Baltimore County.
Procedural Haptic Texture
Jeremy ShopfMarc Olano
University of Maryland, Baltimore County
Introduction
We have designed a system for procedurally defining haptic surface interaction
BackgroundHaptic RenderingHaptic TextureProcedural 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
www.povray.org 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 ShaderHapticTextureOut 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
InteractiveReqs
Insufficient Refresh
Shader Executions
Haptic Rendering
1000 Hz Instability 1
GraphicsRendering
10-60 Hz Flickering 1 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
http://userpages.umbc.edu/~jshopf1
http://cs.umbc.edu/vangogh