procedural haptic texture jeremy shopf marc olano university of maryland, baltimore county

Post on 03-Jan-2016

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

jshopf1@umbc.edu

http://userpages.umbc.edu/~jshopf1

http://cs.umbc.edu/vangogh

top related