View Single Post
Old 10-08-2009, 02:34 PM
JimC JimC is offline
Join Date: Jun 2009
Posts: 42
Question CAVE, navigation, tracked wand, coordinate systems

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:

# 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 = 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:

wandTracker = SyzygyTracker( service, matrixIndex=1 )
wandRender = viz.add('box.wrl')
wandRender.setScale( .02, .02, 2. )
wandLink = 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?

Reply With Quote