WorldViz User Forum

WorldViz User Forum (https://forum.worldviz.com/index.php)
-   Vizard (https://forum.worldviz.com/forumdisplay.php?f=17)
-   -   CAVE, navigation, tracked wand, coordinate systems (https://forum.worldviz.com/showthread.php?t=2310)

JimC 10-08-2009 02:34 PM

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:

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

farshizzo 10-08-2009 03:05 PM

Have you tried setting the cave origin as the parent of the wand object?
Code:

wandRender = viz.add('box.wrl',parent= caveorigin)
This should work as long as your wandtracker/viewtracker objects share the same coordinate system.

JimC 10-09-2009 09:09 AM

Not quite, I'm afraid. That is, it may be mathematically correct, but when I set parent=caveorigin, the node's drawImplementation() never gets called (determined by substituting a Python custom node for the Box.wrl).

farshizzo 10-09-2009 09:19 AM

What version of Vizard are you running? In older versions, nodes parented to CaveOrigin objects would not be rendered, but this should be fixed in newer versions.

JimC 10-09-2009 09:24 AM

3.13.0002. Too old?

farshizzo 10-09-2009 09:29 AM

I believe the fix appeared in version 3.14, so you are one version too old. We just released 3.15 last week. Click on Help -> Check for updates in the Vizard menu and it should take you to a download link for the latest version.

JimC 10-09-2009 12:43 PM

Thanks, it's working now. So is wand-based picking, though it took me about an hour to realize that viz.intersect() was always returning the virtual rod that I'd just attached to the wand... :D


All times are GMT -7. The time now is 06:10 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Copyright 2002-2023 WorldViz LLC