diff --git a/include/ACGL/Scene/CameraBase.hh b/include/ACGL/Scene/CameraBase.hh
new file mode 100644
index 0000000000000000000000000000000000000000..7abcee8a589956c0a087661d0c171ad8d9593683
--- /dev/null
+++ b/include/ACGL/Scene/CameraBase.hh
@@ -0,0 +1,26 @@
+#pragma once
+
+#include <ACGL/Math/Math.hh>
+
+namespace ACGL{
+namespace Scene{
+
+/**
+ * @brief Common interface for cameras
+ */
+class CameraBase
+{
+protected:
+    CameraBase();
+public:
+    virtual ~CameraBase();
+
+    // interface:
+    virtual glm::vec3 getPosition() const = 0;
+    virtual glm::mat4 getViewMatrix() const = 0;
+    virtual glm::mat4 getProjectionMatrix() const = 0;
+    virtual glm::uvec2 getViewportSize() const = 0;
+};
+
+}
+}
diff --git a/include/ACGL/Scene/FixedCamera.hh b/include/ACGL/Scene/FixedCamera.hh
new file mode 100644
index 0000000000000000000000000000000000000000..a86923c4f729dcbf79183d10c277b2dd8e31e647
--- /dev/null
+++ b/include/ACGL/Scene/FixedCamera.hh
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <Common/ClassHelper.hh>
+#include "CameraBase.hh"
+
+namespace ACGL{
+namespace Scene{
+
+/**
+ * @brief A fixed camera
+ */
+class FixedCamera : public CameraBase
+{
+private:
+
+    glm::vec3 mPosition;
+    glm::mat4 mViewMatrix;
+    glm::mat4 mProjectionMatrix;
+    glm::uvec2 mViewportSize;
+
+public:
+    /// CAUTION: default ctor with zero values
+    FixedCamera();
+    FixedCamera(const glm::vec3 &_pos, const glm::mat4 &_view, const glm::mat4 &_proj, const glm::uvec2 &_viewport);
+
+    CLASS_GETTER_SETTER2(glm::vec3, Position)
+    CLASS_GETTER_SETTER2(glm::mat4, ViewMatrix)
+    CLASS_GETTER_SETTER2(glm::mat4, ProjectionMatrix)
+    CLASS_GETTER_SETTER2(glm::uvec2, ViewportSize)
+};
+
+}
+}
diff --git a/include/ACGL/Scene/GenericCamera.hh b/include/ACGL/Scene/GenericCamera.hh
index 7bc62e68e28a30a8c87813eb0464974f4434abec..c486dac9f0d91de3bb01d61c8b167c50e3ed8a3f 100644
--- a/include/ACGL/Scene/GenericCamera.hh
+++ b/include/ACGL/Scene/GenericCamera.hh
@@ -9,6 +9,8 @@
 #include <ACGL/Math/Math.hh>
 #include <glm/gtx/quaternion.hpp>
 
+#include "CameraBase.hh"
+
 /*
  * What you definitly want to set:
  * - a position in 3D space (a vec3)
@@ -46,7 +48,7 @@
 namespace ACGL{
 namespace Scene{
 
-class GenericCamera
+class GenericCamera : public CameraBase
 {
 	public:
         ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/ACGL/Scene/CameraBase.cc b/src/ACGL/Scene/CameraBase.cc
new file mode 100644
index 0000000000000000000000000000000000000000..660000fc7d3737492516bbf3ef1c09f992b2e160
--- /dev/null
+++ b/src/ACGL/Scene/CameraBase.cc
@@ -0,0 +1,15 @@
+#include <ACGL/Scene/CameraBase.hh>
+
+namespace ACGL{
+namespace Scene{
+
+CameraBase::CameraBase()
+{
+}
+
+CameraBase::~CameraBase()
+{
+}
+
+}
+}
diff --git a/src/ACGL/Scene/FixedCamera.cc b/src/ACGL/Scene/FixedCamera.cc
new file mode 100644
index 0000000000000000000000000000000000000000..181828bff1fc56616c1c1b66bf616e37a4d9ea55
--- /dev/null
+++ b/src/ACGL/Scene/FixedCamera.cc
@@ -0,0 +1,20 @@
+#include <ACGL/Scene/FixedCamera.hh>
+
+
+namespace ACGL{
+namespace Scene{
+
+FixedCamera::FixedCamera()
+{
+}
+
+FixedCamera::FixedCamera(const glm::vec3 &_pos, const glm::mat4 &_view, const glm::mat4 &_proj, const glm::uvec2 &_viewport) :
+    mPosition(_pos),
+    mViewMatrix(_view),
+    mProjectionMatrix(_proj),
+    mViewportSize(_viewport)
+{
+}
+
+}
+}