mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-07 04:00:37 -06:00
Change single.xml to use PlanarProjection and (0,0,0) user pos instead
Remove computed detection of view direction
This commit is contained in:
@@ -18,18 +18,14 @@
|
||||
<Viewport>
|
||||
<Pos x="0.0" y="0.0" />
|
||||
<Size x="1.0" y="1.0" />
|
||||
<Viewplane>
|
||||
<!-- Lower left -->
|
||||
<Pos x="-1.778" y="-1.0" z="0.0" />
|
||||
<!-- Upper left -->
|
||||
<Pos x="-1.778" y="1.0" z="0.0" />
|
||||
<!-- Upper right -->
|
||||
<Pos x="1.778" y="1.0" z="0.0" />
|
||||
</Viewplane>
|
||||
<PlanarProjection>
|
||||
<FOV down="25.0" left="30.0" right="30.0" up="25.0" />
|
||||
<Orientation heading="0.0" pitch="10.0" roll="0.0" />
|
||||
</PlanarProjection>
|
||||
</Viewport>
|
||||
</Window>
|
||||
</Node>
|
||||
<User eyeSeparation="0.065">
|
||||
<Pos x="0.0" y="0.0" z="2.0" />
|
||||
<Pos x="0.0" y="0.0" z="0.0" />
|
||||
</User>
|
||||
</Cluster>
|
||||
|
||||
@@ -247,7 +247,7 @@ bool RenderEngine::initializeGL() {
|
||||
}
|
||||
else {*/
|
||||
// get corner positions, calculating the forth to easily calculate center
|
||||
glm::vec3 corners[4];
|
||||
//glm::vec3 corners[4];
|
||||
/*corners[0] = wPtr->getCurrentViewport()->getViewPlaneCoords(
|
||||
sgct_core::SGCTProjectionPlane::LowerLeft);
|
||||
corners[1] = wPtr->getCurrentViewport()->getViewPlaneCoords(
|
||||
@@ -256,8 +256,8 @@ bool RenderEngine::initializeGL() {
|
||||
sgct_core::SGCTProjectionPlane::UpperRight);
|
||||
corners[3] = glm::vec3(corners[2][0], corners[0][1], corners[2][2]);
|
||||
*/
|
||||
const glm::vec3 center = (corners[0] + corners[1] + corners[2] + corners[3])
|
||||
/ 4.0f;
|
||||
//const glm::vec3 center = (corners[0] + corners[1] + corners[2] + corners[3])
|
||||
/// 4.0f;
|
||||
|
||||
//#if 0
|
||||
// // @TODO Remove the ifdef when the next SGCT version is released that requests the
|
||||
@@ -270,27 +270,28 @@ bool RenderEngine::initializeGL() {
|
||||
// const glm::vec3 eyePosition
|
||||
// = sgct_core::ClusterManager::instance()->getUserPtr()->getPos();
|
||||
//#endif
|
||||
const glm::vec3 eyePosition = sgct_core::ClusterManager::instance()->getDefaultUserPtr()->getPos();
|
||||
//const glm::vec3 eyePosition = sgct_core::ClusterManager::instance()->getDefaultUserPtr()->getPos();
|
||||
// get viewdirection, stores the direction in the camera, used for culling
|
||||
const glm::vec3 viewdir = glm::normalize(eyePosition - center);
|
||||
_mainCamera->setCameraDirection(-viewdir);
|
||||
_mainCamera->setLookUpVector(glm::vec3(0.0, 1.0, 0.0));
|
||||
//const glm::vec3 viewdir = glm::normalize(eyePosition - center);
|
||||
_mainCamera->setCameraDirection(glm::vec3(0.f, 0.f, -1.f));
|
||||
_mainCamera->setLookUpVector(glm::vec3(0.f, 1.f, 0.f));
|
||||
|
||||
// set the initial fov to be 0.0 which means everything will be culled
|
||||
float maxFov = 0.0f;
|
||||
//float maxFov = 0.0f;
|
||||
float maxFov = std::numeric_limits<float>::max();
|
||||
|
||||
// for each corner
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
// calculate radians to corner
|
||||
glm::vec3 dir = glm::normalize(eyePosition - corners[i]);
|
||||
float radsbetween = acos(glm::dot(viewdir, dir))
|
||||
/ (glm::length(viewdir) * glm::length(dir));
|
||||
//// for each corner
|
||||
//for (int i = 0; i < 4; ++i) {
|
||||
// // calculate radians to corner
|
||||
// glm::vec3 dir = glm::normalize(eyePosition - corners[i]);
|
||||
// float radsbetween = acos(glm::dot(viewdir, dir))
|
||||
// / (glm::length(viewdir) * glm::length(dir));
|
||||
|
||||
// the angle to a corner is larger than the current maxima
|
||||
if (radsbetween > maxFov) {
|
||||
maxFov = radsbetween;
|
||||
}
|
||||
}
|
||||
// // the angle to a corner is larger than the current maxima
|
||||
// if (radsbetween > maxFov) {
|
||||
// maxFov = radsbetween;
|
||||
// }
|
||||
//}
|
||||
_mainCamera->setMaxFov(maxFov);
|
||||
//}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user