View Single Post
  #4  
Old 04-22-2011, 01:05 PM
Jeff Jeff is offline
WorldViz Team Member
 
Join Date: Aug 2008
Posts: 2,471
You could have multiple if/else statements one after the other in the timer function.

Or you could keep your markers, models, info boxes in lists and place a loop in the timer function. For each iteration of the loop you can check the visibility of a marker and set the visibility of the related info box. The following example would do that for 3 matrix markers, ids 1,2,3:
Code:
import viz
import vizact
import vizinfo

viz.go()

MARKER_IDS = [1,2,3]
AVATAR_FILES = ['vcc_male.cfg','vcc_female.cfg','duck.cfg']
INFO_POSITIONS = [[0.2,0.8],[0.2,0.6],[0.2,0.4]]
INFO_MESSAGES = ['male','female','duck']

marker_list = []
avatar_list = []
info_list = []

#Add ARToolkit extension
ar = viz.add('artoolkit.dle')

#Create camera using first available webcam
camera = ar.addWebCamera()

for i in range(len(MARKER_IDS)):
	
	marker = camera.addMatrixMarker(MARKER_IDS[i],width=1000)
	avatar = viz.addAvatar(AVATAR_FILES[i])
	avatar.visible(viz.OFF)
	viz.link(marker,avatar)
		
	info = vizinfo.add(INFO_MESSAGES[i])
	info.visible(viz.OFF)
	info.translate(INFO_POSITIONS[i])
	
	marker_list.append(marker)
	avatar_list.append(avatar)
	info_list.append(info)
	
	
def updateVisible():
	for i in range(len(MARKER_IDS)):
		if marker_list[i].getVisible():
			info_list[i].visible(viz.ON)
			avatar_list[i].visible(viz.ON)
		else:
			info_list[i].visible(viz.OFF)
			avatar_list[i].visible(viz.OFF)
	
vizact.ontimer(0,updateVisible)
Reply With Quote