22 #include <matrix/vlTaitBryan.h>
23 #include <matrix/vlVector.h>
25 #include <osg/ref_ptr>
26 #include <osg/Matrixf>
28 #include <boost/thread/mutex.hpp>
29 #include <boost/unordered_map.hpp>
31 #include <unordered_set>
49 class DtIndirectEntityManager;
50 class DtOsgSceneConnector;
51 class DtModelDefinition;
52 class DtOsgModelInstance;
97 virtual void setModelDefinition(
const std::string& str);
102 virtual const std::string& modelDefinition()
const;
106 virtual const std::string& className()
const;
129 virtual void setPosition(
int vtx,
const DtVector& position);
134 virtual void setOrientation(
int vtx,
const DtTaitBryan& orientation);
138 virtual void setPositionOffset(
const DtVector& positionOffset);
142 virtual void setOrientationOffset(
const DtTaitBryan& orientationOffset);
146 virtual void setPositionAndOrientation(
int vtx,
const DtVector& position,
const DtTaitBryan& orientation);
151 virtual void setVisible(
bool isVisible);
160 virtual void setPartTranslation(
int partNumber,
165 virtual void setPartOrientation(
int partNumber,
166 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
170 virtual void setPartRotationalVelocity(
int partNumber,
171 const DtVector& rotationalVelocity,
bool forceUpdate =
true);
176 virtual bool findPartPositionAndOrientation(
int partNumber,
181 virtual DtVector partTranslation(
int partNumber)
const;
185 virtual DtTaitBryan partOrientation(
int partNumber)
const;
188 virtual void setPartVisibility(
int partNumber,
bool onOff);
194 virtual void getParts(
PartList& parts)
const;
197 virtual void addPart(
int partNumber, osgSim::DOFTransform* node);
206 virtual void setAnimationFrame(
const std::string& animationName,
208 int frameIndex)
override;
211 virtual void setAnimationRange(
const std::string& animationName,
212 int firstFrameIndex,
int lastFrameIndex)
override;
215 virtual void setAnimationSpeed(
const std::string& animationName,
216 double framesPerSecond)
override;
219 virtual void setAnimationState(
const std::string& animationName,
224 virtual void setAnimationLastFrameTime(
const std::string& animationName,
double animationLastFrameTime);
228 virtual void setAnimationLoopCount(
const std::string& animationName,
int loopCount);
232 virtual int animationFrameCount(
const std::string& animationName)
const;
236 virtual int animationCurrentFrame(
const std::string& animationName)
const;
240 virtual int animationFirstFrame(
const std::string& animationName)
const;
244 virtual int animationLastFrame(
const std::string& animationName)
const;
248 virtual double animationSpeed(
const std::string& animationName)
const;
252 virtual AnimationState animationState(
const std::string& animationName)
const;
256 virtual double animationLastFrameTime(
const std::string& animationName)
const;
260 virtual int animationLoopCount(
const std::string& animationName)
const;
266 virtual void addAnimation(
const std::string& animationName,
267 osg::Sequence* node);
276 virtual void setFlipBookAnimationsSpeed(
const DtVector& velocity);
282 virtual void scrollUvTextures(
const DtVector& velocity);
291 virtual void setModelScalingEnabled(
bool b);
296 virtual bool modelScalingEnabled();
301 virtual void setLocalModelScalingEnabled(
bool enabled);
305 virtual void setLocalModelScalingAmount(
float localScl);
314 virtual void setColor(
float r,
float g,
float b,
float a);
318 virtual void enableColorBlending(
bool b);
321 virtual void setBlendColor(
float r,
float g,
float b,
float a);
327 virtual void setOtherData0(
float r,
float g,
float b,
float a);
336 virtual void setLinkageConfigPair(
const std::string& linkageName,
const std::string& configName);
357 virtual void setDynamicSensorRegion(
const std::string& region,
bool state);
361 virtual bool dynamicSensorRegion(
const std::string& region);
373 virtual void setUvOffset(
const std::string& annotation,
374 float uOffset,
float vOffset);
380 virtual void setState(
int stateNumber,
int stateValue);
384 virtual void setStateUnfiltered(
int stateNumber,
int stateValue);
387 virtual void reapplyState();
391 virtual int state(
int stateNumber)
const;
397 virtual void addState(
int stateNumber, osgSim::MultiSwitch* node);
401 virtual void setStateValueExists(
int stateNumber,
int stateValue);
410 virtual void setLightpointMaxDistance(
float distance);
415 virtual void setLightPointGroup(
const std::string& groupName);
418 virtual const std::string& lightPointGroup()
const;
427 virtual void setDepthMask(osg::Group& parent);
430 virtual void addAnnotationGroup(
const std::string& annotation, osg::Group* group);
435 virtual void setIsSupportModel(
bool isSupport);
438 virtual void getBoundingBoxComponents(
DtVector& minimum,
DtVector& maximum);
445 virtual void slot_onShadowStateChanged(
bool on);
448 virtual void slot_atcModeEnableChanged(
bool state);
453 virtual void setSingleChildOn(osgSim::MultiSwitch* multiSwitch,
unsigned int switchIndex,
int nodeTypeIndex);
456 virtual void setDofHpr(osgSim::DOFTransform* dof,
const DtVector& hpr,
int nodeTypeIndex);
464 virtual void setStateInternal(
int stateNumber,
int stateValue);
468 virtual void setUvOffsetInternal(
const std::string& annotation,
float uOffset,
float vOffset);
474 virtual void setPartTranslationInternal(
int partNumber,
479 virtual void setPartOrientationInternal(
int partNumber,
480 const DtTaitBryan& orientation,
const DtVector& rotationalVelocity);
485 virtual void setPartRotationalVelocityInternal(
int partNumber,
486 const DtVector& rotationalVelocity,
bool forceUpdate =
true);
489 virtual void disablePart(
int partNumber);
492 virtual void enablePart(
int partNumber);
499 virtual void addToScene(
const DtUniqueID& sceneObjectId,
int modelSet,
503 virtual void removeFromScene();
506 virtual void modelInstanceToBeDeleted();
510 virtual void modelInstanceCreatedInternal(osg::Node* root,
DtOsgModelInstance* osgModelInstance,
bool daylightControlledLights,
float scale);
515 virtual void modelInstanceCreated(
bool castShadows,
bool daylightControlledLights,
float scale);
521 virtual void parseModel(osg::Node* root);
525 virtual void backgroundLoad();
528 virtual void foregroundLoad();
537 virtual void foregroundLoadInternal();
540 virtual void modelInstanceToBeDeletedInternal(
void);
558 static const unsigned int theNodePathCacheSize = 4;
bool myModelScalingEnabled
Definition: DtOsgArticulatedModel.h:591
DtArticulatedModelParser::FlipBookAnimationMap myFlipBookAnimationMap
Definition: DtOsgArticulatedModel.h:550
std::map< std::string, std::string > LinkageConfigMap
Definition: DtOsgArticulatedModel.h:73
NodePathCache myNodePathCache
Definition: DtOsgArticulatedModel.h:557
bool myInitialOrientationOffsetSet
Definition: DtOsgArticulatedModel.h:607
DtArticulatedModelParser::AnnotationMap myAnnotationMap
Definition: DtOsgArticulatedModel.h:552
DtArticulatedModelParser::FlipBookAnimationMap myFlipBookAnimationMapWithVelocityControl
Definition: DtOsgArticulatedModel.h:551
PartTranslationMap myPartTranslationMap
Definition: DtOsgArticulatedModel.h:586
DtArticulatedModelParser::AnimationMap myAnimationMap
Definition: DtOsgArticulatedModel.h:549
#define DT_DLL_VRVOSG
Definition: vrvOsg.h:23
AnnotationNameToUvsMap myAnnotationsUvMap
Definition: DtOsgArticulatedModel.h:562
SensorRegionStateMap mySensorRegionMap
Definition: DtOsgArticulatedModel.h:565
std::string myLightPointGroup
Definition: DtOsgArticulatedModel.h:614
std::map< int, std::pair< DtVector, DtVector > > PartTranslationMap
Definition: DtOsgArticulatedModel.h:585
bool myInitialOrientationSet
Definition: DtOsgArticulatedModel.h:604
PartOrientationMap myPartOrientationMap
Definition: DtOsgArticulatedModel.h:583
std::map< int, std::pair< DtTaitBryan, DtVector > > PartOrientationMap
Definition: DtOsgArticulatedModel.h:582
boost::unordered_map< int, NodeList > NodePathCache
Definition: DtOsgArticulatedModel.h:72
std::unordered_map< int, MultiSwitchList > MapStateNumberToMultiSwitchList
Definition: DtArticulatedModelParser.h:47
std::unordered_map< std::string, VectorSequenceAndMultipliers > FlipBookAnimationMap
Definition: DtArticulatedModelParser.h:102
An articulated model manipulator for controlling an articulated model.
Definition: DtArticulatedModel.h:31
DtArticulatedModelParser::MapStateNumberToStateValue myMapStateNumberToStateValue
Definition: DtOsgArticulatedModel.h:546
static boost::mutex theBackgroundLoadCloneMutex
Definition: DtOsgArticulatedModel.h:618
An articulated model manipulator for controlling an articulated model.
Definition: DtOsgArticulatedModel.h:67
A model definition Interaction any number of named parameters, and also can be used to store cached d...
Definition: DtModelDefinition.h:38
DtOsgSceneConnector is used by models to create an OSG position/orientation transform so that it can ...
Definition: DtOsgSceneConnector.h:76
std::map< int, int > MapStateNumberToStateValue
Definition: DtArticulatedModelParser.h:52
DtIndirectEntityManager & myIndirectEntityManager
Definition: DtOsgArticulatedModel.h:567
static const std::unordered_set< int > theStatesToFilter
which states are we filtering to take additional/optional actions on?
Definition: DtOsgArticulatedModel.h:622
std::unordered_map< std::string, AnimationList > AnimationMap
Definition: DtArticulatedModelParser.h:50
DtArticulatedModelParser::MapStateNumberToMultiSwitchList myMapStateNumberToMultiSwitchList
Definition: DtOsgArticulatedModel.h:548
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.
std::unordered_map< std::string, GroupList > AnnotationMap
Definition: DtArticulatedModelParser.h:57
The base class for simple OSG based model instances.
Definition: DtOsgModelInstance.h:76
AnimationState
Definition: DtArticulatedModel.h:34
DtArticulatedModelParser::ScrollableTextureGroupMap myScrollableTextureGroupMap
Definition: DtOsgArticulatedModel.h:553
Contains makVrv::DtArticulatedModel class.
DtArticulatedModelParser::MapStateNumberToStateExistenceList myMapStateNumberToStateExistenceList
Definition: DtOsgArticulatedModel.h:545
DtVector myBoundMin
Definition: DtOsgArticulatedModel.h:588
DtMetaFileManager::LinkageValueVec myModelMetaFeatures
List of node pointers that have meta data associated with them.
Definition: DtOsgArticulatedModel.h:572
DtUniqueID mySceneObjectId
Definition: DtOsgArticulatedModel.h:569
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::vector< osg::Node * > NodeList
Definition: DtOsgArticulatedModel.h:71
DtUniqueID myElementId
Definition: DtOsgArticulatedModel.h:611
DtVector mySetPosition
Definition: DtOsgArticulatedModel.h:601
bool myUseSwitch
Definition: DtOsgArticulatedModel.h:559
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
std::vector< int > PartList
Definition: DtArticulatedModel.h:36
Base class to provide boost signal/slot management.
DtOsgSceneConnector * mySceneConnector
Definition: DtOsgArticulatedModel.h:555
std::unordered_map< int, PartTransformList > PartMap
Definition: DtArticulatedModelParser.h:44
Contains makVrv::DtArticulatedModelParser class.
const char int mode
Definition: ioapi.h:38
Contains DLL export macros.
boost::unordered_map< std::string, std::pair< float, float > > AnnotationNameToUvsMap
Definition: DtOsgArticulatedModel.h:561
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
A utility Quaternion class.
Definition: DtQuat.h:19
singleton class that acts as a bridge between the
Definition: DtIndirectEntityManager.h:59
bool myInitialPositionOffsetSet
Definition: DtOsgArticulatedModel.h:606
boost::signalslib::signal< void(DtOsgArticulatedModel *, int, int)> signal_SetState
signal to emit when a state is set
Definition: DtOsgArticulatedModel.h:459
DtArticulatedModelParser::PartMap myPartMap
Definition: DtOsgArticulatedModel.h:547
boost::unordered_map< std::string, bool > SensorRegionStateMap
Definition: DtOsgArticulatedModel.h:564
bool myHandlersRegisterered
Definition: DtOsgArticulatedModel.h:616
std::vector< DtVirtualBaseClass * > myModelMetaAttachments
Vector of metafile attachment on this object so they can be deleted on object destruction.
Definition: DtOsgArticulatedModel.h:580
LinkageConfigMap myLinkageConfigMap
Map of linkage names (NodeName/Annotation) from the metafile(if it exists) to config names...
Definition: DtOsgArticulatedModel.h:576
DtTaitBryan mySetOrientation
Definition: DtOsgArticulatedModel.h:603
std::map< std::string, VectorScrollableTextureGroupAndParams > ScrollableTextureGroupMap
Definition: DtArticulatedModelParser.h:129
DtSignalConnectionManager myConnections
Definition: DtOsgArticulatedModel.h:612
Default implementation of the model parser for Articulated models.
Definition: DtArticulatedModelParser.h:38
std::unordered_map< int, StateExistenceList > MapStateNumberToStateExistenceList
Definition: DtArticulatedModelParser.h:54
bool myInitialPositionSet
Definition: DtOsgArticulatedModel.h:602