X-Git-Url: http://git.tdb.fi/?p=libs%2Fvr.git;a=blobdiff_plain;f=source%2Fheadtrackingcamera.cpp;fp=source%2Fheadtrackingcamera.cpp;h=95868e2f12f107a512dda7d39e1dca0dc8fdce14;hp=0000000000000000000000000000000000000000;hb=dca13ee66628568631f502dfc79847c7368c7bb1;hpb=735148a3ecf7e753f520f22668b771583185f72f diff --git a/source/headtrackingcamera.cpp b/source/headtrackingcamera.cpp new file mode 100644 index 0000000..95868e2 --- /dev/null +++ b/source/headtrackingcamera.cpp @@ -0,0 +1,24 @@ +#include "headtrackingcamera.h" + +namespace Msp { +namespace VR { + +HeadTrackingCamera::HeadTrackingCamera(const GL::Camera &c): + base_camera(c) +{ } + +void HeadTrackingCamera::update_from_matrix(const GL::Matrix &hmd_matrix) +{ + GL::Matrix matrix = base_camera.get_object_matrix()*hmd_matrix; + + set_position(matrix*GL::Vector3()); + set_look_direction((matrix*GL::Vector4(0, 0, -1, 0)).slice<3>(0)); + set_up_direction((matrix*GL::Vector4(0, 1, 0, 0)).slice<3>(0)); + + set_depth_clip(base_camera.get_near_clip(), base_camera.get_far_clip()); + set_field_of_view(base_camera.get_field_of_view()); + set_aspect(base_camera.get_aspect()); +} + +} // namespace VR +} // namespace Msp