[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