6#ifndef OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
7#define OPENVDB_TOOLS_VECTORTRANSFORMER_HAS_BEEN_INCLUDED
25template<
typename Gr
idType>
39 template<
typename TreeIterT>
void operator()(
const TreeIterT& it)
const
50 template<
typename TreeIterT>
62 template<
typename TreeIterT>
77template<
typename Gr
idType>
inline
78typename std::enable_if<!VecTraits<typename GridType::ValueType>::IsVec,
void>::type
79doTransformVectors(GridType&,
const Mat4d&)
85template<
typename Gr
idType>
inline
86typename std::enable_if<VecTraits<typename GridType::ValueType>::IsVec,
void>::type
87doTransformVectors(GridType& grid,
const Mat4d& mat)
89 if (!grid.isInWorldSpace())
return;
91 const VecType vecType = grid.getVectorType();
99 if (vecType == VEC_COVARIANT_NORMALIZE) {
100 foreach(grid.beginValueAll(), MatMulNormalize(invmat));
102 foreach(grid.beginValueAll(), MatMul(invmat));
108 foreach(grid.beginValueAll(), MatMul(mat));
112 foreach(grid.beginValueAll(), HomogeneousMatMul(mat));
124template<
typename Gr
idType>
128 doTransformVectors<GridType>(grid, mat);
137#ifdef OPENVDB_USE_EXPLICIT_INSTANTIATION
139#ifdef OPENVDB_INSTANTIATE_VECTORTRANSFORMER
143#define _FUNCTION(TreeT) \
144 void transformVectors(Grid<TreeT>&, const Mat4d&)
Definition Exceptions.h:64
Mat4 inverse(T tolerance=0) const
Definition Mat4.h:485
Mat4 transpose() const
Definition Mat4.h:472
Vec3< T0 > transform3x3(const Vec3< T0 > &v) const
Transform a Vec3 by post-multiplication, without translation.
Definition Mat4.h:1069
Vec3< T0 > transformH(const Vec3< T0 > &p) const
Transform a Vec3 by post-multiplication, doing homogenous divison.
Definition Mat4.h:1026
bool normalize(T eps=T(1.0e-7))
this = normalized this
Definition Vec3.h:362
VecType
Definition Types.h:483
@ VEC_CONTRAVARIANT_ABSOLUTE
Definition Types.h:488
@ VEC_CONTRAVARIANT_RELATIVE
Definition Types.h:487
@ VEC_COVARIANT
Definition Types.h:485
@ VEC_COVARIANT_NORMALIZE
Definition Types.h:486
@ VEC_INVARIANT
Definition Types.h:484
Definition Exceptions.h:13
#define OPENVDB_THROW(exception, message)
Definition Exceptions.h:74
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition version.h.in:121
#define OPENVDB_USE_VERSION_NAMESPACE
Definition version.h.in:212
#define OPENVDB_VEC3_TREE_INSTANTIATE(Function)
Definition version.h.in:159