From e83fc80da34dc331125d89a98d2a5de2c4e2e50f Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 25 Nov 2014 23:27:13 +0100 Subject: [PATCH] [DEV] update dispaly ray --- ege/camera/View.cpp | 4 +++- sample/RayTest/appl/Windows.cpp | 7 ++++--- sample/RayTest/appl/Windows.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ege/camera/View.cpp b/ege/camera/View.cpp index b49b600..0bd572a 100644 --- a/ege/camera/View.cpp +++ b/ege/camera/View.cpp @@ -68,7 +68,9 @@ vec3 ege::camera::View::getViewVector() const { ege::Ray ege::camera::View::getRayFromScreen(const vec2& _offset) { - ege::Ray out(m_eye, getViewVector()); + vec3 direction = getViewVector(); + direction.safeNormalize(); + ege::Ray out(m_eye, direction); EGE_WARNING("request ray from : " << _offset); EGE_WARNING(" camera offset = " << vec2(m_angleView/2*_offset.x(), 2*_offset.y()*m_aspectRatio/m_angleView)); diff --git a/sample/RayTest/appl/Windows.cpp b/sample/RayTest/appl/Windows.cpp index 3e60430..091abd1 100644 --- a/sample/RayTest/appl/Windows.cpp +++ b/sample/RayTest/appl/Windows.cpp @@ -151,6 +151,7 @@ bool appl::Windows::onEventInput(const ewol::event::Input& _event) { if (_event.getId() == 1) { vec2 pos = relativePosition(_event.getPos()); ege::Ray ray = m_camera->getRayFromScreenPosition(pos, m_size); + m_ray = ray; APPL_INFO("pos=" << pos << " ray = " << ray); ray.testRay(m_env->getPhysicEngine()); return true; @@ -162,9 +163,9 @@ void appl::Windows::onCallbackDisplayDebug(const std::shared_ptr tmpColor(0.0, 1.0, 0.0, 0.3); std::vector vertices; - vertices.push_back(vec3(100,0,0)); - vertices.push_back(vec3(100,100,0)); - vertices.push_back(vec3(100,100,100)); + vertices.push_back(m_ray.getOrigin()); + vertices.push_back(m_ray.getOrigin() + m_ray.getDirection()*1000); + vertices.push_back(vec3(10,0,0)); mat4 mat; mat.identity(); mat.translate(vec3(0,0,0)); diff --git a/sample/RayTest/appl/Windows.h b/sample/RayTest/appl/Windows.h index 04385b8..ad5c3c5 100644 --- a/sample/RayTest/appl/Windows.h +++ b/sample/RayTest/appl/Windows.h @@ -29,6 +29,7 @@ namespace appl { void onCallbackPeriodicUpdateCamera(const ewol::event::Time& _event); bool onEventInput(const ewol::event::Input& _event); void onCallbackDisplayDebug(const std::shared_ptr& _obj); + ege::Ray m_ray; }; };