Revision: 16529 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16529 Author: blendix Date: 2008-09-15 02:11:30 +0200 (Mon, 15 Sep 2008)
Log Message: ----------- Fix zoom level and clipping to be consistent with the viewport when pressing P without a camera active, now it should match the view exactly. Fix an issue when setting a camera with an actuator and being in orthographic mode in the viewport without an active camera, it used a strange mix of the set camera and the viewport then. Modified Paths: -------------- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h Modified: trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp =================================================================== --- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp 2008-09-14 21:31:07 UTC (rev 16528) +++ trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp 2008-09-15 00:11:30 UTC (rev 16529) @@ -198,6 +198,7 @@ // some blender stuff MT_CmMatrix4x4 projmat; MT_CmMatrix4x4 viewmat; + float camzoom; int i; for (i = 0; i < 16; i++) @@ -211,8 +212,13 @@ projmat.setElem(i, projmat_linear[i]); } - float camzoom = (1.41421 + (v3d->camzoom / 50.0)); - camzoom *= camzoom; + if(v3d->persp==V3D_CAMOB) { + camzoom = (1.41421 + (v3d->camzoom / 50.0)); + camzoom *= camzoom; + } + else + camzoom = 2.0; + camzoom = 4.0 / camzoom; ketsjiengine->SetDrawType(v3d->drawtype); @@ -293,6 +299,7 @@ ketsjiengine->SetCameraOverrideUseOrtho((v3d->persp == V3D_ORTHO)); ketsjiengine->SetCameraOverrideProjectionMatrix(projmat); ketsjiengine->SetCameraOverrideViewMatrix(viewmat); + ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far); } // create a scene converter, create and convert the startingscene Modified: trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp =================================================================== --- trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2008-09-14 21:31:07 UTC (rev 16528) +++ trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2008-09-15 00:11:30 UTC (rev 16529) @@ -135,6 +135,8 @@ m_overrideCam(false), m_overrideCamUseOrtho(false), + m_overrideCamNear(0.0), + m_overrideCamFar(0.0), m_stereo(false), m_curreye(0), @@ -886,7 +888,12 @@ m_overrideCamViewMat = mat; } - +void KX_KetsjiEngine::SetCameraOverrideClipping(float near, float far) +{ + m_overrideCamNear = near; + m_overrideCamFar = far; +} + void KX_KetsjiEngine::SetupViewport(KX_Scene *scene, KX_Camera* cam, RAS_Rect& area, RAS_Rect& viewport) { // In this function we make sure the rasterizer settings are upto @@ -985,6 +992,7 @@ // update graphics void KX_KetsjiEngine::RenderFrame(KX_Scene* scene, KX_Camera* cam) { + bool override_camera; RAS_Rect viewport, area; float left, right, bottom, top, nearfrust, farfrust, focallength; const float ortho = 100.0; @@ -1006,7 +1014,10 @@ //m_rasterizer->SetAmbient(); m_rasterizer->DisplayFog(); - if (m_overrideCam && (scene->GetName() == m_overrideSceneName) && m_overrideCamUseOrtho) { + override_camera = m_overrideCam && (scene->GetName() == m_overrideSceneName); + override_camera = override_camera && (cam->GetName() == "__default__cam__"); + + if (override_camera && m_overrideCamUseOrtho) { MT_CmMatrix4x4 projmat = m_overrideCamProjMat; m_rasterizer->SetProjectionMatrix(projmat); } else if (cam->hasValidProjectionMatrix() && !cam->GetViewport() ) @@ -1016,12 +1027,17 @@ { RAS_FrameFrustum frustum; float lens = cam->GetLens(); + bool orthographic = !cam->GetCameraData()->m_perspective; nearfrust = cam->GetCameraNear(); farfrust = cam->GetCameraFar(); focallength = cam->GetFocalLength(); - if (!cam->GetCameraData()->m_perspective) - { + if(override_camera) { + nearfrust = m_overrideCamNear; + farfrust = m_overrideCamFar; + } + + if (orthographic) { lens *= ortho; nearfrust = (nearfrust + 1.0)*ortho; farfrust *= ortho; Modified: trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h =================================================================== --- trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h 2008-09-14 21:31:07 UTC (rev 16528) +++ trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.h 2008-09-15 00:11:30 UTC (rev 16529) @@ -124,6 +124,8 @@ bool m_overrideCamUseOrtho; MT_CmMatrix4x4 m_overrideCamProjMat; MT_CmMatrix4x4 m_overrideCamViewMat; + float m_overrideCamNear; + float m_overrideCamFar; bool m_stereo; int m_curreye; @@ -236,6 +238,7 @@ void SetCameraOverrideUseOrtho(bool useOrtho); void SetCameraOverrideProjectionMatrix(const MT_CmMatrix4x4& mat); void SetCameraOverrideViewMatrix(const MT_CmMatrix4x4& mat); + void SetCameraOverrideClipping(float near, float far); /** * Sets display of all frames. _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs