33 #ifndef OPENVDB_MATH_LEGACYFRUSTUM_HAS_BEEN_INCLUDED 34 #define OPENVDB_MATH_LEGACYFRUSTUM_HAS_BEEN_INCLUDED 61 Coord tmpMinCoord(tmpMin);
62 Coord tmpMaxCoord(tmpMax);
65 mExtents =
CoordBBox(tmpMinCoord, tmpMaxCoord);
69 Mat4d tmpW2C, tmpC2S, tmpS2C, tmpWorldToLocal;
70 Mat4d tmpS2U, tmpXYLocalToUnit, tmpZLocalToUnit;
77 is.
read(reinterpret_cast<char*>(&tmpW2C),
79 is.read(reinterpret_cast<char*>(&mC2W),
81 is.read(reinterpret_cast<char*>(&tmpC2S),
83 is.read(reinterpret_cast<char*>(&tmpS2C),
85 is.read(reinterpret_cast<char*>(&tmpWorldToLocal),
87 is.read(reinterpret_cast<char*>(&mLocalToWorld),
90 is.read(reinterpret_cast<char*>(&tmpWindow[0]),
sizeof(
Real));
91 is.read(reinterpret_cast<char*>(&tmpWindow[1]),
sizeof(
Real));
92 is.read(reinterpret_cast<char*>(&tmpWindow[2]),
sizeof(
Real));
93 is.read(reinterpret_cast<char*>(&tmpWindow[3]),
sizeof(
Real));
94 is.read(reinterpret_cast<char*>(&tmpWindow[4]),
sizeof(
Real));
95 is.read(reinterpret_cast<char*>(&tmpWindow[5]),
sizeof(
Real));
97 is.read(reinterpret_cast<char*>(&tmpPadding),
sizeof(
Real));
99 is.read(reinterpret_cast<char*>(&tmpS2U),
101 is.read(reinterpret_cast<char*>(&mXYUnitToLocal),
103 is.read(reinterpret_cast<char*>(&tmpXYLocalToUnit),
105 is.read(reinterpret_cast<char*>(&mZUnitToLocal),
107 is.read(reinterpret_cast<char*>(&tmpZLocalToUnit),
111 mNearPlane = tmpWindow[4];
112 mFarPlane = tmpWindow[5];
116 mFrNearOrigin = unitToLocalFrustum(
Vec3R(0,0,0));
117 mFrFarOrigin = unitToLocalFrustum(
Vec3R(0,0,1));
119 Vec3d frNearXTip = unitToLocalFrustum(
Vec3R(1,0,0));
120 Vec3d frNearYTip = unitToLocalFrustum(
Vec3R(0,1,0));
121 mFrNearXBasis = frNearXTip - mFrNearOrigin;
122 mFrNearYBasis = frNearYTip - mFrNearOrigin;
124 Vec3R frFarXTip = unitToLocalFrustum(
Vec3R(1,0,1));
125 Vec3R frFarYTip = unitToLocalFrustum(
Vec3R(0,1,1));
126 mFrFarXBasis = frFarXTip - mFrFarOrigin;
127 mFrFarYBasis = frFarYTip - mFrFarOrigin;
134 double getDepth()
const {
return (mFarPlane - mNearPlane); }
137 return getNearPlaneWidth() / getFarPlaneWidth();
141 double nearPlaneWidth = (unitToWorld(
Vec3d(0,0,0)) - unitToWorld(
Vec3d(1,0,0))).length();
142 return nearPlaneWidth;
146 double farPlaneWidth = (unitToWorld(
Vec3d(0,0,1)) - unitToWorld(
Vec3d(1,0,1))).length();
147 return farPlaneWidth;
165 Vec3d nearLS = ( U[0] * mFrNearXBasis ) + ( U[1] * mFrNearYBasis ) + mFrNearOrigin;
166 Vec3d farLS = ( U[0] * mFrFarXBasis ) + ( U[1] * mFrFarYBasis ) + mFrFarOrigin;
169 return U[2] * farLS + ( 1.0 - U[2] ) * nearLS;
172 Vec3d unitToLocalFrustum(
const Vec3d& u)
const {
173 Vec3d fzu = mZUnitToLocal.transformH(u);
176 return mXYUnitToLocal.transformH(fu);
180 Mat4d mC2W, mLocalToWorld, mXYUnitToLocal, mZUnitToLocal;
182 Vec3d mFrNearXBasis, mFrNearYBasis, mFrFarXBasis, mFrFarYBasis;
183 Vec3d mFrNearOrigin, mFrFarOrigin;
184 double mNearPlane, mFarPlane;
192 #endif // OPENVDB_MATH_LEGACYFRUSTUM_HAS_BEEN_INCLUDED math::Vec3< Real > Vec3R
Definition: Types.h:79
double getDepth() const
Definition: LegacyFrustum.h:134
T ValueType
Definition: Vec3.h:54
void read(std::istream &is)
Definition: Tuple.h:160
Mat4< double > Mat4d
Definition: Mat4.h:1361
Vec3< double > Vec3d
Definition: Vec3.h:679
double getNearPlaneWidth() const
Definition: LegacyFrustum.h:140
const Mat4d & getCamXForm() const
Definition: LegacyFrustum.h:132
const CoordBBox & getBBox() const
Definition: LegacyFrustum.h:152
Signed (x, y, z) 32-bit integer coordinates.
Definition: Coord.h:51
LegacyFrustum class used at DreamWorks for converting old vdb files.
Definition: LegacyFrustum.h:50
~LegacyFrustum()
Definition: LegacyFrustum.h:130
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:136
T & z()
Definition: Vec3.h:112
void read(std::istream &is)
Definition: Mat.h:146
double getNearPlaneDist() const
Definition: LegacyFrustum.h:150
Definition: Exceptions.h:40
Axis-aligned bounding box of signed integer coordinates.
Definition: Coord.h:264
LegacyFrustum(std::istream &is)
Definition: LegacyFrustum.h:53
double getFarPlaneWidth() const
Definition: LegacyFrustum.h:145
double getTaper() const
Definition: LegacyFrustum.h:135
double value_type
Data type held by the matrix.
Definition: Mat4.h:61
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:188
Vec3d unitToWorld(const Vec3d &in) const
Definition: LegacyFrustum.h:154
double Real
Definition: Types.h:67