Animated transformation with an underlying keyframe representation. More...
#include <mitsuba/core/track.h>
Public Member Functions | |
AnimatedTransform (const Transform &trafo=Transform()) | |
Create a new animated transformation. More... | |
AnimatedTransform (Stream *stream) | |
Unserialized an animated transformation from a binary data stream. More... | |
AnimatedTransform (const AnimatedTransform *trafo) | |
Copy constructor. More... | |
size_t | getTrackCount () const |
Return the number of associated animation tracks. More... | |
AbstractAnimationTrack * | findTrack (AbstractAnimationTrack::EType type) |
Find a track of the given type. More... | |
const AbstractAnimationTrack * | findTrack (AbstractAnimationTrack::EType type) const |
Find a track of the given type. More... | |
AbstractAnimationTrack * | getTrack (size_t idx) |
Look up one of the tracks by index. More... | |
const AbstractAnimationTrack * | getTrack (size_t idx) const |
Look up one of the tracks by index (const version) More... | |
void | collectKeyframes (std::set< Float > &result) const |
Return the used keyframes as a set. More... | |
void | addTrack (AbstractAnimationTrack *track) |
Append an animation track. More... | |
void | appendTransform (Float time, const Transform &trafo) |
Convenience function, which appends a linear transformation to the track. More... | |
const Transform & | eval (Float t) const |
Compute the transformation for the specified time value. More... | |
bool | isStatic () const |
Is the animation static? More... | |
void | sortAndSimplify () |
Sort all animation tracks and remove unnecessary data (for user-provided input) More... | |
Point | transformAffine (Float t, const Point &p) const |
Transform a point by an affine / non-projective matrix. More... | |
void | transformAffine (Float t, const Point &p, Point &dest) const |
Transform a point by an affine / non-projective matrix (no temporaries) More... | |
Ray | transformAffine (Float t, const Ray &r) const |
Transform a ray by an affine / non-projective matrix. More... | |
void | transformAffine (Float t, const Ray &r, Ray &dest) const |
Transform a ray by an affine / non-projective matrix (no temporaries) More... | |
Point | operator() (Float t, const Point &p) const |
Matrix-vector multiplication for points in 3d space. More... | |
void | operator() (Float t, const Point &p, Point &dest) const |
Matrix-vector multiplication for points in 3d space (no temporaries) More... | |
Vector | operator() (Float t, const Vector &v) const |
Matrix-vector multiplication for vectors in 3d space. More... | |
void | operator() (Float t, const Vector &v, Vector &dest) const |
Matrix-vector multiplication for vectors in 3d space (no temporaries) More... | |
Normal | operator() (Float t, const Normal &n) const |
Matrix-vector multiplication for normals in 3d space. More... | |
void | operator() (Float t, const Normal &n, Normal &dest) const |
Matrix-vector multiplication for normals in 3d space (no temporaries) More... | |
Ray | operator() (Float t, const Ray &r) const |
Transform a ray. More... | |
void | operator() (Float t, const Ray &r, Ray &dest) const |
Transform a ray (no temporaries) More... | |
void | prependScale (const Vector &scale) |
Prepend a scale transformation to the transform (this is often useful) More... | |
void | serialize (Stream *stream) const |
Serialize to a binary data stream. More... | |
AABB1 | getTimeBounds () const |
Return the extents along the time axis. More... | |
AABB | getTranslationBounds () const |
Return an axis-aligned box bounding the amount of translation. More... | |
AABB | getSpatialBounds (const AABB &aabb) const |
Compute the spatial bounds of a transformed (static) AABB. More... | |
std::string | toString () const |
Return a human-readable string description. More... | |
virtual const Class * | getClass () const |
Retrieve this object's class. More... | |
Public Member Functions inherited from Object | |
Object () | |
Construct a new object. More... | |
int | getRefCount () const |
Return the current reference count. More... | |
void | incRef () const |
Increase the reference count of the object by one. More... | |
void | decRef (bool autoDeallocate=true) const |
Decrease the reference count of the object and possibly deallocate it. More... | |
Static Public Attributes | |
static Class * | m_theClass |
Static Public Attributes inherited from Object | |
static Class * | m_theClass |
Pointer to the object's class descriptor. More... | |
Protected Member Functions | |
virtual | ~AnimatedTransform () |
Virtual destructor. More... | |
Protected Member Functions inherited from Object | |
virtual | ~Object () |
Virtual private deconstructor. (Will only be called by ref) More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from Object | |
static void | staticInitialization () |
Initializes the built-in reference count debugger (if enabled) More... | |
static void | staticShutdown () |
Free the memory taken by staticInitialization() More... | |
Animated transformation with an underlying keyframe representation.
Create a new animated transformation.
When the transformation is constant (i.e. there are no animation tracks), the supplied parameter specifies the target value.
mitsuba::AnimatedTransform::AnimatedTransform | ( | Stream * | stream | ) |
Unserialized an animated transformation from a binary data stream.
mitsuba::AnimatedTransform::AnimatedTransform | ( | const AnimatedTransform * | trafo | ) |
Copy constructor.
|
protectedvirtual |
Virtual destructor.
void mitsuba::AnimatedTransform::addTrack | ( | AbstractAnimationTrack * | track | ) |
Append an animation track.
Convenience function, which appends a linear transformation to the track.
Internally, a polar decomposition is used to split the transformation into scale, translation, and rotation, which are all separately interpolated.
void mitsuba::AnimatedTransform::collectKeyframes | ( | std::set< Float > & | result | ) | const |
Return the used keyframes as a set.
Compute the transformation for the specified time value.
Note that the returned reference leads to a thread-local cache. This means that it will become invalidated at the next call to this function.
AbstractAnimationTrack* mitsuba::AnimatedTransform::findTrack | ( | AbstractAnimationTrack::EType | type | ) |
Find a track of the given type.
const AbstractAnimationTrack* mitsuba::AnimatedTransform::findTrack | ( | AbstractAnimationTrack::EType | type | ) | const |
Find a track of the given type.
|
virtual |
Retrieve this object's class.
Reimplemented from Object.
Compute the spatial bounds of a transformed (static) AABB.
AABB1 mitsuba::AnimatedTransform::getTimeBounds | ( | ) | const |
Return the extents along the time axis.
|
inline |
Look up one of the tracks by index.
|
inline |
Look up one of the tracks by index (const version)
|
inline |
Return the number of associated animation tracks.
AABB mitsuba::AnimatedTransform::getTranslationBounds | ( | ) | const |
Return an axis-aligned box bounding the amount of translation.
|
inline |
Is the animation static?
Matrix-vector multiplication for points in 3d space.
Matrix-vector multiplication for points in 3d space (no temporaries)
Matrix-vector multiplication for vectors in 3d space.
|
inline |
Matrix-vector multiplication for vectors in 3d space (no temporaries)
Matrix-vector multiplication for normals in 3d space.
|
inline |
Matrix-vector multiplication for normals in 3d space (no temporaries)
Transform a ray (no temporaries)
void mitsuba::AnimatedTransform::prependScale | ( | const Vector & | scale | ) |
Prepend a scale transformation to the transform (this is often useful)
void mitsuba::AnimatedTransform::serialize | ( | Stream * | stream | ) | const |
Serialize to a binary data stream.
void mitsuba::AnimatedTransform::sortAndSimplify | ( | ) |
Sort all animation tracks and remove unnecessary data (for user-provided input)
|
virtual |
Return a human-readable string description.
Reimplemented from Object.
Transform a point by an affine / non-projective matrix.
|
inline |
Transform a point by an affine / non-projective matrix (no temporaries)
Transform a ray by an affine / non-projective matrix.
|
inline |
Transform a ray by an affine / non-projective matrix (no temporaries)
|
static |