[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41131] trunk/blender/source/gameengine: bge bugfix: patch #28893 " Fix for #28753 and some other changes for BGE projection code" by Juha M? \195?\164ki-Kanto (kanttori)
Dalai Felinto
dfelinto at gmail.com
Thu Oct 20 08:38:45 CEST 2011
Revision: 41131
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41131
Author: dfelinto
Date: 2011-10-20 06:38:45 +0000 (Thu, 20 Oct 2011)
Log Message:
-----------
bge bugfix: patch #28893 "Fix for #28753 and some other changes for BGE projection code" by Juha M?\195?\164ki-Kanto (kanttori)
Modified Paths:
--------------
trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
trunk/blender/source/gameengine/Rasterizer/RAS_FramingManager.cpp
Modified: trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
--- trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp 2011-10-20 06:29:14 UTC (rev 41130)
+++ trunk/blender/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp 2011-10-20 06:38:45 UTC (rev 41131)
@@ -360,7 +360,14 @@
ketsjiengine->SetCameraOverrideUseOrtho((rv3d->persp == RV3D_ORTHO));
ketsjiengine->SetCameraOverrideProjectionMatrix(MT_CmMatrix4x4(rv3d->winmat));
ketsjiengine->SetCameraOverrideViewMatrix(MT_CmMatrix4x4(rv3d->viewmat));
- ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
+ if(rv3d->persp == RV3D_ORTHO)
+ {
+ ketsjiengine->SetCameraOverrideClipping(-v3d->far, v3d->far);
+ }
+ else
+ {
+ ketsjiengine->SetCameraOverrideClipping(v3d->near, v3d->far);
+ }
ketsjiengine->SetCameraOverrideLens(v3d->lens);
}
Modified: trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2011-10-20 06:29:14 UTC (rev 41130)
+++ trunk/blender/source/gameengine/Ketsji/KX_KetsjiEngine.cpp 2011-10-20 06:38:45 UTC (rev 41131)
@@ -1400,8 +1400,14 @@
KX_Camera* activecam = NULL;
RAS_CameraData camdata = RAS_CameraData();
- if (override_camera) camdata.m_lens = m_overrideCamLens;
-
+ if (override_camera)
+ {
+ camdata.m_lens = m_overrideCamLens;
+ camdata.m_clipstart = m_overrideCamNear;
+ camdata.m_clipend = m_overrideCamFar;
+
+ camdata.m_perspective= !m_overrideCamUseOrtho;
+ }
activecam = new KX_Camera(scene,KX_Scene::m_callbacks,camdata);
activecam->SetName("__default__cam__");
Modified: trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp 2011-10-20 06:29:14 UTC (rev 41130)
+++ trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp 2011-10-20 06:38:45 UTC (rev 41131)
@@ -240,29 +240,23 @@
/* build the from and to point in normalized device coordinates
- * Looks like normailized device coordinates are [-1,1] in x [-1,1] in y
- * [0,-1] in z
+ * Normalized device coordinates are [-1,1] in x, y, z
*
* The actual z coordinates used don't have to be exact just infront and
* behind of the near and far clip planes.
*/
frompoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
1.0 - (2 * (m_y_inv - y_lb) / height),
- /*cam->GetCameraData()->m_perspective ? 0.0:cdata->m_clipstart,*/ /* real clipstart is scaled in ortho for some reason, zero is ok */
- 0.0, /* nearclip, see above comments */
+ -1.0,
1.0 );
topoint.setValue( (2 * (m_x-x_lb) / width) - 1.0,
1.0 - (2 * (m_y_inv-y_lb) / height),
- cam->GetCameraData()->m_perspective ? 1.0:cam->GetCameraData()->m_clipend, /* farclip, see above comments */
+ 1.0,
1.0 );
-
- /* camera to world */
- MT_Transform wcs_camcs_tranform = cam->GetWorldToCamera();
- MT_Transform cams_wcs_transform;
- cams_wcs_transform.invert(wcs_camcs_tranform);
- MT_Matrix4x4 camcs_wcs_matrix = MT_Matrix4x4(cams_wcs_transform);
+ /* camera to world */
+ MT_Matrix4x4 camcs_wcs_matrix = MT_Matrix4x4(cam->GetCameraToWorld());
/* badly defined, the first time round.... I wonder why... I might
* want to guard against floating point errors here.*/
@@ -272,6 +266,8 @@
/* shoot-points: clip to cam to wcs . win to clip was already done.*/
frompoint = clip_camcs_matrix * frompoint;
topoint = clip_camcs_matrix * topoint;
+ /* clipstart = - (frompoint[2] / frompoint[3])
+ * clipend = - (topoint[2] / topoint[3]) */
frompoint = camcs_wcs_matrix * frompoint;
topoint = camcs_wcs_matrix * topoint;
Modified: trunk/blender/source/gameengine/Rasterizer/RAS_FramingManager.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_FramingManager.cpp 2011-10-20 06:29:14 UTC (rev 41130)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_FramingManager.cpp 2011-10-20 06:38:45 UTC (rev 41131)
@@ -99,7 +99,7 @@
frustum.x1 = -frustum.x2;
frustum.y2 = sizeY;
frustum.y1 = -frustum.y2;
- frustum.camnear = -camfar;
+ frustum.camnear = camnear;
frustum.camfar = camfar;
}
More information about the Bf-blender-cvs
mailing list