OpenSceneGraph 3.6.5
AnimationMaterial
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2018 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSG_ANIMATIONMATERIAL
15#define OSG_ANIMATIONMATERIAL 1
16
17#include <osg/Material>
18#include <osg/Callback>
19
21
22#include <iosfwd>
23#include <map>
24#include <float.h>
25
26namespace osgPresentation {
27
33{
34 public:
35
37
42
44
45
47 bool getMaterial(double time,osg::Material& material) const;
48
49 void insert(double time,osg::Material* material);
50
51 double getFirstTime() const { if (!_timeControlPointMap.empty()) return _timeControlPointMap.begin()->first; else return 0.0;}
52 double getLastTime() const { if (!_timeControlPointMap.empty()) return _timeControlPointMap.rbegin()->first; else return 0.0;}
53 double getPeriod() const { return getLastTime()-getFirstTime();}
54
61
62 void setLoopMode(LoopMode lm) { _loopMode = lm; }
63
64 LoopMode getLoopMode() const { return _loopMode; }
65
66
67 typedef std::map<double, osg::ref_ptr<osg::Material> > TimeControlPointMap;
68
70
72
74 void read(std::istream& in);
75
77 void write(std::ostream& out) const;
78
79 bool requiresBlending() const;
80
81 protected:
82
83 virtual ~AnimationMaterial() {}
84
85 void interpolate(osg::Material& material, float r, const osg::Material& lhs,const osg::Material& rhs) const;
86
89
90};
91
92
94{
95 public:
96
98 _useInverseMatrix(false),
99 _timeOffset(0.0),
100 _timeMultiplier(1.0),
101 _firstTime(DBL_MAX),
102 _latestTime(0.0),
103 _pause(false),
104 _pauseTime(0.0) {}
105
106
119
120
122
123 AnimationMaterialCallback(AnimationMaterial* ap,double timeOffset=0.0f,double timeMultiplier=1.0f):
125 _useInverseMatrix(false),
126 _timeOffset(timeOffset),
127 _timeMultiplier(timeMultiplier),
128 _firstTime(DBL_MAX),
129 _latestTime(0.0),
130 _pause(false),
131 _pauseTime(0.0) {}
132
134
136
138
139 void setTimeOffset(double offset) { _timeOffset = offset; }
140 double getTimeOffset() const { return _timeOffset; }
141
142 void setTimeMultiplier(double multiplier) { _timeMultiplier = multiplier; }
143 double getTimeMultiplier() const { return _timeMultiplier; }
144
145 void reset();
146
147 void setPause(bool pause);
148
151 double getAnimationTime() const;
152
154 virtual void operator()(osg::Node* node, osg::NodeVisitor* nv);
155
156 void update(osg::Node& node);
157
158 public:
159
166 bool _pause;
168
169 protected:
170
172
173};
174
175}
176
177#endif
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
The osgPresentation library is a NodeKit that extends the core scene graph to support 3D scene graph ...
Definition AnimationMaterial:26
Callback()
Definition Callback:38
Deprecated.
Definition Callback:215
NodeCallback()
Definition Callback:219
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Material - encapsulates OpenGL glMaterial state.
Definition Material:32
Base class for all internal nodes in the scene graph.
Definition Node:72
Visitor for type safe operations on osg::Nodes.
Definition NodeVisitor:82
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
Object()
Construct an object.
Definition Object:69
Smart pointer for handling referenced counted objects.
Definition ref_ptr:32
AnimationMaterial for specify the time varying transformation pathway to use when update camera and m...
Definition AnimationMaterial:33
LoopMode _loopMode
Definition AnimationMaterial:88
double getLastTime() const
Definition AnimationMaterial:52
LoopMode getLoopMode() const
Definition AnimationMaterial:64
AnimationMaterial(const AnimationMaterial &ap, const osg::CopyOp &copyop=osg::CopyOp::SHALLOW_COPY)
Definition AnimationMaterial:38
bool getMaterial(double time, osg::Material &material) const
get the transformation matrix for a point in time.
void insert(double time, osg::Material *material)
META_Object(osg, AnimationMaterial)
void setLoopMode(LoopMode lm)
Definition AnimationMaterial:62
TimeControlPointMap & getTimeControlPointMap()
Definition AnimationMaterial:69
void read(std::istream &in)
read the anumation path from a flat ascii file stream.
std::map< double, osg::ref_ptr< osg::Material > > TimeControlPointMap
Definition AnimationMaterial:67
void interpolate(osg::Material &material, float r, const osg::Material &lhs, const osg::Material &rhs) const
AnimationMaterial()
Definition AnimationMaterial:36
double getFirstTime() const
Definition AnimationMaterial:51
double getPeriod() const
Definition AnimationMaterial:53
virtual ~AnimationMaterial()
Definition AnimationMaterial:83
void write(std::ostream &out) const
write the anumation path to a flat ascii file stream.
LoopMode
Definition AnimationMaterial:56
@ SWING
Definition AnimationMaterial:57
@ LOOP
Definition AnimationMaterial:58
@ NO_LOOPING
Definition AnimationMaterial:59
TimeControlPointMap _timeControlPointMap
Definition AnimationMaterial:87
const TimeControlPointMap & getTimeControlPointMap() const
Definition AnimationMaterial:71
double _timeOffset
Definition AnimationMaterial:162
double getTimeOffset() const
Definition AnimationMaterial:140
AnimationMaterialCallback(AnimationMaterial *ap, double timeOffset=0.0f, double timeMultiplier=1.0f)
Definition AnimationMaterial:123
bool _pause
Definition AnimationMaterial:166
AnimationMaterialCallback(const AnimationMaterialCallback &apc, const osg::CopyOp &copyop)
Definition AnimationMaterial:107
double _pauseTime
Definition AnimationMaterial:167
~AnimationMaterialCallback()
Definition AnimationMaterial:171
bool _useInverseMatrix
Definition AnimationMaterial:161
double _timeMultiplier
Definition AnimationMaterial:163
AnimationMaterial * getAnimationMaterial()
Definition AnimationMaterial:135
osg::ref_ptr< AnimationMaterial > _animationMaterial
Definition AnimationMaterial:160
double _firstTime
Definition AnimationMaterial:164
AnimationMaterialCallback()
Definition AnimationMaterial:97
void setTimeOffset(double offset)
Definition AnimationMaterial:139
double getAnimationTime() const
get the animation time that is used to specify the position along the AnimationMaterial.
const AnimationMaterial * getAnimationMaterial() const
Definition AnimationMaterial:137
virtual void operator()(osg::Node *node, osg::NodeVisitor *nv)
implements the callback
void setAnimationMaterial(AnimationMaterial *path)
Definition AnimationMaterial:133
double getTimeMultiplier() const
Definition AnimationMaterial:143
META_Object(osg, AnimationMaterialCallback)
double _latestTime
Definition AnimationMaterial:165
void setTimeMultiplier(double multiplier)
Definition AnimationMaterial:142
#define OSGPRESENTATION_EXPORT
Definition Export:38

osg logo
Generated at Sun Jul 27 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.