Some necessary changes to camera setting, re #43
This commit is contained in:
parent
32e3da752f
commit
5e5cfba035
3 changed files with 60 additions and 25 deletions
|
@ -541,12 +541,12 @@ void renderSceneScreenShot (uint left, uint right, uint top, uint bottom, uint s
|
||||||
{
|
{
|
||||||
CCameraBackup cbScene = setupCameraForScreenshot(*Scene, left, right, top, bottom, screenShotWidth, screenShotHeight);
|
CCameraBackup cbScene = setupCameraForScreenshot(*Scene, left, right, top, bottom, screenShotWidth, screenShotHeight);
|
||||||
CCameraBackup cbCanopy = setupCameraForScreenshot(*SceneRoot, left, right, top, bottom, screenShotWidth, screenShotHeight);
|
CCameraBackup cbCanopy = setupCameraForScreenshot(*SceneRoot, left, right, top, bottom, screenShotWidth, screenShotHeight);
|
||||||
|
commitCamera();
|
||||||
// sky setup are copied from main scene before rendering so no setup done here
|
// sky setup are copied from main scene before rendering so no setup done here
|
||||||
commitCameraSky();
|
|
||||||
renderScene(ClientCfg.ScreenShotFullDetail, ClientCfg.Bloom);
|
renderScene(ClientCfg.ScreenShotFullDetail, ClientCfg.Bloom);
|
||||||
restoreCamera(*Scene, cbScene);
|
restoreCamera(*Scene, cbScene);
|
||||||
restoreCamera(*SceneRoot, cbCanopy);
|
restoreCamera(*SceneRoot, cbCanopy);
|
||||||
commitCameraSky();
|
commitCamera();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
|
|
@ -370,8 +370,9 @@ void preRenderNewSky ()
|
||||||
sky.setup(cd, SmoothedClientDate, WeatherManager.getWeatherValue(), MainFogState.FogColor, Scene->getSunDirection(), false);
|
sky.setup(cd, SmoothedClientDate, WeatherManager.getWeatherValue(), MainFogState.FogColor, Scene->getSunDirection(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void commitCameraSky()
|
void commitCamera()
|
||||||
{
|
{
|
||||||
|
// Set the sky camera
|
||||||
if (s_SkyMode == NewSky)
|
if (s_SkyMode == NewSky)
|
||||||
{
|
{
|
||||||
CSky &sky = ContinentMngr.cur()->CurrentSky;
|
CSky &sky = ContinentMngr.cur()->CurrentSky;
|
||||||
|
@ -389,6 +390,17 @@ void commitCameraSky()
|
||||||
skyCameraMatrix.setPos(CVector::Null);
|
skyCameraMatrix.setPos(CVector::Null);
|
||||||
camSky.setMatrix(skyCameraMatrix);
|
camSky.setMatrix(skyCameraMatrix);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set The Root Camera
|
||||||
|
UCamera camRoot = SceneRoot->getCam();
|
||||||
|
if(!camRoot.empty())
|
||||||
|
{
|
||||||
|
// Update Camera Position/Rotation.
|
||||||
|
//camRoot.setPos(View.currentViewPos());
|
||||||
|
//camRoot.setRotQuat(View.currentViewQuat());
|
||||||
|
camRoot.setTransformMode(UTransformable::DirectMatrix); // FIXME
|
||||||
|
camRoot.setMatrix(MainCam.getMatrix());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ***************************************************************************
|
// ***************************************************************************
|
||||||
|
@ -439,14 +451,6 @@ static void renderCanopyPart(UScene::TRenderPart renderPart)
|
||||||
ContinentMngr.getFogState(CanopyFog, LightCycleManager.getLightLevel(), LightCycleManager.getLightDesc().DuskRatio, LightCycleManager.getState(), View.viewPos(), RootFogState);
|
ContinentMngr.getFogState(CanopyFog, LightCycleManager.getLightLevel(), LightCycleManager.getLightDesc().DuskRatio, LightCycleManager.getState(), View.viewPos(), RootFogState);
|
||||||
RootFogState.setupInDriver(*Driver);
|
RootFogState.setupInDriver(*Driver);
|
||||||
|
|
||||||
// Set The Root Camera
|
|
||||||
UCamera camRoot = SceneRoot->getCam();
|
|
||||||
if(!camRoot.empty())
|
|
||||||
{
|
|
||||||
// Update Camera Position/Rotation.
|
|
||||||
camRoot.setPos(View.currentViewPos());
|
|
||||||
camRoot.setRotQuat(View.currentViewQuat());
|
|
||||||
}
|
|
||||||
// Render the root scene
|
// Render the root scene
|
||||||
SceneRoot->renderPart(renderPart);
|
SceneRoot->renderPart(renderPart);
|
||||||
}
|
}
|
||||||
|
@ -1364,9 +1368,17 @@ bool mainLoop()
|
||||||
|
|
||||||
// Update Camera Position/Orientation.
|
// Update Camera Position/Orientation.
|
||||||
CVector currViewPos = View.currentViewPos();
|
CVector currViewPos = View.currentViewPos();
|
||||||
|
MainCam.setTransformMode(UTransformable::RotQuat);
|
||||||
MainCam.setPos(currViewPos);
|
MainCam.setPos(currViewPos);
|
||||||
MainCam.setRotQuat(View.currentViewQuat());
|
MainCam.setRotQuat(View.currentViewQuat());
|
||||||
if (StereoDisplay) StereoDisplay->updateCamera(0, &MainCam);
|
if (StereoDisplay)
|
||||||
|
{
|
||||||
|
StereoDisplay->updateCamera(0, &MainCam);
|
||||||
|
if (SceneRoot)
|
||||||
|
{
|
||||||
|
StereoDisplay->updateCamera(1, &SceneRoot->getCam());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// see if camera is below water (useful for sort order)
|
// see if camera is below water (useful for sort order)
|
||||||
if (ContinentMngr.cur())
|
if (ContinentMngr.cur())
|
||||||
|
@ -1457,9 +1469,6 @@ bool mainLoop()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////
|
|
||||||
// RENDER THE FRAME 3D //
|
|
||||||
//////////////////////////
|
|
||||||
if (!ClientCfg.Light)
|
if (!ClientCfg.Light)
|
||||||
{
|
{
|
||||||
CClientDate newDate(RT.getRyzomDay(), DayNightCycleHour);
|
CClientDate newDate(RT.getRyzomDay(), DayNightCycleHour);
|
||||||
|
@ -1546,9 +1555,6 @@ bool mainLoop()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the matrix in 3D Mode.
|
|
||||||
Driver->setMatrixMode3D(MainCam);
|
|
||||||
|
|
||||||
|
|
||||||
// R2ED pre render update
|
// R2ED pre render update
|
||||||
if (ClientCfg.R2EDEnabled)
|
if (ClientCfg.R2EDEnabled)
|
||||||
|
@ -1556,11 +1562,8 @@ bool mainLoop()
|
||||||
R2::getEditor().updateBeforeRender();
|
R2::getEditor().updateBeforeRender();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Position the camera to prepare the render
|
|
||||||
if (!ClientCfg.Light)
|
if (!ClientCfg.Light)
|
||||||
{
|
{
|
||||||
|
|
||||||
// Render
|
// Render
|
||||||
if(Render)
|
if(Render)
|
||||||
{
|
{
|
||||||
|
@ -1569,7 +1572,42 @@ bool mainLoop()
|
||||||
|
|
||||||
// Update weather
|
// Update weather
|
||||||
updateWeather();
|
updateWeather();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////
|
||||||
|
// RENDER THE FRAME 3D //
|
||||||
|
//////////////////////////
|
||||||
|
|
||||||
|
if (StereoDisplay)
|
||||||
|
{
|
||||||
|
// modify cameras for stereo display
|
||||||
|
const CViewport &vp = StereoDisplay->getCurrentViewport();
|
||||||
|
Driver->setViewport(vp);
|
||||||
|
nlassert(Scene);
|
||||||
|
Scene->setViewport(vp);
|
||||||
|
if (SceneRoot)
|
||||||
|
{
|
||||||
|
SceneRoot->setViewport(vp);
|
||||||
|
}
|
||||||
|
MainCam.setTransformMode(UTransformable::DirectMatrix);
|
||||||
|
StereoDisplay->getCurrentMatrix(0, &MainCam);
|
||||||
|
StereoDisplay->getCurrentFrustum(0, &MainCam);
|
||||||
|
if (SceneRoot)
|
||||||
|
{
|
||||||
|
// matrix updated during commitCamera from maincam
|
||||||
|
StereoDisplay->getCurrentFrustum(1, &SceneRoot->getCam());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Commit camera changes
|
||||||
|
commitCamera();
|
||||||
|
|
||||||
|
if (!ClientCfg.Light)
|
||||||
|
{
|
||||||
|
// Render
|
||||||
|
if(Render)
|
||||||
|
{
|
||||||
if (ClientCfg.Bloom)
|
if (ClientCfg.Bloom)
|
||||||
{
|
{
|
||||||
// set bloom parameters before applying bloom effect
|
// set bloom parameters before applying bloom effect
|
||||||
|
@ -1587,9 +1625,6 @@ bool mainLoop()
|
||||||
s_ForceFullDetail.set();
|
s_ForceFullDetail.set();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Commit camera changes to the sky camera
|
|
||||||
commitCameraSky();
|
|
||||||
|
|
||||||
// Render scene
|
// Render scene
|
||||||
renderScene();
|
renderScene();
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ void renderScene(bool forceFullDetail, bool bloom);
|
||||||
void setDefaultChatWindow(CChatWindow *defaultChatWindow);
|
void setDefaultChatWindow(CChatWindow *defaultChatWindow);
|
||||||
|
|
||||||
// Commit sky scene camera for rendering
|
// Commit sky scene camera for rendering
|
||||||
void commitCameraSky();
|
void commitCamera();
|
||||||
|
|
||||||
void updateDayNightCycleHour();
|
void updateDayNightCycleHour();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue