(Deprecated) OpenVR example

Deprecated. See “Implementation of a custom device interaction”, “Combine a custom and a default device interaction”, “Scale geometry in VR by using controllers” and “Print the current finger position on the touchpad” instead.

deprecated_VR_examples/OpenVRExample.vpb
  1from math import sqrt
  2
  3def trigger0Pressed():
  4    controller0.setPickingAxis(0)
  5    controller0.showPickingAxis(true)
  6
  7def trigger0Released():
  8    pickedNode = controller0.pickNode()
  9    selectNode(pickedNode)
 10    controller0.showPickingAxis(false)
 11
 12def grip0Pressed():
 13    selectNode(getSelectedNode(), false)
 14
 15def grip0Released():
 16    print("grip0Released")
 17
 18def touchpad0Pressed():
 19    print("touchpad0Pressed")
 20
 21def touchpad0Released():
 22    print("touchpad0Released")
 23
 24def touchpad0PositionChanged(position):
 25    print("touchpad0PositionChanged")
 26
 27def controller0Moved():
 28    if controller0.isTouchpadPressed():
 29        leftNode = findNode("MatrixLeft")
 30        leftNode.setTransformMatrix( controller0.getWorldMatrix(), false)
 31
 32def trigger1Pressed():
 33    controller1.setPickingAxis(1)
 34    controller1.showPickingAxis(true)
 35
 36
 37def trigger1Released():
 38    pickedNode = controller1.pickNode()
 39    selectNode(pickedNode)
 40    controller1.showPickingAxis(false)
 41
 42def grip1Pressed():
 43    setFromAtUp(-1, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0)
 44    setOpenVRTrackingOrigin( Pnt3f(0.0, 0.0, 0.0))
 45
 46def grip1Released():
 47    print("grip1Released")
 48
 49def touchpad1Pressed():
 50    print("touchpad1Pressed")
 51
 52
 53def touchpad1Released():
 54    print("touchpad1Released")
 55
 56def touchpad1PositionChanged(position):
 57    print("touchpad1PositionChanged")
 58
 59def getNormalizedDirection(matrix):
 60    inVec = Vec2f( -matrix[2], matrix[6])
 61    rescale = 1.0 / sqrt( inVec.x()*inVec.x() + inVec.y() * inVec.y())
 62    return Vec2f( inVec.x() * rescale, inVec.y() * rescale)
 63
 64def controller1Moved():
 65    ##
 66    ## Do a simple camera navigation based on the hmd orientation
 67    ##
 68    if controller1.isTouchpadPressed():
 69        oldPos = getOpenVRTrackingOrigin()
 70        touchPos = controller1.getTouchpadPosition()
 71        moveScaleForward = -10.0 * touchPos.y()
 72        moveScaleSideways = -10.0 * touchPos.x()
 73        camDirForward = getNormalizedDirection( getCamNode(-1).getWorldTransform())
 74        #camDirForward = getNormalizedDirection( controller1.getWorldMatrix())
 75        camDirSideways = Vec2f( -camDirForward.y(), camDirForward.x())
 76        newPos = Pnt3f(oldPos.x() + moveScaleForward * camDirForward.x() + moveScaleSideways * camDirSideways.x(), oldPos.y(), oldPos.z() +
 77            moveScaleForward*camDirForward.y() + moveScaleSideways * camDirSideways.y())
 78        setOpenVRTrackingOrigin(newPos)
 79
 80##
 81## Create two controller and connect their signals to functions as needed
 82##
 83
 84controller0 = vrOpenVRController("Controller0")
 85controller0.connectSignal("controllerMoved", controller0Moved)
 86controller0.connectSignal("triggerPressed", trigger0Pressed)
 87controller0.connectSignal("triggerReleased", trigger0Released)
 88controller0.connectSignal("gripPressed", grip0Pressed)
 89
 90
 91controller1 = vrOpenVRController("Controller1")
 92controller1.connectSignal("controllerMoved", controller1Moved)
 93controller1.connectSignal("triggerPressed", trigger1Pressed)
 94controller1.connectSignal("triggerReleased", trigger1Released)
 95controller1.connectSignal("gripPressed", grip1Pressed)
 96
 97
 98##
 99## Optional connect more signals
100##
101#controller0.connectSignal("gripReleased", grip0Released)
102#controller0.connectSignal("touchpadPressed", touchpad0Pressed)
103#controller0.connectSignal("touchpadReleased", touchpad0Released)
104#controller0.connectSignal("touchpadPositionChanged", touchpad0PositionChanged)
105#controller1.connectSignal("gripReleased", grip1Released)
106#controller1.connectSignal("touchpadPressed", touchpad1Pressed)
107#controller1.connectSignal("touchpadReleased", touchpad1Released)
108#controller1.connectSignal("touchpadPositionChanged", touchpad1PositionChanged)
109
110##
111## In case the scene origin is not located at 0,0,0 you may set a reference origin instead
112##
113setOpenVRTrackingOrigin( Pnt3f(0.0, 0.0, 0.0))