PDA

View Full Version : Cannot moving AR model......


allanjjj
04-05-2012, 07:27 PM
I would like to animate AR model by keyboard input after the model is shown by detecting marker. The model is shown correctly in the center of marker but it cannot move. It just sticks on the marker no matter what key I pressed. Here is the code:

import viz
import vizact
viz.go()

ar = viz.add('artoolkit.dle')
camera = ar.addWebCamera()
marker = camera.addMarker('ar/patt.worldviz',width=1000)
wheel = viz.add('wheelbarrow.ive')
viz.link(marker,wheel)

moveForward = vizact.move(0,0,2,1)
moveBack = vizact.move(0,0,-2,1)
turnRight = vizact.spin(0,1,0,90,1)
turnLeft = vizact.spin(0,1,0,-90,1)

def mykeyboard(whichKey):
if whichKey == viz.KEY_UP:
wheel.addAction(moveForward)
elif whichKey == viz.KEY_DOWN:
wheel.addAction(moveBack)
elif whichKey == viz.KEY_LEFT:
wheel.addAction(turnLeft)
elif whichKey == viz.KEY_RIGHT:
wheel.addAction(turnRight)

viz.callback(viz.KEYDOWN_EVENT, mykeyboard)


Can anyone help me out? many thanks~

Darkmax
04-08-2012, 07:48 PM
welcome to the forum.
Is because the viz.link, you need to make postTrans or preTrans or you can use these command <camera>.setGlobalMarker(marker) to make the marker the center of your virtual world and apply actions like you are doing instead of using the link, but with these you just can use one marker at the same time.

please use the code tags the next time when you want to show your code to maintain the spaces.

with setGlobalMarker

import viz
import vizact
viz.go()

ar = viz.add('artoolkit.dle')
camera = ar.addWebCamera()
marker = camera.addMarker('ar/patt.worldviz',width=1000)
wheel = viz.add('wheelbarrow.ive')
camera.setGlobalMarker(marker)

moveForward = vizact.move(0,0,2,1)
moveBack = vizact.move(0,0,-2,1)
turnRight = vizact.spin(0,1,0,90,1)
turnLeft = vizact.spin(0,1,0,-90,1)

def mykeyboard(whichKey):
if whichKey == viz.KEY_UP:
wheel.addAction(moveForward)
elif whichKey == viz.KEY_DOWN:
wheel.addAction(moveBack)
elif whichKey == viz.KEY_LEFT:
wheel.addAction(turnLeft)
elif whichKey == viz.KEY_RIGHT:
wheel.addAction(turnRight)
viz.callback(viz.KEYDOWN_EVENT, mykeyboard)