Newer
Older
"""
Oculus
======
Oculus (oculus.com) head mounted display
It uses a C app to connect with the SDK
The bridge code is hosted at Visgraf:
http://git.impa.br/dfelinto/oculus_sdk_bridge
"""
from ..lib import (
checkModule,
)
def __init__(self, error_callback):
super(Oculus, self).__init__('Oculus', error_callback)
def _debug(self):
import bridge
import bridge_wrapper
input = 3
device = bridge_wrapper.Debug_new(input)
factor = bridge_wrapper.Debug_multiplicationFactor()
print("Multiplication factor is {0}".format(factor))
output = bridge_wrapper.Debug_multiplicationResult(device)
print("Return of {0} is {1}".format(input, output))
"""
Initialize device
:return: return True if the device was properly initialized
:rtype: bool
"""
try:
from bridge.oculus import HMD
self._hmd = HMD()
near, far = self._getCameraClipping(context)
self.setEye(0)
self.width = self._hmd.width_left
self.height = self._hmd.height_left
self.projection_matrix = self._hmd.getProjectionMatrixLeft(near, far)
self.setEye(1)
self.width = self._hmd.width_right
self.height = self._hmd.height_right
self.projection_matrix = self._hmd.getProjectionMatrixRight(near, far)
# initialize FBO
super(Oculus, self).init()
# send it back to HMD
if not self._hmd.setup(self._framebuffer_object[0], self._framebuffer_object[1]):
raise Exception("Failed to setup HMD")
except Exception as E:
self._hmd = None
return False
else:
return True
self._eye_orientation_raw[0] = data[0]
self._eye_orientation_raw[1] = data[2]
self._eye_position_raw[0] = data[1]
self._eye_position_raw[1] = data[3]
# update matrices
super(Oculus, self).loop(context)
The frame is ready to be sent to the device
def quit(self):
"""
Garbage collection
"""
return super(Oculus, self).quit()