From 1a3f74b9dab1b1ced8349a7aeb8cf7c54eed4c86 Mon Sep 17 00:00:00 2001 From: hyzboy Date: Mon, 24 Jun 2019 21:00:55 +0800 Subject: [PATCH] =?UTF-8?q?Camera.cpp=20LookAt=E5=87=BD=E6=95=B0=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BD=BF=E7=94=A8=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/SceneGraph/Camera.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/SceneGraph/Camera.cpp b/src/SceneGraph/Camera.cpp index cb7d2a3d..73ebb35a 100644 --- a/src/SceneGraph/Camera.cpp +++ b/src/SceneGraph/Camera.cpp @@ -3,22 +3,23 @@ namespace hgl { namespace graph { - inline Matrix4f LookAt(const Vector4f &eye,const Vector4f &target,const Vector4f &up) + template + inline Matrix4f LookAt(const V &eye,const V &target,const V &up) { - Vector4f forward=target-eye; + V forward=target-eye; normalize(forward); - Vector4f side=cross(forward,up); + V side=cross(forward,up); normalize(side); - Vector4f nup=cross(side,forward); + V nup=cross(side,forward); - Matrix4f result(side.x, side.y, side.z, 0.0f, - nup.x, nup.y, nup.z, 0.0f, + Matrix4f result( side.x, side.y, side.z, 0.0f, + nup.x, nup.y, nup.z, 0.0f, -forward.x, -forward.y, -forward.z, 0.0f, - -dot(side,eye), -dot(nup,eye), dot(forward,eye), 1.0f); + -dot(side,eye), -dot(nup,eye), dot(forward,eye), 1.0f); return result*translate(-eye.xyz()); } @@ -33,6 +34,7 @@ namespace hgl //matrix.inverse_projection=matrix.projection.Inverted(); matrix.modelview=hgl::graph::LookAt(eye,center,up_vector); + //matrix.modelview=Matrix4f::LookAt(eye.xyz(),center.xyz(),forward_vector.xyz(),up_vector.xyz(),up_vector.xyz()); matrix.mvp=matrix.projection*matrix.modelview;