(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))