6 #ifndef OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
7 #define OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
13 #include <type_traits>
24 template<
typename Gr
idType>
38 template<
typename TreeIterT>
void operator()(
const TreeIterT& it)
const
41 it.setValue(
mat.transformH(v));
49 template<
typename TreeIterT>
53 it.setValue(
mat.transform3x3(v));
61 template<
typename TreeIterT>
65 v =
mat.transform3x3(v);
76 template<
typename Gr
idType>
inline
77 typename std::enable_if<!VecTraits<typename GridType::ValueType>::IsVec,
void>
::type
78 doTransformVectors(GridType&,
const Mat4d&)
80 OPENVDB_THROW(TypeError,
"tools::transformVectors() requires a vector-valued grid");
84 template<
typename Gr
idType>
inline
85 typename std::enable_if<VecTraits<typename GridType::ValueType>::IsVec,
void>
::type
86 doTransformVectors(GridType& grid,
const Mat4d& mat)
88 if (!grid.isInWorldSpace())
return;
90 const VecType vecType = grid.getVectorType();
99 foreach(grid.beginValueAll(), MatMulNormalize(invmat));
101 foreach(grid.beginValueAll(), MatMul(invmat));
107 foreach(grid.beginValueAll(), MatMul(mat));
111 foreach(grid.beginValueAll(), HomogeneousMatMul(mat));
123 template<
typename Gr
idType>
127 doTransformVectors<GridType>(grid, mat);
134 #endif // OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
#define OPENVDB_USE_VERSION_NAMESPACE
GLint GLint GLsizei GLint GLenum GLenum type
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Mat4 inverse(T tolerance=0) const
#define OPENVDB_THROW(exception, message)