cgv
vr_kit.h
1 #pragma once
2 
3 #include "vr_state.h"
4 #include "vr_camera.h"
5 #include "vr_info.h"
6 #include "gl_vr_display.h"
7 
8 #include "lib_begin.h"
9 
12 
14 namespace vr {
16  class CGV_API vr_driver;
17 
19  struct CGV_API controller_input_config
20  {
22 
24  float dead_zone;
26 
27  float precision;
29 
30  float threshold;
33  };
34 
37 
68  class CGV_API vr_kit : public gl_vr_display
69  {
70  protected:
74  void* handle;
80  std::string name;
84  controller_input_config input_configs[4][5];
86  void destruct_camera();
88  vr_trackable_state& ref_tracking_reference_state(const std::string& serial_nummer);
90  vr_tracking_system_info& ref_tracking_system_info();
92  void clear_tracking_reference_states();
94  void mark_tracking_references_as_untracked();
96  virtual bool query_state_impl(vr_kit_state& state, int pose_query) = 0;
98  vr_kit(vr_driver* _driver, void* _handle, const std::string& _name, unsigned _width, unsigned _height, unsigned _nr_multi_samples = 4);
99  public:
101  const vr_driver* get_driver() const;
103  void* get_handle() const;
105  vr_camera* get_camera() const;
107  const std::string& get_name() const;
109  virtual ~vr_kit();
111  const vr_kit_info& get_device_info() const;
113 
118  virtual void set_controller_input_config(int controller_index, int input_index, const controller_input_config& cic);
120  const controller_input_config& get_controller_input_config(int controller_index, int input_index) const;
122 
131  bool query_state(vr_kit_state& state, int pose_query = 2);
133  virtual bool set_vibration(unsigned controller_index, float low_frequency_strength, float high_frequency_strength) = 0;
135  virtual void put_eye_to_head_matrix(int eye, float* pose_matrix) const = 0;
137 
139  virtual void put_projection_matrix(int eye, float z_near, float z_far, float* projection_matrix, const float* hmd_pose = 0) const = 0;
141  virtual void put_world_to_eye_transform(int eye, const float* hmd_pose, float* modelview_matrix) const;
143  virtual void submit_frame() = 0;
144  };
145 }
146 
148 
149 #include <cgv/config/lib_end.h>
vr::vr_kit_info
information provided for a vr kit
Definition: vr_info.h:146
vr::vr_kit::camera
vr_camera * camera
pointer to camera
Definition: vr_kit.h:76
vr::vr_kit::driver
vr_driver * driver
pointer to driver that created the vr kit
Definition: vr_kit.h:72
vr::controller_input_config::precision
float precision
if precision is larger than zero, values are rounded to multiples of precision.
Definition: vr_kit.h:27
vr::gl_vr_display
implements offscreen rendering
Definition: gl_vr_display.h:25
vr
the vr namespace for virtual reality support
Definition: gl_vr_display.cxx:5
vr::vr_kit::info
vr_kit_info info
store vr kit info to be filled and updated by driver implementations
Definition: vr_kit.h:82
vr::vr_kit::handle
void * handle
handle for internal use
Definition: vr_kit.h:74
vr::vr_kit::name
std::string name
name in case driver provides this information (not reliable)
Definition: vr_kit.h:80
vr::vr_kit
a vr kit is composed of headset, two controllers, and two trackers, where all devices can be attached...
Definition: vr_kit.h:69
vr::controller_input_config
configuration of a controller input axis
Definition: vr_kit.h:20
vr::vr_kit::put_eye_to_head_matrix
virtual void put_eye_to_head_matrix(int eye, float *pose_matrix) const =0
access to 3x4 matrix in column major format for transformation from eye (0..left, 1....
vr::vr_driver
class CGV_API vr_driver
forward declaration of vr driver class
Definition: vr_driver.h:33
vr::vr_driver
interface class for vr drivers.
Definition: vr_driver.h:57
vr::vr_camera
interface for mono or stereo cameras in VR headsets
Definition: vr_camera.h:38
vr_camera.h
vr::controller_input_config::threshold
float threshold
if value gets larger than threshold a key press event is triggered if this is enabled.
Definition: vr_kit.h:30
vr::vr_kit::query_state_impl
virtual bool query_state_impl(vr_kit_state &state, int pose_query)=0
derived kits implement this without caring about calibration; vr_kit::query_state() will apply driver...
vr::vr_trackable_state
a trackable knows whether it is tracked and its 6d pose stored as 3x4 matrix in column major format
Definition: vr_state.h:94
vr::vr_kit::set_vibration
virtual bool set_vibration(unsigned controller_index, float low_frequency_strength, float high_frequency_strength)=0
set the vibration strength between 0 and 1 of low and high frequency motors, return false if device i...
vr::vr_kit::put_projection_matrix
virtual void put_projection_matrix(int eye, float z_near, float z_far, float *projection_matrix, const float *hmd_pose=0) const =0
access to 4x4 matrix in column major format for perspective transformation from eye (0....
vr::vr_kit::skip_calibration
bool skip_calibration
whether to skip driver calibration - defaults to false
Definition: vr_kit.h:78
vr::vr_kit::submit_frame
virtual void submit_frame()=0
submit the rendered stereo frame to the hmd
vr::vr_kit_state
structure that stores all information describing the state of a VR kit
Definition: vr_state.h:139
vr_state.h
vr::controller_input_config::dead_zone
float dead_zone
all input values below dead_zone are clamped to 0.
Definition: vr_kit.h:24
vr::vr_tracking_system_info
information provided for tracking system
Definition: vr_info.h:176