Ogre2.x implementation of the visual class. More...
#include <Ogre2Visual.hh>
Public Member Functions | |
virtual | ~Ogre2Visual () |
Destructor. | |
virtual gz::math::AxisAlignedBox | BoundingBox () const override |
Get the bounding box in world frame coordinates. | |
virtual gz::math::AxisAlignedBox | LocalBoundingBox () const override |
Get the local bounding box of the visual. | |
virtual void | SetStatic (bool _static) override |
Tells Render Engine this Visual will be static (i.e. won't move, rotate or scale) You can still move, rotate or scale the Visual; however doing so has a performance impact. How much of an impact will depend on the rendering backend being used. | |
virtual void | SetVisibilityFlags (uint32_t _flags) override |
Set visibility flags. | |
virtual void | SetVisible (bool _visible) override |
Specify if this visual is visible. | |
virtual void | SetWireframe (bool _show) override |
Enable or disable wireframe. | |
virtual bool | Static () const override |
Get whether the visual is static. | |
virtual bool | Wireframe () const override |
Get whether wireframe is enabled for this visual. | |
Public Member Functions inherited from BaseVisual< Ogre2Node > | |
virtual | ~BaseVisual () |
virtual void | AddGeometry (GeometryPtr _geometry) override |
Add the given geometry to this visual. If the given node is already attached, no work will be done. | |
virtual void | AddVisibilityFlags (uint32_t _flags) override |
Add visibility flags. | |
virtual VisualPtr | Clone (const std::string &_name, NodePtr _newParent) const override |
Clone the visual (and its children) with a new name. | |
virtual void | Destroy () override |
Destroy any resources associated with this object. Invoking any other functions after destroying an object will result in undefined behavior. | |
virtual GeometryPtr | GeometryByIndex (unsigned int _index) const override |
Get geometry at given index. If no geometry exists at given index, NULL will be returned. | |
virtual unsigned int | GeometryCount () const override |
Get the number of geometries attached to this visual. | |
virtual bool | HasGeometry (ConstGeometryPtr _geometry) const override |
Determine if given geometry is attached to this visual. | |
virtual math::Pose3d | LocalPose () const override |
Get the local pose. | |
virtual MaterialPtr | Material () const override |
Get the material assigned to attached visuals and geometries. | |
virtual void | PreRender () override |
Prepare this object and any of its children for rendering. This should be called for each object in a scene just before rendering, which can be achieved by a single call to Scene::PreRender. | |
virtual void | RemoveGeometries () override |
Remove all attached geometries from this visual. | |
virtual GeometryPtr | RemoveGeometry (GeometryPtr _geometry) override |
Remove the given geometry from this visual. If the given node is not a child of this visual, no work will be done. | |
virtual GeometryPtr | RemoveGeometryByIndex (unsigned int _index) override |
Remove the geometry at the given index from this visual. If the specified node is not attached this visual, no work will be done. | |
virtual void | RemoveVisibilityFlags (uint32_t _flags) override |
Remove visibility flags. | |
virtual void | SetChildMaterial (MaterialPtr _material, bool _unique=true) override |
Set the material for all attached visuals only. | |
virtual void | SetGeometryMaterial (MaterialPtr _material, bool _unique=true) override |
Set the material for all attached geometries only. | |
virtual void | SetLocalPose (const math::Pose3d &_pose) override |
Set the local pose. | |
virtual void | SetMaterial (const std::string &_name, bool _unique=true) override |
Set the material for all attached visuals and geometries. The specified material will be retrieved from Scene::Material using the given material name. If no material is registered with the given name, no work will be done. | |
virtual void | SetMaterial (MaterialPtr _material, bool _unique=true) override |
Set the material for all attached visuals and geometries. | |
virtual uint32_t | VisibilityFlags () const override |
Get visibility flags. | |
Public Member Functions inherited from Visual | |
virtual | ~Visual () |
Destructor. | |
Public Member Functions inherited from Node | |
virtual | ~Node () |
Destructor. | |
Public Member Functions inherited from Object | |
virtual | ~Object () |
Destructor. | |
virtual unsigned int | Id () const =0 |
Get the object ID. This ID will be unique across all objects inside a given scene, but necessarily true for objects across different scenes. | |
virtual std::string | Name () const =0 |
Get the object name. This name will be unique across all objects inside a given scene, but necessarily true for objects across different scenes. | |
virtual void | PostRender ()=0 |
Post process this object and any of its children after rendering. | |
virtual ScenePtr | Scene () const =0 |
Get the Scene that created this object. | |
Public Member Functions inherited from Ogre2Node | |
virtual | ~Ogre2Node () |
Destructor. | |
virtual bool | HasParent () const override |
Determine if this Node is attached to another Node. | |
virtual bool | InheritScale () const override |
Determine if this node inherits scale from this parent. | |
virtual math::Vector3d | LocalScale () const override |
Get the local scale. | |
virtual Ogre::SceneNode * | Node () const |
Get a pointer to the underlying scene node. | |
virtual NodePtr | Parent () const override |
Get the parent Node. | |
virtual void | SetInheritScale (bool _inherit) override |
Specify if this node inherits scale from its parent. | |
Public Member Functions inherited from BaseNode< Ogre2Object > | |
virtual | ~BaseNode () |
virtual void | AddChild (NodePtr _child) override |
Add the given node to this node. If the given node is already a child, no work will be done. | |
virtual NodePtr | ChildById (unsigned int _id) const override |
Get node with given ID. If no child exists with given ID, NULL will be returned. | |
virtual NodePtr | ChildByIndex (unsigned int _index) const override |
Get node at given index. If no child exists at given index, NULL will be returned. | |
virtual NodePtr | ChildByName (const std::string &_name) const override |
Get node with given name. If no child exists with given name, NULL will be returned. | |
virtual unsigned int | ChildCount () const override |
Get number of child nodes. | |
virtual bool | HasChild (ConstNodePtr _child) const override |
Determine if given node is an attached child. | |
virtual bool | HasChildId (unsigned int _id) const override |
Determine if node with given ID is an attached child. | |
virtual bool | HasChildName (const std::string &_name) const override |
Determine if node with given name is an attached child. | |
virtual bool | HasUserData (const std::string &_key) const override |
Check if node has custom data. | |
virtual math::Pose3d | InitialLocalPose () const override |
Get the initial local pose. | |
virtual math::Vector3d | LocalPosition () const override |
Get the local position. | |
virtual math::Quaterniond | LocalRotation () const override |
Get the local rotation. | |
virtual math::Vector3d | Origin () const override |
Get position of origin. | |
virtual NodePtr | RemoveChild (NodePtr _child) override |
Remove (detach) the given node from this node. If the given node is not a child of this node, no work will be done. | |
virtual NodePtr | RemoveChildById (unsigned int _id) override |
Remove (detach) the node with the given ID from this node. If the specified node is not a child of this node, no work will be done. | |
virtual NodePtr | RemoveChildByIndex (unsigned int _index) override |
Remove (detach) the node at the given index from this node. If the specified node is not a child of this node, no work will be done. | |
virtual NodePtr | RemoveChildByName (const std::string &_name) override |
Remove (detach) the node with the given name from this node. If the specified node is not a child of this node, no work will be done. | |
virtual void | RemoveChildren () override |
Remove all child nodes from this node This detaches all the child nodes but does not destroy them. | |
virtual void | RemoveParent () override |
Detach this Node from its parent. If this Node does not have a parent, no work will be done. | |
virtual void | Scale (const math::Vector3d &_scale) override |
Scale the current scale by the given scalars. | |
virtual void | Scale (double _scale) override |
Scale the current scale by the given scalar. The given scalar will be assigned to the x, y, and z coordinates. | |
virtual void | Scale (double _x, double _y, double _z) override |
Scale the current scale by the given scalars. | |
virtual void | SetLocalPosition (const math::Vector3d &_position) override |
Set the local position. | |
virtual void | SetLocalPosition (double _x, double _y, double _z) override |
Set the local position. | |
virtual void | SetLocalRotation (const math::Quaterniond &_rotation) override |
Set the local rotation. | |
virtual void | SetLocalRotation (double _r, double _p, double _y) override |
Set the local rotation. | |
virtual void | SetLocalRotation (double _w, double _x, double _y, double _z) override |
Set the local rotation. | |
virtual void | SetLocalScale (const math::Vector3d &_scale) override |
Set the local scale. | |
virtual void | SetLocalScale (double _scale) override |
Set the local scale. The given scale will be assigned to the x, y, and z coordinates. | |
virtual void | SetLocalScale (double _x, double _y, double _z) override |
Set the local scale. | |
virtual void | SetOrigin (const math::Vector3d &_origin) override |
Set position of origin. The position should be relative to the original origin of the geometry. | |
virtual void | SetOrigin (double _x, double _y, double _z) override |
Set position of origin. The position should be relative to the original origin of the geometry. | |
virtual void | SetUserData (const std::string &_key, Variant _value) override |
Store any custom data associated with this node. | |
virtual void | SetWorldPose (const math::Pose3d &_pose) override |
Set the world pose. | |
virtual void | SetWorldPosition (const math::Vector3d &_position) override |
Set the world position. | |
virtual void | SetWorldPosition (double _x, double _y, double _z) override |
Set the world position. | |
virtual void | SetWorldRotation (const math::Quaterniond &_rotation) override |
Set the world rotation. | |
virtual void | SetWorldRotation (double _r, double _p, double _y) override |
Set the world rotation. | |
virtual void | SetWorldRotation (double _w, double _x, double _y, double _z) override |
Set the world rotation. | |
virtual void | SetWorldScale (const math::Vector3d &_scale) override |
Set the world scale. | |
virtual void | SetWorldScale (double _scale) override |
Set the world scale. The given scale will be assigned to the x, y, and z coordinates. | |
virtual void | SetWorldScale (double _x, double _y, double _z) override |
Set the world scale. | |
virtual Variant | UserData (const std::string &_key) const override |
Get custom data stored in this node. | |
virtual math::Pose3d | WorldPose () const override |
Get the world pose. | |
virtual math::Vector3d | WorldPosition () const override |
Get the world position. | |
virtual math::Quaterniond | WorldRotation () const override |
Get the world rotation. | |
virtual math::Vector3d | WorldScale () const override |
Get the world scale. | |
virtual math::Pose3d | WorldToLocal (const math::Pose3d &_pose) const override |
Convert given world pose to local pose. | |
Public Member Functions inherited from Ogre2Object | |
virtual | ~Ogre2Object () |
Destructor. | |
virtual ScenePtr | Scene () const override |
Public Member Functions inherited from BaseObject | |
virtual | ~BaseObject () |
virtual unsigned int | Id () const override |
virtual std::string | Name () const override |
virtual void | PostRender () override |
Protected Member Functions | |
Ogre2Visual () | |
Constructor. | |
virtual bool | AttachGeometry (GeometryPtr _geometry) override |
virtual bool | DetachGeometry (GeometryPtr _geometry) override |
virtual GeometryStorePtr | Geometries () const override |
virtual void | Init () override |
Initialize the visual. | |
Protected Member Functions inherited from BaseVisual< Ogre2Node > | |
BaseVisual () | |
virtual void | PreRenderChildren () override |
virtual void | PreRenderGeometries () |
Protected Member Functions inherited from Ogre2Node | |
Ogre2Node () | |
Constructor. | |
virtual bool | AttachChild (NodePtr _child) override |
virtual NodeStorePtr | Children () const override |
virtual bool | DetachChild (NodePtr _child) override |
virtual void | Load () override |
virtual math::Pose3d | RawLocalPose () const override |
virtual math::Vector3d | RawLocalPosition () const |
Get the raw local position of the node. | |
virtual math::Quaterniond | RawLocalRotation () const |
Get the raw local rotation of the node. | |
virtual void | SetLocalScaleImpl (const math::Vector3d &_scale) override |
Implementation of the SetLocalScale function. | |
virtual void | SetParent (Ogre2NodePtr _parent) |
Set the parent node. | |
virtual void | SetRawLocalPose (const math::Pose3d &_Pose3d) override |
virtual void | SetRawLocalPosition (const math::Vector3d &_position) |
Set the raw local position of the node. | |
virtual void | SetRawLocalRotation (const math::Quaterniond &_rotation) |
Set the raw local rotation of the node. | |
Protected Member Functions inherited from BaseNode< Ogre2Object > | |
BaseNode () | |
Protected Member Functions inherited from Ogre2Object | |
Ogre2Object () | |
Constructor. | |
Protected Member Functions inherited from BaseObject | |
BaseObject () | |
Protected Attributes | |
Ogre2GeometryStorePtr | geometries |
Pointer to the attached geometries. | |
Protected Attributes inherited from BaseVisual< Ogre2Node > | |
gz::math::AxisAlignedBox | boundingBox |
The bounding box of the visual. | |
MaterialPtr | material |
Pointer to material assigned to this visual. | |
uint32_t | visibilityFlags |
Visual's visibility flags. | |
bool | wireframe |
True if wireframe mode is enabled else false. | |
Protected Attributes inherited from Ogre2Node | |
Ogre2NodeStorePtr | children |
A list of child nodes. | |
Ogre::SceneNode * | ogreNode = nullptr |
The underlying ogre scene node. | |
Ogre2NodePtr | parent |
Pointer to the parent ogre node. | |
Protected Attributes inherited from BaseNode< Ogre2Object > | |
gz::math::Pose3d | initialLocalPose |
Initial local pose for this node. | |
bool | initialLocalPoseSet |
Flag to indicate whether initial local pose is set for this node. | |
math::Vector3d | origin |
std::map< std::string, Variant > | userData |
A map of custom key value data. | |
Protected Attributes inherited from Ogre2Object | |
Ogre2ScenePtr | scene |
Pointer to the ogre scene. | |
Protected Attributes inherited from BaseObject | |
unsigned int | id |
std::string | name |
Detailed Description
Ogre2.x implementation of the visual class.
Constructor & Destructor Documentation
◆ Ogre2Visual()
|
protected |
Constructor.
◆ ~Ogre2Visual()
|
virtual |
Destructor.
Member Function Documentation
◆ AttachGeometry()
|
overrideprotectedvirtual |
Implements BaseVisual< Ogre2Node >.
◆ BoundingBox()
|
overridevirtual |
Get the bounding box in world frame coordinates.
- Returns
- The axis aligned bounding box
Reimplemented from BaseVisual< Ogre2Node >.
◆ DetachGeometry()
|
overrideprotectedvirtual |
Implements BaseVisual< Ogre2Node >.
◆ Geometries()
|
overrideprotectedvirtual |
Implements BaseVisual< Ogre2Node >.
◆ Init()
|
overrideprotectedvirtual |
Initialize the visual.
Reimplemented from Ogre2Node.
Reimplemented in BaseArrowVisual< Ogre2Visual >, BaseAxisVisual< Ogre2Visual >, BaseCOMVisual< Ogre2Visual >, BaseGizmoVisual< Ogre2Visual >, BaseInertiaVisual< Ogre2Visual >, BaseJointVisual< Ogre2Visual >, BaseLidarVisual< Ogre2Visual >, BaseLightVisual< Ogre2Visual >, BaseParticleEmitter< Ogre2Visual >, Ogre2COMVisual, Ogre2InertiaVisual, Ogre2LidarVisual, Ogre2LightVisual, and Ogre2ParticleEmitter.
◆ LocalBoundingBox()
|
overridevirtual |
Get the local bounding box of the visual.
- Returns
- The local bounding box
Reimplemented from BaseVisual< Ogre2Node >.
◆ SetStatic()
|
overridevirtual |
Tells Render Engine this Visual will be static (i.e. won't move, rotate or scale) You can still move, rotate or scale the Visual; however doing so has a performance impact. How much of an impact will depend on the rendering backend being used.
- Remarks
- Performance impact of switching staticness depends on on engine. In ogre2 it isn't expensive but it isn't free either. Try to minimize transitions. Raytracing engines may rely on this information for their BVH structures TODO(anyone): Staticness should be ideally be supplied during construction for maximum performance
- ogre2 specific: OgreNext keeps 2 lists of objects. Dynamic and Static. Every frame OgreNext iterates through all nodes & items in the dynamic lists and forcefully updates them (regardless of whether they have actually changed). This may sound slow but Ogre 1.x worked by only updating those objects that have changed, and it was slower. CPUs care a lot more about processing in bulk and having all the data hot in cache.
For the static list, it only iterates through the entire list in that frame when the whole list is tagged as dirty. If one element changes, then the whole list is dirty (OgreNext might be able to optimize it and only update a part of the list by narrowing).
Changing a static node transform implies calling OgreNext's notifyStaticDirty. This is very cheap so it can be called whenever a static object changes. The only thing that needs to be taken into account is that notifyStaticDirty should be called as little as possible. And by "as little as possible" that means ideally it should not be called ever except when loading a scene or when something relevant changed. If it gets called e.g. once per frame or more then it's the same as having all objects dynamic.
Thus if an object is static, make sure you don't keep moving around because it negates the performance of all static objects.
- Remarks
- (INTERNAL) For implementations: Dynamic Scene Node + Dynamic MovableObject = Valid Static Scene Node + Static MovableObject = Valid Static Scene Node + Dynamic MovableObject = Valid, but rarely makes sense Dynamic Scene Node + Static MovableObject = Invalid
- Parameters
-
[in] _static True if this visual should be made static
Reimplemented from BaseVisual< Ogre2Node >.
◆ SetVisibilityFlags()
|
overridevirtual |
Set visibility flags.
- Parameters
-
[in] _flags Visibility flags
Reimplemented from BaseVisual< Ogre2Node >.
◆ SetVisible()
|
overridevirtual |
Specify if this visual is visible.
- Parameters
-
[in] _visible True if this visual should be made visible
Reimplemented from BaseVisual< Ogre2Node >.
Reimplemented in BaseArrowVisual< Ogre2Visual >, BaseAxisVisual< Ogre2Visual >, BaseJointVisual< Ogre2Visual >, and Ogre2LidarVisual.
◆ SetWireframe()
|
overridevirtual |
Enable or disable wireframe.
- Parameters
-
[in] _show True to enable wireframe
Reimplemented from BaseVisual< Ogre2Node >.
◆ Static()
|
overridevirtual |
Get whether the visual is static.
- Returns
- True if the visual is static, false otherwise
- See also
- SetStatic
Reimplemented from BaseVisual< Ogre2Node >.
◆ Wireframe()
|
overridevirtual |
Get whether wireframe is enabled for this visual.
- Returns
- True if wireframe is enabled for this visual.
Reimplemented from BaseVisual< Ogre2Node >.
Member Data Documentation
◆ geometries
|
protected |
Pointer to the attached geometries.
The documentation for this class was generated from the following file: