Six-DOF Haptic Rendering II
CPSC 599.86 / 601.86 Sonny Chan - University of Calgary
Six- DOF Haptic Rendering II Outline Generic model for proxy-based - - PowerPoint PPT Presentation
CPSC 599.86 / 601.86 Sonny Chan - University of Calgary Six- DOF Haptic Rendering II Outline Generic model for proxy-based rendering Study of three significant 6-DOF haptic rendering algorithms - McNeely, Puterbaugh, & Troy 1999 -
CPSC 599.86 / 601.86 Sonny Chan - University of Calgary
position +
force + torque position +
force + torque position +
contact points + normals or forces
position +
force + torque force + torque position +
m d −Fspring
Haptic Handle Dynamic Object
kR Fspring kT bT bR
Fc = kT x + bT v τ c = kRθ + bRω
position, orientation of the proxy, given
from virtual coupling
constraints
force + torque position +
position +
contact points + normals or forces
r1 r2 F1 F2 M1 = r1 × F1 M2 = r2 × F2
CM
Fc τ c F = Fc + X
i
Fi = ma τ = τ c + X
i
Mi = ICMα + ω × ICMω
yn+1 = yn + ∆t ˙ yn y(t) = x θ P = mv L = I ω ˙ y(t) = ˙ x ˙ θ ˙ P ˙ L =
1 mP
ω F τ
yn+1 = yn + ∆t ˙ yn+1 yn+1 = yn + ∆t ˙ yn + ∂ ˙ y ∂y (yn+1 − yn)
I − ∆t∂ ˙ y ∂y ◆ (yn+1 − yn) = ∆t ˙ yn
detection was the thoughest in the book!
also requires penetration depth
challenge to 6-DOF haptic rendering...
position +
contact points + normals or forces
[From W. A. McNeely et al., Proc. SIGGRAPH, 1999.]
Figure 3. Teapot: (a) polygonal model, (b) voxel model, (c) (a) (b) (c)
Figure 4. Assignment of 2-bit voxel values. 1 1 1 1 2 2 1 1 2 3 2 2 3 3 3 3
Exact Surface
Figure 5. Criterion for exact-surface interpenetration.
1 1 2
Surface Layer Force Layer
Offset Layers OK BAD Exact Surface
Figure 1. Voxmap colliding with point shell.
Voxmap Point Shell and Normals Original Objects
tions from such point-voxel intersections. angent-plane force model.
d
Force Vector Along Point Normal Point Shell Static Surface Tangent Plane
F = Kff d
1 10N ,
[From M. A. Otaduy & M. Lin, Proc. IEEE World Haptics Conference, 2005.]
[From M. A. Otaduy & M. Lin, ACM Transactions on Graphics 22(3), 2003.]
simplify components while preserving convexity
Hierarchy of the Lower Jaw.
LOD hierarchy doubles as bounding volume hierarchy!
for collision detection, except...
higher resolution is deemed perceptible
approximate geometry at the current LOD
Fp = −kN(x+Rr−p0)−kdn−bN(v+ω ×r) Tp = (Rr)×Fp (21)
stiffness, can cause instability
[From M. Ortega et al., IEEE Trans. Visualization and Computer Graphics 13(3), 2005.]
3-DOF god-object
and normals only – presumes objects do not interpenetrate
that does not violate contact constraints
position +
position +
contact points + normals position +
r2
CM
r1
ˆ n1 ˆ n2
aCM · ˆ nk + α · (rk × ˆ nk) ≥ 0
ac = arg min
a
G(a) G(a) = 1
2 (a − au)T M (a − au)
= 1
2||a − au||2 M
a = (aCM, α)T au = 1
2 (xh − xs)
xs xh au
aCM · ˆ nk + α · (rk × ˆ nk) ≥ 0 G(a) = 1
2 (a − au)T M (a − au)
x0
s = xs + 1 2ac
proxy solver requires non-interpenetrating contacts
detection is one method to find contacts and normals while enforcing non- interpenetration
position +
contact points + normals
intersection test is a form of continuous collision detection
infinitely small, so it will always miss polygonal geometry unless CCD is used!
pt pt+1
[From S. Redon et al., Transactions of the ASME 5, 2005.]
position of the avatar at discrete time steps
arbitrary object motion subject to:
Pt Pt+1 P(t) = ?
equation for rigid-body motion between the two known positions:
angle and u is the rotation axis between configurations
T(t) = c0 + t(c1 − c0) R(t) = cos(ωt)(I − uuT )R0 + sin(ωt)u∗R0 + uuT R0 x(t) = P(t)x c0 c1 R1 R0
at time t if
− − − − − → a(t)c(t) · ⇣− − − − − → a(t)b(t) × − − − − − → c(t)d(t) ⌘ = 0 − − − − − → a(t)b(t) · ⇣− − − − − → b(t)c(t) × − − − − − → b(t)d(t) ⌘ = 0
[a, b] + [c, d] = [a + c, b + d] [a, b] − [c, d] = [a − d, b − c] [a, b] × [c, d] = [min(ac, ad, bc, bd), max(ac, ad, bc, bd)] 1/ [a, b] = [1/b, 1/a] if a > 0 or b < 0 [a, b] / [c, d] = [a, b] × (1/ [c, d]) if c > 0 or d < 0 [a, b] 6 [c, d] if b 6 c
− − − − − → a(t)c(t) · ⇣− − − − − → a(t)b(t) × − − − − − → c(t)d(t) ⌘ = 0 − − − − − → a(t)b(t) · ⇣− − − − − → b(t)c(t) × − − − − − → b(t)d(t) ⌘ = 0
t = [0, 1] t = [0, 1
2]
t = [ 1
2, 1]
t = [0, 1
4]
t = [ 1
4, 1 2]
t = [ 1
2, 3 4]
t = [ 3
4, 1]
||− − − − − − → c1(t)c2(t)|| ≤ r1 + r2 (c2(t) − c1(t))2 ≤ (r1 + r2)2
between the avatar and the scene along a motion path
but computes time of contact to a precision
structures like BVHs
rates for large meshes
threads at different rates...
position +
force + torque position +
force + torque position +
contact points + normals or forces
Soft Constraints Hard Constraints Massless Proxy
Quasi-Static Equilibrium Distance Minimization
Proxy with Mass
Penalty-Based Dynamics Constrained Dynamics