[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