[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20160] branches/ge_dome/source: Tilt option to tilt the camera (for planetarium domes)

Dalai Felinto dfelinto at gmail.com
Mon May 11 20:42:24 CEST 2009


Revision: 20160
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20160
Author:   dfelinto
Date:     2009-05-11 20:42:24 +0200 (Mon, 11 May 2009)

Log Message:
-----------
Tilt option to tilt the camera (for planetarium domes)

Modified Paths:
--------------
    branches/ge_dome/source/blender/blenkernel/intern/scene.c
    branches/ge_dome/source/blender/blenloader/intern/readfile.c
    branches/ge_dome/source/blender/makesdna/DNA_scene_types.h
    branches/ge_dome/source/blender/src/buttons_scene.c
    branches/ge_dome/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
    branches/ge_dome/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
    branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp
    branches/ge_dome/source/gameengine/Ketsji/KX_Dome.h
    branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
    branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.h

Modified: branches/ge_dome/source/blender/blenkernel/intern/scene.c
===================================================================
--- branches/ge_dome/source/blender/blenkernel/intern/scene.c	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/blender/blenkernel/intern/scene.c	2009-05-11 18:42:24 UTC (rev 20160)
@@ -235,6 +235,7 @@
 	sce->r.domesize = 1.0f;
 	sce->r.domeres = 4;
 	sce->r.domeresbuf = 1.0f;
+	sce->r.dometilt = 0;
 
 	sce->r.simplify_subsurf= 6;
 	sce->r.simplify_particles= 1.0f;
@@ -790,4 +791,4 @@
 			scene->r.dometext = NULL;
 		scene = scene->id.next;
 	}
-}
\ No newline at end of file
+}

Modified: branches/ge_dome/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/ge_dome/source/blender/blenloader/intern/readfile.c	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/blender/blenloader/intern/readfile.c	2009-05-11 18:42:24 UTC (rev 20160)
@@ -8078,6 +8078,7 @@
 			sce->r.domesize = 1.0f;
 			sce->r.domeres = 4;
 			sce->r.domeresbuf = 1.0f;
+			sce->r.dometilt = 0;
 		}
 		/* DBVT culling by default */
 		for(wrld=main->world.first; wrld; wrld= wrld->id.next) {

Modified: branches/ge_dome/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- branches/ge_dome/source/blender/makesdna/DNA_scene_types.h	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/blender/makesdna/DNA_scene_types.h	2009-05-11 18:42:24 UTC (rev 20160)
@@ -318,7 +318,7 @@
 
 	/* Dome variables */
 	short domeres, domemode;
-	short domeangle, pad9;
+	short domeangle, dometilt;
 	float domesize;
 	float domeresbuf;
 	struct Text *dometext;

Modified: branches/ge_dome/source/blender/src/buttons_scene.c
===================================================================
--- branches/ge_dome/source/blender/src/buttons_scene.c	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/blender/src/buttons_scene.c	2009-05-11 18:42:24 UTC (rev 20160)
@@ -1833,13 +1833,14 @@
 	uiBlockBeginAlign(block);
 	uiDefButS(block, ROW, 0, "Dome",	xco, yco-=30, 88, 19, &(G.scene->r.stereomode), 7.0, 8.0, 0, 0, "Enables dome camera");
 	uiDefButS(block, NUM, 0, "Ang:",	xco+90, yco, 88, 19, &G.scene->r.domeangle, 90.0, 250.0, 0, 0, "Angle (Aperture) of the Dome - it only works in mode 1");
-	uiDefButS(block, NUM, 0, "Mode:",	xco+180, yco, 88, 19, &G.scene->r.domemode, 1.0, 3.0, 0, 0, "1 fisheye, 2 environment map, 3 spherical panoramic");
+	uiDefButS(block, NUM, 0, "Mode:",	xco+180, yco, 88, 19, &G.scene->r.domemode, 1.0, 5.0, 0, 0, "1 fisheye, 2 environment map, 3 spherical panoramic, 4 front-truncated, 5 rear-truncated");
 
 	uiDefButF(block, NUM, 0, "Size:",	xco, yco-=21, 88, 19, &G.scene->r.domesize, 0.5, 3.5, 0, 0, "Size adjustments");
 	uiDefButS(block, NUM, 0, "Tes:",	xco+90, yco, 88, 19, &G.scene->r.domeres, 1.0, 8.0, 0, 0, "Tesselation level - 1 to 8");
 	uiDefButF(block, NUM, 0, "Res:",	xco+180, yco, 88, 19, &G.scene->r.domeresbuf, 0.1, 1.0, 0, 0, "Buffer Resolution - decrease it to increase speed");
 
-	uiDefIDPoinBut(block, test_scriptpoin_but, ID_SCRIPT, 1, "Warp Data: ", xco,yco-=21,268, 19, &G.scene->r.dometext, "Custom Warp Mesh data file");
+	uiDefButS(block, NUM, 0, "Tilt:",	xco, yco-=21, 88, 19, &G.scene->r.dometilt, -359, 359, 0, 0, "Vertical Camera Tilt");
+	uiDefIDPoinBut(block, test_scriptpoin_but, ID_SCRIPT, 1, "Warp Data: ", xco+90,yco,178, 19, &G.scene->r.dometext, "Custom Warp Mesh data file");
 	uiBlockEndAlign(block);
 
 	uiBlockSetDirection(block, UI_TOP);

Modified: branches/ge_dome/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
===================================================================
--- branches/ge_dome/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp	2009-05-11 18:42:24 UTC (rev 20160)
@@ -376,7 +376,7 @@
 
 			//initialize Dome Settings
 			if(blscene->r.stereomode == RAS_IRasterizer::RAS_STEREO_DOME)
-				ketsjiengine->InitDome(blscene->r.domesize, blscene->r.domeres, blscene->r.domemode, blscene->r.domeangle, blscene->r.domeresbuf, blscene->r.dometext);
+				ketsjiengine->InitDome(blscene->r.domesize, blscene->r.domeres, blscene->r.domemode, blscene->r.domeangle, blscene->r.domeresbuf, blscene->r.dometilt, blscene->r.dometext);
 
 			if (sceneconverter)
 			{

Modified: branches/ge_dome/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
===================================================================
--- branches/ge_dome/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/gameengine/GamePlayer/ghost/GPG_Application.cpp	2009-05-11 18:42:24 UTC (rev 20160)
@@ -701,7 +701,7 @@
 
 		//initialize Dome Settings
 		if(m_startScene->r.stereomode == RAS_IRasterizer::RAS_STEREO_DOME)
-			m_ketsjiengine->InitDome(m_startScene->r.domesize, m_startScene->r.domeres, m_startScene->r.domemode, m_startScene->r.domeangle, m_startScene->r.domeresbuf, m_startScene->r.dometext);
+			m_ketsjiengine->InitDome(m_startScene->r.domesize, m_startScene->r.domeres, m_startScene->r.domemode, m_startScene->r.domeangle, m_startScene->r.domeresbuf, m_startScene->r.dometilt, m_startScene->r.dometext);
 
 		// Set the GameLogic.globalDict from marshal'd data, so we can
 		// load new blend files and keep data in GameLogic.globalDict

Modified: branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp
===================================================================
--- branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/gameengine/Ketsji/KX_Dome.cpp	2009-05-11 18:42:24 UTC (rev 20160)
@@ -49,6 +49,7 @@
 	short mode,		//mode - fisheye, truncated, warped, panoramic, ...
 	short angle,
 	float resbuf,	//size adjustment of the buffer
+	short tilt,
 	struct Text* warptext
 
 ):
@@ -60,6 +61,7 @@
 	m_mode(mode),
 	m_angle(angle),
 	m_resbuffer(resbuf),
+	m_tilt(tilt),
 	m_canvas(canvas),
 	m_rasterizer(rasterizer),
 	m_rendertools(rendertools),
@@ -1485,6 +1487,7 @@
 Uses 5 cameras for angles up to 250\xBA
 Uses 6 cameras for angles up to 360\xBA
 */
+	int i;
 	float deg45 = MT_PI / 4;
 	MT_Scalar c = cos(deg45);
 	MT_Scalar s = sin(deg45);
@@ -1579,6 +1582,23 @@
 						0.0, 1.0, 0.0,
 						s, 0.0, c);
 	}
+
+	if (m_tilt)
+	{
+		printf("\n\n\\n\n\nTILTOU\n\n");
+		float degtilt = ((m_tilt % 360) * 2 * MT_PI) / 360;
+		c = cos(degtilt);
+		s = sin(degtilt);
+
+		MT_Matrix3x3 tilt_mat = MT_Matrix3x3(
+		1.0, 0.0, 0.0,
+		0.0, c, -s,
+		0.0, s,  c
+		);
+
+		for (i =0;i<6;i++)
+			m_locRot[i] = tilt_mat * m_locRot[i];
+	}
 }
 
 void KX_Dome::RotateCamera(KX_Camera* cam, int i)

Modified: branches/ge_dome/source/gameengine/Ketsji/KX_Dome.h
===================================================================
--- branches/ge_dome/source/gameengine/Ketsji/KX_Dome.h	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/gameengine/Ketsji/KX_Dome.h	2009-05-11 18:42:24 UTC (rev 20160)
@@ -67,6 +67,7 @@
 	short mode,
 	short angle,
 	float resbuf,
+	short tilt,
 	struct Text* warptext
 	);
 
@@ -166,6 +167,7 @@
 	short m_angle;		//the angle of the fisheye
 	float m_radangle;	//the angle of the fisheye in radians
 	float m_resbuffer;	//the resolution of the buffer
+	short m_tilt;		//the camera vertical tilt
 	
 	RAS_Rect m_viewport;
 

Modified: branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
===================================================================
--- branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.cpp	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.cpp	2009-05-11 18:42:24 UTC (rev 20160)
@@ -262,9 +262,9 @@
 	m_sceneconverter = sceneconverter;
 }
 
-void KX_KetsjiEngine::InitDome(float size, short res, short mode, short angle, float resbuf, struct Text* text)
+void KX_KetsjiEngine::InitDome(float size, short res, short mode, short angle, float resbuf, short tilt, struct Text* text)
 {
-	m_dome = new KX_Dome(m_canvas, m_rasterizer, m_rendertools,this, size, res, mode, angle, resbuf, text);
+	m_dome = new KX_Dome(m_canvas, m_rasterizer, m_rendertools,this, size, res, mode, angle, resbuf, tilt, text);
 	m_usedome = true;
 }
 

Modified: branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.h
===================================================================
--- branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.h	2009-05-11 18:26:47 UTC (rev 20159)
+++ branches/ge_dome/source/gameengine/Ketsji/KX_KetsjiEngine.h	2009-05-11 18:42:24 UTC (rev 20160)
@@ -211,7 +211,7 @@
 	RAS_IRenderTools*	    GetRenderTools(){return m_rendertools;};
 
 	/// Dome functions
-	void			InitDome(float size, short res, short mode, short angle, float resbuf, struct Text* text); 
+	void			InitDome(float size, short res, short mode, short angle, float resbuf, short tilt, struct Text* text); 
 	void			EndDome();
 	void			RenderDome();
 	bool			m_usedome;





More information about the Bf-blender-cvs mailing list