View Single Post
  #1  
Old 01-12-2024, 08:33 AM
PlsHelp PlsHelp is offline
Registered User
 
Join Date: Jan 2024
Posts: 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)
Reply With Quote