diff --git a/openvdb_cmd/vdb_view/Camera.cc b/openvdb_cmd/vdb_view/Camera.cc index 16c6988236..648a0acdb6 100644 --- a/openvdb_cmd/vdb_view/Camera.cc +++ b/openvdb_cmd/vdb_view/Camera.cc @@ -44,6 +44,15 @@ Camera::Camera() } +openvdb::Mat4s +Camera::getTransformationMatrix() +{ + float matrix[16]; + glGetFloatv(GL_MODELVIEW_MATRIX, matrix); + return openvdb::Mat4s(matrix); +} + + void Camera::lookAt(const openvdb::Vec3d& p, double dist) { diff --git a/openvdb_cmd/vdb_view/Camera.h b/openvdb_cmd/vdb_view/Camera.h index ef23c44582..6b77c8b127 100644 --- a/openvdb_cmd/vdb_view/Camera.h +++ b/openvdb_cmd/vdb_view/Camera.h @@ -23,6 +23,8 @@ class Camera void aim(); + openvdb::Mat4s getTransformationMatrix(); + void lookAt(const openvdb::Vec3d& p, double dist = 1.0); void lookAtTarget(); diff --git a/openvdb_cmd/vdb_view/Viewer.cc b/openvdb_cmd/vdb_view/Viewer.cc index 65122fe0b5..d154c9dc6c 100644 --- a/openvdb_cmd/vdb_view/Viewer.cc +++ b/openvdb_cmd/vdb_view/Viewer.cc @@ -58,6 +58,7 @@ class ViewerImpl void showNextGrid(); bool needsDisplay(); + void printCameraTransformationMatrix(); void setNeedsDisplay(); void toggleRenderModule(size_t n); @@ -992,6 +993,9 @@ ViewerImpl::keyCallback(int key, int action) case 'i': case 'I': toggleInfoText(); break; + case 'p': case 'P': + printCameraTransformationMatrix(); + break; case GLFW_KEY_LEFT: showPrevGrid(); break; @@ -1084,6 +1088,13 @@ ViewerImpl::needsDisplay() } +void +ViewerImpl::printCameraTransformationMatrix() +{ + std::cout << mCamera->getTransformationMatrix() << std::endl; +} + + void ViewerImpl::setNeedsDisplay() { diff --git a/openvdb_cmd/vdb_view/main.cc b/openvdb_cmd/vdb_view/main.cc index 5ccc08f015..84b6e35e2e 100644 --- a/openvdb_cmd/vdb_view/main.cc +++ b/openvdb_cmd/vdb_view/main.cc @@ -36,6 +36,7 @@ usage [[noreturn]] (const char* progName, int status) " G (\"geometry\") look at center of geometry\n" << " H (\"home\") look at origin\n" << " I toggle on-screen grid info on/off\n" << +" P print camera transformation matrix\n" << " left mouse tumble\n" << " right mouse pan\n" << " mouse wheel zoom\n" <<