mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-06 03:29:44 -06:00
Merge branch 'feature/interaction' into feature/globebrowsing
This commit is contained in:
@@ -1,26 +1,26 @@
|
||||
/*****************************************************************************************
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2016 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
* *
|
||||
* OpenSpace *
|
||||
* *
|
||||
* Copyright (c) 2014-2016 *
|
||||
* *
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of this *
|
||||
* software and associated documentation files (the "Software"), to deal in the Software *
|
||||
* without restriction, including without limitation the rights to use, copy, modify, *
|
||||
* merge, publish, distribute, sublicense, and/or sell copies of the Software, and to *
|
||||
* permit persons to whom the Software is furnished to do so, subject to the following *
|
||||
* conditions: *
|
||||
* *
|
||||
* The above copyright notice and this permission notice shall be included in all copies *
|
||||
* or substantial portions of the Software. *
|
||||
* *
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, *
|
||||
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A *
|
||||
* PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT *
|
||||
* HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF *
|
||||
* CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE *
|
||||
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
||||
****************************************************************************************/
|
||||
|
||||
#ifndef __CAMERA_H__
|
||||
#define __CAMERA_H__
|
||||
@@ -40,27 +40,27 @@
|
||||
|
||||
namespace openspace {
|
||||
/**
|
||||
This class still needs some more love. Suggested improvements:
|
||||
- Remove psc from the camera class interface.
|
||||
- Accessors should return constant references to double precision class members.
|
||||
- Remove the scaling variable (What is it used for?)
|
||||
- Remove the maxFov and sinMaxfov variables. Redundant since the fov is embedded
|
||||
within the perspective projection matrix.
|
||||
- Remove focusposition, part of the integration with the scale graph. The
|
||||
"focus position" should not be needed since we assume the camera is always
|
||||
positioned relative to its origin. When orbiting another object (not in origin),
|
||||
the focus position should probably be handled outside the camera class
|
||||
(interaction handler) since it does not affect the state of the camera
|
||||
(only how it interacts).
|
||||
- The class might need some more reasonable accessors depending on use cases.
|
||||
(up vector world space?)
|
||||
- Make clear which function returns a combined view matrix (things that are
|
||||
dependent on the separate sgct nodes).
|
||||
This class still needs some more love. Suggested improvements:
|
||||
- Remove psc from the camera class interface.
|
||||
- Accessors should return constant references to double precision class members.
|
||||
- Remove the scaling variable (What is it used for?)
|
||||
- Remove the maxFov and sinMaxfov variables. Redundant since the fov is embedded
|
||||
within the perspective projection matrix.
|
||||
- Remove focusposition, part of the integration with the scale graph. The
|
||||
"focus position" should not be needed since we assume the camera is always
|
||||
positioned relative to its origin. When orbiting another object (not in origin),
|
||||
the focus position should probably be handled outside the camera class
|
||||
(interaction handler) since it does not affect the state of the camera
|
||||
(only how it interacts).
|
||||
- The class might need some more reasonable accessors depending on use cases.
|
||||
(up vector world space?)
|
||||
- Make clear which function returns a combined view matrix (things that are
|
||||
dependent on the separate sgct nodes).
|
||||
*/
|
||||
class Camera {
|
||||
/**
|
||||
Used to explicitly show which variables within the Camera class that are used
|
||||
for caching.
|
||||
Used to explicitly show which variables within the Camera class that are used
|
||||
for caching.
|
||||
*/
|
||||
template<typename T>
|
||||
struct Cached
|
||||
@@ -100,7 +100,6 @@ namespace openspace {
|
||||
const Vec3& positionVec3() const;
|
||||
const Vec3& unsynchedPositionVec3() const;
|
||||
const Vec3& focusPositionVec3() const;
|
||||
// Should return const refs
|
||||
const Vec3& viewDirectionWorldSpace() const;
|
||||
const Vec3& lookUpVectorCameraSpace() const;
|
||||
const Vec3& lookUpVectorWorldSpace() const;
|
||||
@@ -109,7 +108,7 @@ namespace openspace {
|
||||
const Quat& rotationQuaternion() const;
|
||||
float maxFov() const;
|
||||
float sinMaxFov() const;
|
||||
|
||||
|
||||
// @TODO this should simply be called viewMatrix!
|
||||
// Or it needs to be changed so that it actually is combined. Right now it is
|
||||
// only the view matrix that is the same for all SGCT cameras.
|
||||
@@ -124,9 +123,9 @@ namespace openspace {
|
||||
void deserialize(SyncBuffer* syncBuffer);
|
||||
|
||||
/**
|
||||
Handles SGCT's internal matrices. Also caches a calculated viewProjection
|
||||
matrix. This is the data that is different for different cameras within
|
||||
SGCT.
|
||||
Handles SGCT's internal matrices. Also caches a calculated viewProjection
|
||||
matrix. This is the data that is different for different cameras within
|
||||
SGCT.
|
||||
*/
|
||||
class SgctInternal {
|
||||
friend class Camera;
|
||||
@@ -174,8 +173,8 @@ namespace openspace {
|
||||
const glm::mat4& viewProjectionMatrix() const;
|
||||
private:
|
||||
/**
|
||||
Class encapsulating data that needs to be synched between SGCT nodes.
|
||||
Are all three variables (i.e. local, shared, synced) really neccessary? /EB
|
||||
Class encapsulating data that needs to be synched between SGCT nodes.
|
||||
Are all three variables (i.e. local, shared, synced) really neccessary? /EB
|
||||
*/
|
||||
template <typename T>
|
||||
struct SyncData {
|
||||
|
||||
Reference in New Issue
Block a user