6 #ifndef OPENVDB_MATH_LEGACYFRUSTUM_HAS_BEEN_INCLUDED 7 #define OPENVDB_MATH_LEGACYFRUSTUM_HAS_BEEN_INCLUDED 34 Coord tmpMinCoord(tmpMin);
35 Coord tmpMaxCoord(tmpMax);
38 mExtents =
CoordBBox(tmpMinCoord, tmpMaxCoord);
42 Mat4d tmpW2C, tmpC2S, tmpS2C, tmpWorldToLocal;
43 Mat4d tmpS2U, tmpXYLocalToUnit, tmpZLocalToUnit;
50 is.
read(reinterpret_cast<char*>(&tmpW2C),
52 is.read(reinterpret_cast<char*>(&mC2W),
54 is.read(reinterpret_cast<char*>(&tmpC2S),
56 is.read(reinterpret_cast<char*>(&tmpS2C),
58 is.read(reinterpret_cast<char*>(&tmpWorldToLocal),
60 is.read(reinterpret_cast<char*>(&mLocalToWorld),
63 is.read(reinterpret_cast<char*>(&tmpWindow[0]),
sizeof(
Real));
64 is.read(reinterpret_cast<char*>(&tmpWindow[1]),
sizeof(
Real));
65 is.read(reinterpret_cast<char*>(&tmpWindow[2]),
sizeof(
Real));
66 is.read(reinterpret_cast<char*>(&tmpWindow[3]),
sizeof(
Real));
67 is.read(reinterpret_cast<char*>(&tmpWindow[4]),
sizeof(
Real));
68 is.read(reinterpret_cast<char*>(&tmpWindow[5]),
sizeof(
Real));
70 is.read(reinterpret_cast<char*>(&tmpPadding),
sizeof(
Real));
72 is.read(reinterpret_cast<char*>(&tmpS2U),
74 is.read(reinterpret_cast<char*>(&mXYUnitToLocal),
76 is.read(reinterpret_cast<char*>(&tmpXYLocalToUnit),
78 is.read(reinterpret_cast<char*>(&mZUnitToLocal),
80 is.read(reinterpret_cast<char*>(&tmpZLocalToUnit),
84 mNearPlane = tmpWindow[4];
85 mFarPlane = tmpWindow[5];
89 mFrNearOrigin = unitToLocalFrustum(
Vec3R(0,0,0));
90 mFrFarOrigin = unitToLocalFrustum(
Vec3R(0,0,1));
92 Vec3d frNearXTip = unitToLocalFrustum(
Vec3R(1,0,0));
93 Vec3d frNearYTip = unitToLocalFrustum(
Vec3R(0,1,0));
94 mFrNearXBasis = frNearXTip - mFrNearOrigin;
95 mFrNearYBasis = frNearYTip - mFrNearOrigin;
97 Vec3R frFarXTip = unitToLocalFrustum(
Vec3R(1,0,1));
98 Vec3R frFarYTip = unitToLocalFrustum(
Vec3R(0,1,1));
99 mFrFarXBasis = frFarXTip - mFrFarOrigin;
100 mFrFarYBasis = frFarYTip - mFrFarOrigin;
107 double getDepth()
const {
return (mFarPlane - mNearPlane); }
110 return getNearPlaneWidth() / getFarPlaneWidth();
114 double nearPlaneWidth = (unitToWorld(
Vec3d(0,0,0)) - unitToWorld(
Vec3d(1,0,0))).length();
115 return nearPlaneWidth;
119 double farPlaneWidth = (unitToWorld(
Vec3d(0,0,1)) - unitToWorld(
Vec3d(1,0,1))).length();
120 return farPlaneWidth;
138 Vec3d nearLS = ( U[0] * mFrNearXBasis ) + ( U[1] * mFrNearYBasis ) + mFrNearOrigin;
139 Vec3d farLS = ( U[0] * mFrFarXBasis ) + ( U[1] * mFrFarYBasis ) + mFrFarOrigin;
142 return U[2] * farLS + ( 1.0 - U[2] ) * nearLS;
145 Vec3d unitToLocalFrustum(
const Vec3d& u)
const {
146 Vec3d fzu = mZUnitToLocal.transformH(u);
149 return mXYUnitToLocal.transformH(fu);
153 Mat4d mC2W, mLocalToWorld, mXYUnitToLocal, mZUnitToLocal;
155 Vec3d mFrNearXBasis, mFrNearYBasis, mFrFarXBasis, mFrFarYBasis;
156 Vec3d mFrNearOrigin, mFrFarOrigin;
157 double mNearPlane, mFarPlane;
165 #endif // OPENVDB_MATH_LEGACYFRUSTUM_HAS_BEEN_INCLUDED double getDepth() const
Definition: LegacyFrustum.h:107
T & z()
Definition: Vec3.h:85
Mat4< double > Mat4d
Definition: Mat4.h:1334
Vec3< double > Vec3d
Definition: Vec3.h:662
double getNearPlaneWidth() const
Definition: LegacyFrustum.h:113
const Mat4d & getCamXForm() const
Definition: LegacyFrustum.h:105
const CoordBBox & getBBox() const
Definition: LegacyFrustum.h:125
Signed (x, y, z) 32-bit integer coordinates.
Definition: Coord.h:25
double Real
Definition: Types.h:37
T ValueType
Definition: Vec3.h:27
~LegacyFrustum()
Definition: LegacyFrustum.h:103
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:102
double getNearPlaneDist() const
Definition: LegacyFrustum.h:123
Definition: Exceptions.h:13
math::Vec3< Real > Vec3R
Definition: Types.h:49
void read(std::istream &is)
Definition: Tuple.h:133
double value_type
Data type held by the matrix.
Definition: Mat4.h:34
LegacyFrustum(std::istream &is)
Definition: LegacyFrustum.h:26
double getFarPlaneWidth() const
Definition: LegacyFrustum.h:118
double getTaper() const
Definition: LegacyFrustum.h:108
LegacyFrustum class used at DreamWorks for converting old vdb files.
Definition: LegacyFrustum.h:23
Axis-aligned bounding box of signed integer coordinates.
Definition: Coord.h:248
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:154
Vec3d unitToWorld(const Vec3d &in) const
Definition: LegacyFrustum.h:127
void read(std::istream &is)
Definition: Mat.h:119