VR-Vantage 2.6 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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
const DtMatrix4< T > & ViewMatrix(void) const
Get the view matrix specified above.
Definition: DtCamera.inl:162
DtPlane< T > myFrustumPlanes[6]
Definition: DtCamera.h:112
DtCamera()
CTOR.
Definition: DtCamera.inl:17
virtual ~Frustum()
Definition: DtCamera.inl:460
2 dimensional vector
DtVector3< T > myVecSideVector
Definition: DtCamera.h:99
const DtPlane< T > & GetPlane(FrustumPlane plane)
Definition: DtCamera.inl:473
Frustum()
Definition: DtCamera.inl:454
void setFixedUpVector(bool fixed)
Definition: DtCamera.inl:199
void setDirection(const DtVector3< T > &vDirection)
Definition: DtCamera.inl:87
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.
Definition: DtCamera.inl:210
bool mybFixedUpVector
Definition: DtCamera.h:110
void setPosition(const DtVector3< T > &vPosition)
Definition: DtCamera.inl:75
void updateFrustumPlanes(void)
Definition: DtCamera.inl:216
DtPlane class.
DtVector3< T > direction(void) const
Definition: DtCamera.inl:93
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
Axis Aligned Bounding Box 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.
Definition: DtCamera.inl:413
T nearPlane(void) const
Definition: DtCamera.inl:43
Template for 32/64 bit Cameras.
Definition: DtCamera.h:40
FrustumPlane
Definition: DtCamera.h:22
DtVector3< T > upVector(void) const
Definition: DtCamera.inl:99
Definition: DtCamera.h:118
T farPlane(void) const
Definition: DtCamera.inl:56
DtScreenRect screenAABB(const DtAxisAlignedBoundingBox< T > &worldBox, const Vector2_uint32 &viewPortSize) const
Get the screen space bounds of a world box.
Definition: DtCamera.inl:393
DtMatrix4< T > myViewMatrix
Definition: DtCamera.h:106
DtVector3< T > myVecUpVector
Definition: DtCamera.h:98
const DtMatrix4< T > & ViewProjectionMatrix(void) const
concatenated matrix : projection * view
Definition: DtCamera.inl:266
Definition: DtCamera.h:34
void setNearPlane(T fNearPlane)
Definition: DtCamera.inl:36
bool IsVisible(const DtAxisAlignedBoundingBox< T > &box) const
Is a box visible from this camera?
Definition: DtCamera.inl:272
Definition: DtCamera.h:27
void setFarPlane(T fFarPlane)
Definition: DtCamera.inl:49
void SetPlane(FrustumPlane plane, T d, const DtVector3< T > &vNormal)
Definition: DtCamera.inl:465
void setFieldOfView(T fFOVy)
This is the complete field of view in the Y direction. Not half.
Definition: DtCamera.inl:62
VisibilityFromCamera
Definition: DtCamera.h:32
Definition: DtCamera.h:34
T myfAspectRatio
Definition: DtCamera.h:104
Camera inlines.
std::vector< DtPlane< T > > m_FrustumPlanes
Definition: DtCamera.h:161
void SetPerspective(T fFOVy, T fAspectRatio, T fNearPlane, T fFarPlane)
gluPerspective style setting of the projection matrix
Definition: DtCamera.inl:168
Definition: DtCamera.h:28
Definition: DtCamera.h:26
const DtMatrix4< T > & ProjectionMatrix(void) const
Get the projection matrix specified above.
Definition: DtCamera.inl:193
VisibilityFromCamera getVisibility(const DtAxisAlignedBoundingBox< T > &box) const
Returns visibility from this camera?
Definition: DtCamera.inl:309
bool IsVisible(const DtAxisAlignedBoundingBox< T > &box) const
Definition: DtCamera.inl:521
DtIntSize class.
2 dimensional vector
Definition: DtVector3.h:26
VisibilityFromCamera GetVisibility(const DtAxisAlignedBoundingBox< T > &box) const
Definition: DtCamera.inl:479
DtVector3< T > myVecPosition
Definition: DtCamera.h:96
DtVector3< T > sideVector(void) const
Definition: DtCamera.inl:105
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
Definition: DtCamera.inl:111
Screen Space Rectangle class.
Definition: DtScreenRect.h:21
virtual ~DtCamera()
DTOR.
Definition: DtCamera.inl:30
Definition: DtCamera.h:29
bool isFixedUpVector(void) const
Definition: DtCamera.inl:204
assert macros
void updateViewProjectionMatrix(void)
Definition: DtCamera.inl:260
static DtVector2< T > project(const DtVector3< T > &vPosition, const DtMatrix4< T > &view_projection_matrix, bool clip=true)
Normalized Device Coordinates (-1,1)
Definition: DtCamera.inl:360
Definition: DtCamera.h:25
DtVector3< T > position(void) const
Definition: DtCamera.inl:81
T myfFarPlane
Definition: DtCamera.h:102
T fieldOfView(void) const
Definition: DtCamera.inl:69
4 dimensional matrix
Definition: DtMatrix4.h:19
Definition: DtCamera.h:24


Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)