VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtCamera.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 #pragma once
10 
19 
20 namespace makVrv{
21 
23  {
30  };
31 
33  {
35  };
36 
39  template <class T>
40  class DtCamera
41  {
42  public:
44  DtCamera();
46  virtual ~DtCamera();
47 
48  void setNearPlane(T fNearPlane);
49  T nearPlane(void) const;
50 
51  void setFarPlane(T fFarPlane);
52  T farPlane(void) const;
53 
55  void setFieldOfView(T fFOVy);
56  T fieldOfView(void) const;
57 
58  void setPosition(const DtVector3<T>& vPosition);
59  DtVector3<T> position(void) const;
60 
61  void setDirection(const DtVector3<T>& vDirection);
62  DtVector3<T> direction(void) const;
63 
64  DtVector3<T> upVector(void) const;
65  DtVector3<T> sideVector(void) const;
66 
68  void lookAt(const DtVector3<T>& vEye,const DtVector3<T>& vLook,const DtVector3<T>& vUp);
70  const DtMatrix4<T>& ViewMatrix(void) const;
71 
73  void SetPerspective(T fFOVy, T fAspectRatio, T fNearPlane, T fFarPlane);
75  const DtMatrix4<T>& ProjectionMatrix(void) const;
76 
78  const DtMatrix4<T>& ViewProjectionMatrix(void) const;
79 
80  void setFixedUpVector(bool fixed);
81  bool isFixedUpVector(void) const;
82 
84  T aspectRatio(void) const;
85 
87  bool IsVisible(const DtAxisAlignedBoundingBox<T>& box) const;
88 
91 
94  , const Vector2_uint32& viewPortSize) const;
95  private:
100 
105 
109 
111 
113  void updateFrustumPlanes(void);
114  void updateViewProjectionMatrix(void);
115  };
116 
117  template <class T>
119  {
120  public:
123  static DtVector2<T> project(const DtVector3<T>& vPosition
124  , const DtMatrix4<T>& view_projection_matrix
125  , bool clip = true);
126 
131  static Vector2_int project(const DtVector3<T>& vPosition
132  , const DtMatrix4<T>& view_projection_matrix
133  , const Vector2_uint32& viewPortSize
134  , bool clip = true);
135 
139  , const DtMatrix4<T>& view_projection_matrix
140  , const Vector2_uint32& viewPortSize
141  , bool clip = true);
142  };
143 
144 
147  template <class T>
148  class Frustum
149  {
150  public:
151  Frustum();
152  virtual ~Frustum();
153 
154  void SetPlane(FrustumPlane plane, T d, const DtVector3<T>& vNormal);
155  const DtPlane<T>& GetPlane(FrustumPlane plane);
156 
157  bool IsVisible(const DtAxisAlignedBoundingBox<T>& box) const;
159 
160  private:
161  std::vector< DtPlane<T> > m_FrustumPlanes;
162  };
163 
164 } //namespace makVrv
165 
166 #include "DtCamera.inl"
DtMatrix4< T > myViewProjectionMatrix
Definition: DtCamera.h:108
DtPlane< T > myFrustumPlanes[6]
Definition: DtCamera.h:112
2 dimensional vector
DtVector3< T > myVecSideVector
Definition: DtCamera.h:99
void setFixedUpVector(bool fixed)
void setDirection(const DtVector3< T > &vDirection)
Matrix manipulation utilities.
Definition: DtCamera.h:34
Screen Space Rectangle class.
DtVector3< T > myVecDirection
Definition: DtCamera.h:97
T myfFieldOfViewY
Definition: DtCamera.h:103
T aspectRatio(void) const
Get the aspect ratio.
bool mybFixedUpVector
Definition: DtCamera.h:110
const DtMatrix4< T > & ViewMatrix(void) const
Get the view matrix specified above.
virtual ~Frustum()
void setPosition(const DtVector3< T > &vPosition)
void updateFrustumPlanes(void)
DtPlane class.
static DtScreenRect getScreenAABB(const DtAxisAlignedBoundingBox< T > &worldBox, const DtMatrix4< T > &view_projection_matrix, const Vector2_uint32 &viewPortSize, bool clip=true)
Project box into screen space and compute its bounds.
Template for 32/64 bit Axis Aligned bounding boxes.
Definition: DtAxisAlignedBoundingBox.h:25
DtMatrix4< T > myProjectionMatrix
Definition: DtCamera.h:107
T myfNearPlane
Definition: DtCamera.h:101
DtVector3< T > position(void) const
Axis Aligned Bounding Box class.
T nearPlane(void) const
Template for 32/64 bit Cameras.
Definition: DtCamera.h:40
const DtMatrix4< T > & ViewProjectionMatrix(void) const
concatenated matrix : projection * view
FrustumPlane
Definition: DtCamera.h:22
const DtPlane< T > & GetPlane(FrustumPlane plane)
DtVector3< T > sideVector(void) const
Definition: DtCamera.h:118
T farPlane(void) const
virtual ~DtCamera()
DTOR.
DtScreenRect screenAABB(const DtAxisAlignedBoundingBox< T > &worldBox, const Vector2_uint32 &viewPortSize) const
Get the screen space bounds of a world box.
DtMatrix4< T > myViewMatrix
Definition: DtCamera.h:106
DtVector3< T > myVecUpVector
Definition: DtCamera.h:98
Definition: DtCamera.h:34
void setNearPlane(T fNearPlane)
bool IsVisible(const DtAxisAlignedBoundingBox< T > &box) const
Is a box visible from this camera?
Definition: DtCamera.h:27
void setFarPlane(T fFarPlane)
void SetPlane(FrustumPlane plane, T d, const DtVector3< T > &vNormal)
void setFieldOfView(T fFOVy)
This is the complete field of view in the Y direction. Not half.
DtVector3< T > upVector(void) const
VisibilityFromCamera
Definition: DtCamera.h:32
Definition: DtCamera.h:34
const DtMatrix4< T > & ProjectionMatrix(void) const
Get the projection matrix specified above.
T myfAspectRatio
Definition: DtCamera.h:104
std::vector< DtPlane< T > > m_FrustumPlanes
Definition: DtCamera.h:161
DtVector3< T > direction(void) const
void SetPerspective(T fFOVy, T fAspectRatio, T fNearPlane, T fFarPlane)
gluPerspective style setting of the projection matrix
Definition: DtCamera.h:28
Definition: DtCamera.h:26
VisibilityFromCamera getVisibility(const DtAxisAlignedBoundingBox< T > &box) const
Returns visibility from this camera?
bool IsVisible(const DtAxisAlignedBoundingBox< T > &box) const
DtIntSize class.
2 dimensional vector
Definition: DtVector3.h:26
VisibilityFromCamera GetVisibility(const DtAxisAlignedBoundingBox< T > &box) const
DtVector3< T > myVecPosition
Definition: DtCamera.h:96
Template for 32/64 bit bit frustums.
Definition: DtCamera.h:148
DtPlane class.
Definition: DtPlane.h:24
void lookAt(const DtVector3< T > &vEye, const DtVector3< T > &vLook, const DtVector3< T > &vUp)
gluLookAt style setting of the view matrix
Screen Space Rectangle class.
Definition: DtScreenRect.h:21
Definition: DtCamera.h:29
bool isFixedUpVector(void) const
assert macros
void updateViewProjectionMatrix(void)
static DtVector2< T > project(const DtVector3< T > &vPosition, const DtMatrix4< T > &view_projection_matrix, bool clip=true)
Normalized Device Coordinates (-1,1)
Definition: DtCamera.h:25
T myfFarPlane
Definition: DtCamera.h:102
T fieldOfView(void) const
4 dimensional matrix
Definition: DtMatrix4.h:19
Definition: DtCamera.h:24

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)