diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc index 5ade15ded528f18f919b2b50ecd5f94fe39921ad..0b619af7514590c4ed64df3498e16a899b278de7 100644 --- a/modules/gfx/src/scene.cc +++ b/modules/gfx/src/scene.cc @@ -2020,10 +2020,16 @@ void Scene::stereo_projection(int view) } // TODO: generate both directly from near/far/fov - float pm[16]; - glGetFloatv(GL_PROJECTION_MATRIX,pm); - pmat_=geom::Transpose(geom::Mat4(pm)); - ipmat_=geom::Invert(pmat_); + try { + float pm[16]; + glGetFloatv(GL_PROJECTION_MATRIX,pm); + pmat_=geom::Transpose(geom::Mat4(pm)); + ipmat_=geom::Invert(pmat_); + } catch (geom::GeomException& e) { + LOG_WARNING("caught GeomException in Scene::stereo_projection: " << e.what()); + pmat_=geom::Mat4(); + ipmat_=geom::Mat4(); + } } void Scene::render_stereo() diff --git a/modules/mol/base/src/transform.cc b/modules/mol/base/src/transform.cc index 560216cc2045f4917431f46ca3d9377a344b666d..cb76e719655a8f9023daabcaa4824f934f3a87a4 100644 --- a/modules/mol/base/src/transform.cc +++ b/modules/mol/base/src/transform.cc @@ -22,6 +22,7 @@ #include <ost/info/info.hh> #include <ost/info/geom_info_conversion.hh> #endif +#include <ost/log.hh> #include "transform.hh" namespace ost { @@ -203,7 +204,12 @@ void Transform::update_tm() 0.0,0.0,0.0,1.0); ttm_ = Transpose(tm_); // TODO: calculate from rot, cen and trans - itm_ = Invert(tm_); + try { + itm_ = Invert(tm_); + } catch (GeomException& e) { + LOG_WARNING("caught GeomException in Transform::update_tm: " << e.what()); + itm_=geom::Mat4(); + } } void Transform::update_components()