It's hard to tell what you are doing wrong without seeing any sample code. I've attached a sample script that will record the tracker data and play it back. Press space key to start/stop recording. Once the recording has stopped it will automatically playback the tracking data. Hopefully this will give you some ideas on how to implement what you are trying to accomplish.
Code:
import viz
import vizcave
import viztracker
import viztask
#Width and height of power wall
WIDTH = 2.0
HEIGHT = 1.0
DISTANCE = 1.0
#Initialize graphics window
viz.go()
#Add environment model
viz.add('gallery.ive')
#Create tracker object using KeyboardPos tracker
tracker = viztracker.KeyboardPos()
#Create single power wall
PowerWall = vizcave.Wall( upperLeft=(-WIDTH,HEIGHT,DISTANCE),
upperRight=(WIDTH,HEIGHT,DISTANCE),
lowerLeft=(-WIDTH,-HEIGHT,DISTANCE),
lowerRight=(WIDTH,-HEIGHT,DISTANCE),
name='Power Wall' )
#Create cave object with power wall
cave = vizcave.Cave()
cave.addWall(PowerWall)
#Use tracker for automatically updating cave
cave.setTracker(pos=tracker)
#Create vizcave.CaveView object for manipulating viewpoint in cave environment
origin = vizcave.CaveView(tracker)
#Translate view origin 1 meter back
origin.setPosition(0,0,-1)
def SetCaveTracker(posTracker):
cave.setTracker(pos=posTracker)
origin.setTracker(posTracker)
def RecordPlayTask():
#Add dummy node for using as playback tracker
playbackTracker = viz.addGroup()
#Text for displaying record/playback status
statusText = viz.addText('',parent=viz.ORTHO,color=viz.RED,fontSize=48)
while True:
#Wait for spacebar to start recording
yield viztask.waitKeyDown(' ')
statusText.message('Recording')
#Start recording callback
recordedData = []
def _RecordTrackingData():
recordedData.append( (tracker.getPosition(), tracker.getQuat()) )
recordCallback = vizact.onupdate(0,_RecordTrackingData)
#Wait for spacebar to stop recording
yield viztask.waitKeyDown(' ')
#Stop recording callback
recordCallback.remove()
statusText.message('Playing')
#Set playback tracker
SetCaveTracker(playbackTracker)
#Playback recorded data
for pos,ori in recordedData:
playbackTracker.setPosition(pos)
yield None
statusText.message('')
#Restore original tracker
SetCaveTracker(tracker)
viztask.schedule( RecordPlayTask() )