#1
|
|||
|
|||
How to call Oculus Remote
Hi
I want to add an action by pressing a button on the Oculus Remote. But how do I call the remote? And how do I associate a button press of the remote with an action? The reference page about the Oculus HMD wasn't very helpful. |
#2
|
|||
|
|||
To further clarify:
The ultimate goal is to use the remote as a replacement for all keyboard and mouse input. But for a start, I want to associate the press of the enter key on the remote with the left mouse button, in order to select options with the remote instead of the mouse. |
#3
|
|||
|
|||
Are you referring to selecting options within a GUI object? If so, take a look at the GUI canvas page and canvasExample.py script (File > Quick Open: type canvasExample). Using the GUI canvas, set the cursor style to viz.CANVAS_MOUSE_VIRTUAL and apply updates to the cursor based on oculus remote signals. The example script shows how to manually update the cursor position and send mouse button events using keypresses in the ManualCursorPositionTask and ManualCursorButtonTask functions. In your case you would change the keypress checks to button checks.
|
#4
|
|||
|
|||
Hi again
Thanks for your answer. I'm referring to the canvas example script, yes. I tried to change the keypresses to button checks but I can't get it working. Is there a mistake somewhere in my script? I'd be really glad for any kind of advice. Code:
import viz import vizact import vizcam import vizdlg import vizinfo import viztask ### canvas = viz.addGUICanvas() canvas.setRenderWorldOverlay([800,600],50,3) canvas.setPosition([0,0,0]) viz.mouse.setTrap(True) viz.mouse.setVisible(False) canvas.setMouseStyle(viz.CANVAS_MOUSE_VIRTUAL) # Apply settings viz.MainWindow.setDefaultGUICanvas(canvas) ### import oculus hmd = oculus.Rift() viz.link(hmd.getSensor(), viz.MainView) viz.go() ########################### remoteEnter = viz.addButton(oculus.BUTTON_REMOTE_ENTER) remoteUp = viz.addButton(oculus.BUTTON_REMOTE_UP) remoteDown = viz.addButton(oculus.BUTTON_REMOTE_DOWN) remoteLeft = viz.addButton(oculus.BUTTON_REMOTE_LEFT) remoteRight = viz.addButton(oculus.BUTTON_REMOTE_RIGHT) ########################### # Load environment models worlds = [ viz.addChild('maze.osgb'), viz.addChild('gallery.osgb'), viz.addChild('dojo.osgb') ] for i, model in enumerate(worlds): model.visible(i == 0) controlPanel = vizinfo.InfoPanel(text='Navigate with WASD', title='Canvas Example') controlPanel.addSeparator() manual_cursor = controlPanel.addLabelItem('Manual Cursor',viz.addCheckbox()) ###################### def ManualCursorPositionTask(): """Use arrow keys to manually move canvas cursor""" while True: pos = canvas.getCursorPosition(viz.CANVAS_CURSOR_PIXELS) inc = 250.0 * viz.getFrameElapsed() # if viz.key.isDown(viz.KEY_UP): # pos[1] += inc # if viz.key.isDown(viz.KEY_LEFT): # pos[0] -= inc # if viz.key.isDown(viz.KEY_DOWN): # pos[1] -= inc # if viz.key.isDown(viz.KEY_RIGHT): # pos[0] += inc # # canvas.setCursorPosition(pos, viz.CANVAS_CURSOR_PIXELS) if remoteUp.get() == viz.DOWN: pos[1] += inc if remoteLeft.get() == viz.DOWN: pos[0] -= inc if remoteDown.get() == viz.DOWN: pos[1] -= inc if remoteRight.get() == viz.DOWN: pos[0] += inc canvas.setCursorPosition(pos, viz.CANVAS_CURSOR_PIXELS) yield viztask.waitFrame(1) ###################### def ManualCursorButtonTask(): """Use spacebar to manually simulate mouse press/release on canvas""" while True: # yield viztask.waitKeyDown(' ', priority=viz.PRIORITY_GUI_HANDLER-1) # # canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.DOWN) # # yield viztask.waitKeyUp(' ', priority=viz.PRIORITY_GUI_HANDLER-1) # # canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.UP) yield viztask.waitButtonDown(remoteEnter, priority=viz.PRIORITY_GUI_HANDLER-1) canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.DOWN) yield viztask.waitButtonUp(remoteEnter, priority=viz.PRIORITY_GUI_HANDLER-1) canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.UP) def ToggleManualCursorTask(): """Handle toggling of manual cursor mode""" notice_panel = vizinfo.InfoPanel('Arrow keys control cursor.\nSpacebar simulates button press.', title='Manual Cursor Enabled', align=viz.ALIGN_RIGHT_TOP, key=None, icon=False) notice_panel.visible(False) while True: yield viztask.waitButtonDown(manual_cursor) # Enable manual cursor control UpdateMouseStyle() pos_task = viztask.schedule(ManualCursorPositionTask()) button_task = viztask.schedule(ManualCursorButtonTask()) notice_panel.visible(True) yield viztask.waitButtonUp(manual_cursor) # Disable manual cursor control UpdateMouseStyle() pos_task.remove() button_task.remove() notice_panel.visible(False) viztask.schedule(ToggleManualCursorTask()) |
#5
|
|||
|
|||
First get a handle to the remote controller:
Code:
hmd = oculus.Rift() remote = hmd.getRemoteController() Code:
if remote.isButtonDown(oculus.BUTTON_REMOTE_UP): pos[1] += inc if remote.isButtonDown(oculus.BUTTON_REMOTE_LEFT): pos[0] -= inc if remote.isButtonDown(oculus.BUTTON_REMOTE_DOWN): pos[1] -= inc if remote.isButtonDown(oculus.BUTTON_REMOTE_RIGHT): pos[0] += inc |
#6
|
|||
|
|||
That's exactly what I was looking for, thanks!
But how would you change the ManualCursorButtonTask function? Code:
def ManualCursorButtonTask(): """Use spacebar to manually simulate mouse press/release on canvas""" while True: yield viztask.waitKeyDown(' ', priority=viz.PRIORITY_GUI_HANDLER-1) canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.DOWN) yield viztask.waitKeyUp(' ', priority=viz.PRIORITY_GUI_HANDLER-1) canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.UP) |
#7
|
|||
|
|||
Try using the viztask.waitSensorDown and viztask.waitSensorUp commands:
Code:
def ManualCursorButtonTask(): while True: yield viztask.waitSensorDown(remote, oculus.BUTTON_REMOTE_ENTER, priority=viz.PRIORITY_GUI_HANDLER-1) canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.DOWN) yield viztask.waitSensorUp(remote, oculus.BUTTON_REMOTE_ENTER, priority=viz.PRIORITY_GUI_HANDLER-1) canvas.sendMouseButtonEvent(viz.MOUSEBUTTON_LEFT, viz.UP) |
#8
|
|||
|
|||
Thanks very much!
|
Tags |
action, button, oculus, oculus remote |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Oculus Rift + Vizard help required | sukhpreet | Vizard | 1 | 01-03-2017 10:52 AM |
Xbox controller and Oculus DK2 | prilpi | Vizard | 17 | 03-28-2016 05:00 AM |
3D text oculus for right to left languages | bbb | Vizard | 2 | 01-16-2016 07:02 AM |
Multiple post-process effects with oculus rift | lklab | Vizard | 2 | 03-13-2015 01:48 PM |
Oculus runtime disrupts clustering to mirror DK2 display | performlabrit | Vizard | 1 | 01-23-2015 07:00 AM |