![]() |
|
#1
|
|||
|
|||
Avatar Collision
Hello!
I'm trying to create an interactive house in Vizard, and I'm using proximity sensors for that. When I use viz.go(), the object's sensors get activated, and the code works correctly. However, when I add the Vizconnect configuration, which includes an avatar, collision stops working. I've checked the documentation, and the options provided give me various errors about trying to assign incorrect values to functions. How can I make my avatar have full-body collision so that it can interact with object sensors? Thanks. I add my code here: import viz import vizfx import vizact import vizshape import vizconnect import vizproximity import viztask import vizinfo from vizconnect.util import view_collision #create empty world viz.setMultiSample(4) viz.fov(60) #viz.go() vizconnect.go('babylonconfig.py') #import the 3d model room = vizfx.addChild('test.osgb') #room = viz.addChild('test.osgb') #add ground ground = viz.addChild('ground_grass.osgb') #add sky env = viz.addEnvironmentMap('sky.jpg') sky = viz.add('skydome.dlc') sky.texture(env) #Get a linkable for controlling a sub-transform of the node door1 = room.getTransform('outdoor') viz.MainView.gravity(0) # Get a handle to the group tracker and update it's position every frame groupTracker = vizconnect.getTracker('group').getRaw() def updateGroup(): groupTracker.setPosition([0,0,0.01],viz.REL_LOCAL) event_handle = vizact.onupdate(0,updateGroup) # Toggle update event with spacebar vizact.onkeydown(' ', event_handle.setEnabled, viz.TOGGLE ) #Variables for the interaction with proximity sensor doorbellOn = 0 #Create the proximity sensor avatar = vizconnect.getAvatar() tracker = vizconnect.getTracker('mouse_scroll_wheel').getNod e3d manager = vizproximity.Manager() manager.setDebug(viz.ON) #Add main viewpoint as proximity target target = vizproximity.Target(viz.MainView) manager.addTarget(target) #Add sound to the doorbell (proximity doorbellframe) doorbell = room.getChild("doorbellframe",flags=viz.CHILD_REPL ACE_TRANSFORM) dbSound = viz.addAudio('DoorbellSound.mid') dbSensor = vizproximity.addBoundingSphereSensor(doorbell, scale=3) manager.addSensor(dbSensor) #Change state of avatar to talking when the user gets near infoPanel = None def EnterDoorbellProximity(e): global infoPanel global doorbellOn if infoPanel: infoPanel.remove() infoPanel = vizinfo.InfoPanel('Press e to ring the bell') doorbellOn = 1 def ExitDoorbellProximity(e): global infoPanel global doorbellOn doorbellOn = 0 if infoPanel: infoPanel.remove() manager.onEnter(dbSensor, EnterDoorbellProximity) manager.onExit(dbSensor, ExitDoorbellProximity) def general(trash): global doorbellOn global bathDrawerOn global bathDrawerOpen global tvOn global tvPlay global laptopOn global laptopPlay if doorbellOn == 1: dbSound.play() print("Knocking the door") vizact.onkeydown('e', general, 1) |
![]() |
Tags |
avatar, collision, proximity sensor |
Thread Tools | |
Display Modes | Rate This Thread |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Unexpected Avatar lookAt() behavior when using yield statements | chris2307 | Vizard | 2 | 12-17-2013 02:58 AM |
Collision and avatar animation | shahramy | Vizard | 2 | 10-26-2010 11:47 PM |
avatar collision | 5ky1ine | Vizard | 1 | 04-22-2009 11:23 AM |
Collision of an avatar with a quad | Frank Verberne | Vizard | 8 | 06-04-2008 09:44 AM |
Looking through the eyes of an avatar | Frank Verberne | Vizard | 2 | 04-01-2008 05:52 AM |