17 : _name(name), _lengthSec(duration)
47 it.second->getKeyframesAtTime(time, &kf1, &kf2);
48 if (kf2->
time() < result && kf2->
time() >= time)
72 it.second->getKeyframesAtTime(time, &kf1, &kf2);
73 if (kf1->
time() > result && kf1->
time() <= time)
86 if (it.second->animatedNode() == node)
99 for (; it !=
_nodeAnimTracks.end() && freeIndex == it->first; ++it, ++freeIndex)
124 it.second->apply(time, weight, scale);
135 it.second->applyToNode(node, time, weight, scale);
148 it.second->applyToNode(joint, time, weight, scale);
157 it.second->drawVisuals(
sv);
165 it.second->animatedNode()->resetToInitialState();
315 assert(axisA != axisB && radiusA > 0 && radiusB > 0);
334 A.
comp[axisA] = radiusA;
336 B.
comp[axisB] = radiusB;
338 C.
comp[axisA] = -radiusA;
340 D.
comp[axisB] = -radiusB;
347 for (
SLuint i = 0; i < controls.size(); ++i)
348 controls[i].
set(0, 0, 0);
349 controls[0].comp[axisA] = radiusA;
350 controls[0].comp[axisB] = k * radiusB;
351 controls[1].comp[axisB] = radiusB;
352 controls[1].comp[axisA] = k * radiusA;
353 controls[2].comp[axisB] = radiusB;
354 controls[2].comp[axisA] = k * -radiusA;
355 controls[3].comp[axisA] = -radiusA;
356 controls[3].comp[axisB] = k * radiusB;
357 controls[4].comp[axisA] = -radiusA;
358 controls[4].comp[axisB] = k * -radiusB;
359 controls[5].comp[axisB] = -radiusB;
360 controls[5].comp[axisA] = k * -radiusA;
361 controls[6].comp[axisB] = -radiusB;
362 controls[6].comp[axisA] = k * radiusA;
363 controls[7].comp[axisA] = radiusA;
364 controls[7].comp[axisB] = k * -radiusB;
float SLfloat
analog to GLfloat
unsigned long SLulong
analog to GLulong
unsigned int SLuint
analog to GLuint
bool SLbool
analog to GLbool
string SLstring
Redefinition of standard types for platform independence.
SLAxis
Coordinate axis enumeration.
SLQuat4< SLfloat > SLQuat4f
vector< SLVec3f > SLVVec3f
vector< SLVec4f > SLVVec4f
Base class for all animation keyframes.
SLAnimSkeleton keeps track of a skeletons joints and animations.
SLJoint * getJoint(SLuint id)
SLAnimKeyframe * keyframe(SLint index)
SLint numKeyframes() const
SLNodeAnimTrack * createNodeAnimTrackForRotation(SLNode *target, SLfloat angleDeg1, const SLVec3f &axis)
void drawNodeVisuals(SLSceneView *sv)
SLAnimation(const SLstring &name, SLfloat duration)
SLNodeAnimTrack * createNodeAnimTrackForRotation360(SLNode *target, const SLVec3f &axis)
SLMNodeAnimTrack _nodeAnimTracks
map of all the node tracks in this animation
SLNodeAnimTrack * createNodeAnimTrack()
SLfloat _lengthSec
duration of the animation in seconds
SLfloat lengthSec() const
SLfloat prevKeyframeTime(SLfloat time)
SLNodeAnimTrack * createNodeAnimTrackForRotation3(SLNode *target, SLfloat angleDeg0, SLfloat angleDeg1, SLfloat angleDeg2, const SLVec3f &axis)
SLbool affectsNode(SLNode *node)
SLNodeAnimTrack * createNodeAnimTrackForTranslation(SLNode *target, const SLVec3f &endPos)
SLNodeAnimTrack * createNodeAnimTrackForRotation4(SLNode *target, SLfloat angleDeg0, SLfloat angleDeg1, SLfloat angleDeg2, SLfloat angleDeg3, const SLVec3f &axis)
SLNodeAnimTrack * createNodeAnimTrackForScaling(SLNode *target, const SLVec3f &endScale)
void apply(SLfloat time, SLfloat weight=1.0f, SLfloat scale=1.0f)
SLfloat nextKeyframeTime(SLfloat time)
void applyToNode(SLNode *node, SLfloat time, SLfloat weight=1.0f, SLfloat scale=1.0f)
SLNodeAnimTrack * createNodeAnimTrackForEllipse(SLNode *target, SLfloat radiusA, SLAxis axisA, SLfloat radiusB, SLAxis axisB)
SLNodeAnimTrack * createNodeAnimTrackForRotation2(SLNode *target, SLfloat angleDeg0, SLfloat angleDeg1, const SLVec3f &axis)
The SLCurveBezier class implements a Bezier curve interpolation.
Specialized SLNode that represents a single joint (or bone) in a skeleton.
Specialized animation track for node animations.
void animatedNode(SLNode *target)
void interpolationCurve(SLCurve *curve)
SLTransformKeyframe * createNodeKeyframe(SLfloat time)
void translationInterpolation(SLAnimInterpolation interp)
SLNode represents a node in a hierarchical scene graph.
SceneView class represents a dynamic real time 3D view onto the scene.
void set(std::string path, const std::vector< char > &data)