1
1

Compare commits

...

12 Commits

Author SHA1 Message Date
Dalai Felinto
864dd794da Tilt option to tilt the camera (for planetarium domes) 2009-05-11 18:42:24 +00:00
Dalai Felinto
b8ba7c2be5 merge -r 19528-HEAD (20156)
starting dome test period again :) (i.e. not over committing in the trunk)
2009-05-11 18:26:47 +00:00
Dalai Felinto
c3fbb17e03 Warp Mesh supported now.
CopyTexSubImage2D implemented now instead of CopyTexImage2D
2009-04-04 02:05:57 +00:00
Dalai Felinto
aa8b86fcdf Commit of recent trunk merge. 2009-04-04 01:21:00 +00:00
Dalai Felinto
9789543875 final adjusts before first patch for reviewing.
Now the code is the same as the one found in:

[#18462] Fisheye (Dome) and Spherical Panoramic mode in BGE
file: 090329_review.R1.patch
2009-03-29 08:39:26 +00:00
Dalai Felinto
6465dd50b9 merge from trunk +
- Dome images > 180 optimized to use more of the tesselated mesh
- Bug fixed (scaled texture maps)
- clean up (no more OFFSET and WARPED  mode)
- I guess it's ready for review
2009-03-29 00:34:56 +00:00
Dalai Felinto
9ea1973082 A small fix (specular problem strikes again)
and now WireFrame mode shows the background mesh in wireframe as well. It's useful for calibration I think.
2009-03-27 06:42:36 +00:00
Dalai Felinto
352d2be993 merge with trunk (scons fix and others)
+
Spherical Panoramic (mode 3) working 100% for resolution bigger than 5.
Shadow problems fixed.
More cleanup in the code.
2009-03-27 06:05:49 +00:00
Dalai Felinto
007e665ced Dome and Panorama mode using the whole canvas as buffer size
- added ResBuffer option to reduce the size of the buffer
- changes in FlattenPanorama, I may revert this later
2009-03-25 05:41:18 +00:00
Dalai Felinto
ce2475321b merge from trunk.
I'm not sure I'm doing things rightly here :)
I'm syncing it now to commit more dome code later
2009-03-25 03:00:33 +00:00
Dalai Felinto
cc3a3a0875 First commit of the dome code.
Three modes working:
Dome mode - 1 fisheye, 2 truncated, 3 panoramic

A brief explanation of the code pipeline:

BL_KetsjiEmbedStart.cpp or GPG_Application.cpp
  -> KX_KetsjiEngine.cpp::InitDome()
          -> KX_Dome.cpp::Constructor(initiallising class)
          -> KX_Dome.cpp::CreateMesh()
          -> Turn to Hemisphere (normalize the verts coordinates)
          -> KX_Dome.cpp::FlattenDome()

 Every frame:
  -> KX_KetsjiEngine.cpp::RenderDome() [a copy of KX_KetsjiEngine.cpp::Render()]
          -> KX_Dome.cpp::RenderDomeFrame() [a copy of KX_KetsjiEngine.cpp::RenderFrame()]
          -> KX_Dome.cpp::BindImages()
          -> KX_Dome.cpp::DrawDome()
2009-03-24 05:43:20 +00:00
b11c7a55c1 ge_dome branch for dfelinto's dome support 2009-03-22 15:30:43 +00:00
14 changed files with 34 additions and 9 deletions

0
release/beos-4.5-i386/specific.sh Executable file → Normal file
View File

0
release/beos-5.0-i386/specific.sh Executable file → Normal file
View File

0
release/irix-6.2-mips/specific.sh Executable file → Normal file
View File

View File

@@ -235,6 +235,7 @@ Scene *add_scene(char *name)
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 @@ void free_dome_warp_text(struct Text *txt)
scene->r.dometext = NULL;
scene = scene->id.next;
}
}
}

View File

@@ -8078,6 +8078,7 @@ static void do_versions(FileData *fd, Library *lib, Main *main)
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) {

View File

@@ -318,7 +318,7 @@ typedef struct RenderData {
/* Dome variables */
short domeres, domemode;
short domeangle, pad9;
short domeangle, dometilt;
float domesize;
float domeresbuf;
struct Text *dometext;

0
source/blender/python/api2_2x/doc/epy_docgen.sh Executable file → Normal file
View File

View File

@@ -1833,13 +1833,14 @@ static uiBlock *framing_render_menu(void *arg_unused)
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);

View File

@@ -376,7 +376,7 @@ extern "C" void StartKetsjiShell(struct ScrArea *area,
//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)
{

View File

@@ -701,7 +701,7 @@ bool GPG_Application::startEngine(void)
//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

View File

@@ -49,6 +49,7 @@ KX_Dome::KX_Dome (
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 @@ KX_Dome::KX_Dome (
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 4 cameras for angles up to 180
Uses 5 cameras for angles up to 250<35>
Uses 6 cameras for angles up to 360<36>
*/
int i;
float deg45 = MT_PI / 4;
MT_Scalar c = cos(deg45);
MT_Scalar s = sin(deg45);
@@ -1579,6 +1582,23 @@ Uses 6 cameras for angles up to 360
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)

View File

@@ -67,6 +67,7 @@ public:
short mode,
short angle,
float resbuf,
short tilt,
struct Text* warptext
);
@@ -166,6 +167,7 @@ protected:
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;

View File

@@ -262,9 +262,9 @@ void KX_KetsjiEngine::SetSceneConverter(KX_ISceneConverter* sceneconverter)
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;
}

View File

@@ -211,7 +211,7 @@ public:
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;