VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtOsgArticulatedModel.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright (c) 2020 MAK Technologies, Inc.
3  * All rights reserved.
4  *****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vrvOsg/vrvOsg.h>
13 
15 
16 #include <vrvOsg/DtInstanceState.h>
17 #include <vrvOsg/DtInstanceUtils.h>
18 
19 #include <boost/unordered_map.hpp>
20 
23 
24 #include <matrix/vlTaitBryan.h>
25 #include <matrix/vlVector.h>
26 
27 #include <osg/ref_ptr>
28 #include <osg/Matrixf>
30 
31 #include <boost/thread/mutex.hpp>
32 
33 namespace osg
34 {
35  class Matrixd;
36  class Sequence;
37  class Node;
38  class Group;
39 }
40 
41 namespace osgSim
42 {
43  class DOFTransform;
44  class MultiSwitch;
45 }
46 
47 namespace makVrv
48 {
49  class DtInstanceManager;
50  class DtOsgSceneConnector;
51  class DtModelDefinition;
52 
57  {
58  public:
59 
60  typedef std::vector<osg::Node*> NodeList;
61  typedef boost::unordered_map<int, NodeList> NodePathCache;
62  typedef std::map<std::string, std::string> LinkageConfigMap;
63 
66 
68  virtual ~DtOsgArticulatedModel();
69 
70 
73  virtual void setModelDefinition(const std::string& str);
74  virtual const std::string& modelDefinition() { return myModelDefinitionName; }
75 
78  virtual const std::string& className() const;
79 
82  virtual void setModelScalingEnabled(bool b);
83 
85  virtual bool modelScalingEnabled();
86 
90  virtual void setLocalModelScalingEnabled(bool enabled);
91 
94  virtual void setLocalModelScalingAmount(float localScl);
95 
99  virtual void setPosition(int vtx, const DtVector& position);
100 
104  virtual void setOrientation(int vtx, const DtTaitBryan& orientation);
105 
108  virtual void setPositionOffset(const DtVector& positionOffset);
109 
112  virtual void setOrientationOffset(const DtTaitBryan& orientationOffset);
113 
117  virtual void setVisible(bool isVisible);
118 
120 
122  virtual void setPartTranslation(int partNumber,
123  const DtVector& transform, const DtVector& velocity);
124 
126  virtual void setPartOrientation(int partNumber,
127  const DtTaitBryan& orientation, const DtVector& rotationalVelocity);
128 
131  virtual void setPartRotationalVelocity(int partNumber,
132  const DtVector& rotationalVelocity, bool forceUpdate = true);
133 
135  virtual void setState(int stateNumber, int stateValue);
136 
138  virtual void reapplyState();
139 
142  int state(int stateNumber) const;
143 
146  virtual void setLightpointMaxDistance( float distance );
147 
151  virtual void setDepthMask(osg::Group& parent);
152 
155  virtual void setAnimationFrame(const std::string& animationName,
156  int frameIndex);
157 
160  virtual void setAnimationRange(const std::string& animationName,
161  int firstFrameIndex, int lastFrameIndex);
162 
164  virtual void setAnimationSpeed(const std::string& animationName,
165  double framesPerSecond);
166 
168  virtual void setAnimationState(const std::string& animationName,
169  AnimationState mode);
170 
174  virtual void setAnimationLastFrameTime(const std::string& animationName, double animationLastFrameTime);
175 
179  virtual void setAnimationLoopCount(const std::string& animationName, int loopCount);
180 
185  virtual void setUvOffset(const std::string& annotation,
186  float uOffset, float vOffset);
187 
189  virtual void setDynamicSensorRegion(const std::string& region, bool state);
190 
192  virtual bool dynamicSensorRegion(const std::string& region);
193 
200  virtual void setLinkageConfigPair(const std::string& linkageName, const std::string& configName);
201 
203 
204  //@name Non-distributed functions
206 
210  virtual bool findPartPositionAndOrientation(int partNumber,
211  DtVector& position, DtQuat& ori);
212 
215  virtual DtVector partTranslation(int partNumber) const;
216 
219  virtual DtTaitBryan partOrientation(int partNumber) const;
220 
223  virtual int animationFrameCount(const std::string& animationName) const;
224 
227  virtual int animationCurrentFrame(const std::string& animationName) const;
228 
232  virtual int animationFirstFrame(const std::string& animationName) const;
233 
237  virtual int animationLastFrame(const std::string& animationName) const;
238 
241  virtual double animationSpeed(const std::string& animationName) const;
242 
245  virtual AnimationState animationState(const std::string& animationName) const;
246 
250  virtual double animationLastFrameTime(const std::string& animationName) const;
251 
253  // default param is -1, repeat forever
255  virtual int animationLoopCount(const std::string& animationName) const;
256 
258  const DtArticulatedModelParser::PartMap& parts() const;
259 
261  virtual void getParts(PartList& parts) const;
262 
264  const DtArticulatedModelParser::StateMap& states() const;
265 
267  const DtArticulatedModelParser::AnimationMap& animations() const;
268 
270  virtual void addPart(int partNumber, osgSim::DOFTransform* node);
271 
273  virtual void addState(int stateNumber, osgSim::MultiSwitch* node);
274 
277  virtual void setStateValueExists(int stateNumber, int stateValue);
278 
280  virtual void addAnimation(const std::string& animationName,
281  osg::Sequence* node);
282 
284  virtual void addAnnotationGroup(const std::string& annotation, osg::Group* group);
285 
287  virtual void setColor(float r, float g, float b, float a);
288 
290  virtual void enableColorBlending(bool b);
291 
293  virtual void setBlendColor(float r, float g, float b, float a);
294 
296  virtual void setPartVisibility(int partNumber, bool onOff);
297 
301  virtual void setIsSupportModel(bool isSupport);
302 
304  virtual void getBoundingBoxComponents(DtVector& minimum, DtVector& maximum);
305 
308  std::vector<DtVirtualBaseClass*>& modelAttachments();
309 
312  virtual bool applyMetafile(const DtModelDefinition* definition);
313 
315  virtual void slot_onShadowStateChanged(bool on);
316 
318  virtual void slot_atcModeEnableChanged(bool state);
319 
321 
325  DtUniqueID sceneObjectId();
326 
328  virtual void setElementId(DtUniqueID id);
329 
331  virtual void setLightPointGroup(const std::string& groupName);
332 
334  virtual std::string lightPointGroup();
335 
337  virtual LinkageConfigMap& linkageConfigMap();
338 
340  virtual const LinkageConfigMap& linkageConfigMap() const;
341 
342  protected:
343 
346  virtual void setStateInternal(int stateNumber, int stateValue);
347 
350  virtual void setUvOffsetInternal(const std::string& annotation, float uOffset, float vOffset);
351 
353  virtual void setPartTranslationInternal(int partNumber,
354  const DtVector& transform, const DtVector& velocity);
355 
357  virtual void setPartOrientationInternal(int partNumber,
358  const DtTaitBryan& orientation, const DtVector& rotationalVelocity);
359 
363  virtual void setPartRotationalVelocityInternal(int partNumber,
364  const DtVector& rotationalVelocity, bool forceUpdate = true);
365 
366  virtual void addToScene(const DtUniqueID& sceneObjectId, int modelSet,
367  int visualizerType);
368  virtual void removeFromScene();
369 
370  virtual void disablePart(int partNumber);
371  virtual void enablePart(int partNumber);
372 
373  virtual void modelInstanceToBeDeleted();
374 
376  virtual void modelInstanceCreated(bool castShadows, bool daylightControlledLights, float scale);
377 
379  virtual void mergeCurrentStateWithDefaults(DtArticulatedModelParser* parser);
380 
382  virtual void parseModel(osg::Node* root);
383 
385  virtual void backgroundLoad();
386 
387  virtual void foregroundLoad();
388 
389  protected:
390 
395 
402  static const unsigned int theNodePathCacheSize = 4;
404 
405 
406  typedef boost::unordered_map<std::string, std::pair<float, float> > AnnotationNameToUvsMap;
408 
409  typedef boost::unordered_map<std::string, bool> SensorRegionStateMap;
411 
413 
415 
418 
422 
425  std::vector<DtVirtualBaseClass*> myModelMetaAttachments;
426 
429 
430  typedef std::map<int, std::pair<DtTaitBryan, DtVector> > PartOrientationMap;
432 
433  typedef std::map<int, std::pair<DtVector, DtVector> > PartTranslationMap;
435 
436  DtVector myBoundMin, myBoundMax;
437 
439 
440  //needed to keep track of the initial state of the model scaling flag
442 
443  // These are used for backwards compatibility only. Even though you
444  // always call setModelDefinition (to finish constructing the model)
445  // before calling anything else, you used to be able to get away with
446  // calling setPosition() or setOrientation() first. That's no longer
447  // strictly true, so we have to store any position or orientation that
448  // gets set and then explicitly use them after setModelDefinition is
449  // called.
450 
453  DtTaitBryan mySetOrientation;
455 
458 
459 
460  // The model needs to hold on to this so it can provide it to the instance
461  // manager if the model is eventually instanced
464 
465  std::string myLightPointGroup;
466 
468 
469  static boost::mutex theBackgroundLoadCloneMutex;
470 
471  };
472 }
bool myModelScalingEnabled
Definition: DtOsgArticulatedModel.h:441
Contains makVrv::DtInstanceState declaration.
std::map< std::string, std::string > LinkageConfigMap
Definition: DtOsgArticulatedModel.h:62
NodePathCache myNodePathCache
Definition: DtOsgArticulatedModel.h:401
bool myInitialOrientationOffsetSet
Definition: DtOsgArticulatedModel.h:457
std::map< int, int > StateValueMap
Definition: DtArticulatedModelParser.h:48
DtArticulatedModelParser::AnnotationMap myAnnotationMap
Definition: DtOsgArticulatedModel.h:400
DtArticulatedModelParser::StateValueMap myStateValueMap
Definition: DtOsgArticulatedModel.h:394
DtInstanceUtils::PartMapCache * myPartMapCache
Definition: DtOsgArticulatedModel.h:427
PartTranslationMap myPartTranslationMap
Definition: DtOsgArticulatedModel.h:434
DtArticulatedModelParser::AnimationMap myAnimationMap
Definition: DtOsgArticulatedModel.h:399
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
AnnotationNameToUvsMap myAnnotationsUvMap
Definition: DtOsgArticulatedModel.h:407
SensorRegionStateMap mySensorRegionMap
Definition: DtOsgArticulatedModel.h:410
std::string myLightPointGroup
Definition: DtOsgArticulatedModel.h:465
std::map< int, std::pair< DtVector, DtVector > > PartTranslationMap
Definition: DtOsgArticulatedModel.h:433
Contains makVrv::DtMetaFileManager class.
bool myInitialOrientationSet
Definition: DtOsgArticulatedModel.h:454
PartOrientationMap myPartOrientationMap
Definition: DtOsgArticulatedModel.h:431
std::map< int, std::pair< DtTaitBryan, DtVector > > PartOrientationMap
Definition: DtOsgArticulatedModel.h:430
boost::unordered_map< int, NodeList > NodePathCache
Definition: DtOsgArticulatedModel.h:61
An articulated model manipulator for controlling an articulated model.
Definition: DtArticulatedModel.h:31
boost::unordered_map< std::string, AnimationList > AnimationMap
Definition: DtArticulatedModelParser.h:47
static boost::mutex theBackgroundLoadCloneMutex
Definition: DtOsgArticulatedModel.h:469
An articulated model manipulator for controlling an articulated model.
Definition: DtOsgArticulatedModel.h:56
DtInstanceManager & myInstanceManager
Definition: DtOsgArticulatedModel.h:412
bool myIsInstanced
Definition: DtOsgArticulatedModel.h:438
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:33
DtInstanceUtils::InstancedAnnotationMap myInstancedAnnotationMap
Definition: DtOsgArticulatedModel.h:392
DtOsgSceneConnector is used by models to create an OSG position/orientation transform so that it can ...
Definition: DtOsgSceneConnector.h:76
boost::unordered_map< int, StateList > StateMap
Definition: DtArticulatedModelParser.h:45
DtArticulatedModelParser::StateExistenceMap myStateExistenceMap
Definition: DtOsgArticulatedModel.h:393
boost::unordered_map< int, PartTransformList > PartMap
Definition: DtArticulatedModelParser.h:43
Contains makVrv::DtVirtualBaseClass class.
DT_DLL_VRVCORE double distance(const makVrv::DtCoordinateSystem &, const DtVector &from, const DtVector &to)
Returns the distance from the two points.
A helper class to help with animations of a DtOsgArticulatedModel.
Definition: DtArticulatedModelAnimationHelper.h:22
Manages data for instanced rendering system and kicks off DtInstanceProcessors to update instance sta...
Definition: DtInstanceManager.h:75
std::vector< LinkageValuePair > LinkageValueVec
ex.
Definition: DtMetaFileManager.h:52
Contains makVrv::DtArticulatedModel class.
DtVector myBoundMin
Definition: DtOsgArticulatedModel.h:436
DtMetaFileManager::LinkageValueVec myModelMetaFeatures
List of node pointers that have meta data associated with them.
Definition: DtOsgArticulatedModel.h:417
DtUniqueID mySceneObjectId
Definition: DtOsgArticulatedModel.h:414
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
std::vector< osg::Node * > NodeList
Definition: DtOsgArticulatedModel.h:60
DtUniqueID myElementId
Definition: DtOsgArticulatedModel.h:462
DtVector mySetPosition
Definition: DtOsgArticulatedModel.h:451
bool myUseSwitch
Definition: DtOsgArticulatedModel.h:403
unsigned long long DtUniqueID
Definition: DtUniqueID.h:22
std::map< std::string, unsigned int > InstancedAnimationMap
Definition: DtInstanceUtils.h:39
DtInstanceUtils::InstancedAnimationMap myInstancedAnimationMap
Definition: DtOsgArticulatedModel.h:391
Base class to provide boost signal/slot management.
DtOsgSceneConnector * mySceneConnector
Definition: DtOsgArticulatedModel.h:396
boost::unordered_map< std::string, GroupList > AnnotationMap
Definition: DtArticulatedModelParser.h:52
virtual const std::string & modelDefinition()
Definition: DtOsgArticulatedModel.h:74
std::map< std::string, ArrayRangeList > InstancedAnnotationMap
Definition: DtInstanceUtils.h:41
const char int mode
Definition: ioapi.h:38
boost::unordered_map< int, StateExistenceList > StateExistenceMap
Definition: DtArticulatedModelParser.h:50
Contains DLL export macros.
boost::unordered_map< std::string, std::pair< float, float > > AnnotationNameToUvsMap
Definition: DtOsgArticulatedModel.h:406
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
A utility Quaternion class.
Definition: DtQuat.h:22
Utilities for interacting with the instanced renderer.
bool myInitialPositionOffsetSet
Definition: DtOsgArticulatedModel.h:456
DtInstanceUtils::PartMapCache * myStateMapCache
Definition: DtOsgArticulatedModel.h:428
DtArticulatedModelParser::PartMap myPartMap
Definition: DtOsgArticulatedModel.h:397
boost::unordered_map< std::string, bool > SensorRegionStateMap
Definition: DtOsgArticulatedModel.h:409
std::vector< DtVirtualBaseClass * > myModelMetaAttachments
Vector of metafile attachment on this object so they can be deleted on object destruction.
Definition: DtOsgArticulatedModel.h:425
LinkageConfigMap myLinkageConfigMap
Map of linkage names (NodeName/Annotation) from the metafile(if it exists) to config names...
Definition: DtOsgArticulatedModel.h:421
DtTaitBryan mySetOrientation
Definition: DtOsgArticulatedModel.h:453
DtArticulatedModelParser::StateMap myStateMap
Definition: DtOsgArticulatedModel.h:398
DtSignalConnectionManager myConnections
Definition: DtOsgArticulatedModel.h:463
Default implementation of the model parser for Articulated models.
Definition: DtArticulatedModelParser.h:37
bool myInitialPositionSet
Definition: DtOsgArticulatedModel.h:452
Definition: DtInstanceUtils.h:52

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)