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;


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to