#1
|
|||
|
|||
Eliminate Sideways Motion when colliding w/Objects
Hi all,
I was wondering how to stop moving sideways when one backs up in a 3D environment and hits a wall. I am working with a VR environment in which users move about using a joystick or the PPT Tracking system. The World has been set up so that a transparent, circular wall has been set around the scene for users not to leave the bounds of the world we want to present. Every time the user backs up and hits the wall a slight sideways motion changes the position of the camera in the 3D world. Is there a elegant and quick way to detect the collision for that particular wall and inhibit this sidway motion? Great, if anyone knows! Cheers, Dan |
#2
|
|||
|
|||
Assuming you are doing collision detection with the "collision(viz.ON)" function, you could wait for a viz.COLLISION_EVENT notification.
Code:
def onCollision(info): print 'Collided with object',info.object #stop view until joystick impulse direction vector points over 90 degrees #away from info.normal viz.callback(viz.COLLISION_EVENT, onCollision)
__________________
Paul Elliott WorldViz LLC |
#3
|
|||
|
|||
Just though of another way to stop sideways motion. Check every frame if the view has moved in any direction other than forward or back.
Code:
#sudo code #every frame displacementVector = currentViewPosVector - lastViewPosVector headingDisplacementVector = vizmat.LookToQuat(displacementVector)) viewDisplacementHeadingDiff = vizmat.QuatDiff(headingDisplacementVector, viz.MainView.getQuat()) if viewDisplacementHeadingDiff != 0 or viewDisplacementHeadingDiff != 180: viz.MainView.setPosition(lastViewPos) #stop
__________________
Paul Elliott WorldViz LLC |
#4
|
|||
|
|||
Hey, Gladsomebeast, thanks alot for your input! I think im on the right track now...
|
Thread Tools | |
Display Modes | Rate This Thread |
|
|