I have Vizard running on two walls of a CAVE. Head-tracking is working perfectly, and I can use a tracked wand to point and fly around. Here's a code fragment to indicate what I've done so far:
Code:
# SyzygyTracker subclasses viz.VizNode+viz.EventClass
viewtracker = SyzygyTracker( service, matrixIndex=0 )
# Ditto for SyzygyNagivator
navTracker = SyzygyNagivator( service, matrixIndex=1, xIndex=0, zIndex=1, speed=1. )
# Create and configure a Cave object
cave = vizcave.Cave()
makeCAVE( cave )
# Attach the head tracker
cave.setTracker( pos=viewtracker, ori=viewtracker )
# Attach the navigation (wand) tracker.
caveorigin = vizcave.CaveView( viewtracker )
navLink = viz.link( navTracker, caveorigin )
I want to have a virtual object attached to the wand. I defined another tracker object tied to the wand and tried the following:
Code:
wandTracker = SyzygyTracker( service, matrixIndex=1 )
wandRender = viz.add('box.wrl')
wandRender.setScale( .02, .02, 2. )
wandLink = viz.link( wandTracker, wandRender )
...which initially works great, I end up with a virtual rod attached to the wand. However, its position is being set in world coordinates, so as soon as I start flying around it gets left behind. I've tried setting various Src and Dest flags on the link, or add()ing it to the caveorigin, but I don't really understand what I'm doing and the things I've tried so far haven't worked. What's the
right way to do this?
Thanks,
-Jim