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)