#include <BaseVisual.hh>
Public Member Functions | |
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 gz::math::AxisAlignedBox | BoundingBox () const override |
Get the bounding box in world frame coordinates. | |
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 gz::math::AxisAlignedBox | LocalBoundingBox () const override |
Get the local bounding box of the 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 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 uint32_t | VisibilityFlags () const override |
Get visibility flags. | |
virtual bool | Wireframe () const override |
Get whether wireframe is enabled for this visual. | |
Public Member Functions inherited from Visual | |
virtual | ~Visual () |
Destructor. | |
Public Member Functions inherited from Node | |
virtual | ~Node () |
Destructor. | |
virtual void | AddChild (NodePtr _child)=0 |
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 =0 |
Get node with given ID. If no child exists with given ID, NULL will be returned. | |
virtual NodePtr | ChildByIndex (unsigned int _index) const =0 |
Get node at given index. If no child exists at given index, NULL will be returned. | |
virtual NodePtr | ChildByName (const std::string &_name) const =0 |
Get node with given name. If no child exists with given name, NULL will be returned. | |
virtual unsigned int | ChildCount () const =0 |
Get number of child nodes. | |
virtual bool | HasChild (ConstNodePtr _child) const =0 |
Determine if given node is an attached child. | |
virtual bool | HasChildId (unsigned int _id) const =0 |
Determine if node with given ID is an attached child. | |
virtual bool | HasChildName (const std::string &_name) const =0 |
Determine if node with given name is an attached child. | |
virtual bool | HasParent () const =0 |
Determine if this Node is attached to another Node. | |
virtual bool | HasUserData (const std::string &_key) const =0 |
Check if node has custom data. | |
virtual bool | InheritScale () const =0 |
Determine if this node inherits scale from this parent. | |
virtual math::Pose3d | InitialLocalPose () const =0 |
Get the initial local pose. | |
virtual math::Vector3d | LocalPosition () const =0 |
Get the local position. | |
virtual math::Quaterniond | LocalRotation () const =0 |
Get the local rotation. | |
virtual math::Vector3d | LocalScale () const =0 |
Get the local scale. | |
virtual math::Vector3d | Origin () const =0 |
Get position of origin. | |
virtual NodePtr | Parent () const =0 |
Get the parent Node. | |
virtual NodePtr | RemoveChild (NodePtr _child)=0 |
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)=0 |
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)=0 |
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)=0 |
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 ()=0 |
Remove all child nodes from this node This detaches all the child nodes but does not destroy them. | |
virtual void | RemoveParent ()=0 |
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)=0 |
Scale the current scale by the given scalars. | |
virtual void | Scale (double _scale)=0 |
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)=0 |
Scale the current scale by the given scalars. | |
virtual void | SetInheritScale (bool _inherit)=0 |
Specify if this node inherits scale from its parent. | |
virtual void | SetLocalPosition (const math::Vector3d &_position)=0 |
Set the local position. | |
virtual void | SetLocalPosition (double _x, double _y, double _z)=0 |
Set the local position. | |
virtual void | SetLocalRotation (const math::Quaterniond &_rotation)=0 |
Set the local rotation. | |
virtual void | SetLocalRotation (double _r, double _p, double _y)=0 |
Set the local rotation. | |
virtual void | SetLocalRotation (double _w, double _x, double _y, double _z)=0 |
Set the local rotation. | |
virtual void | SetLocalScale (const math::Vector3d &_scale)=0 |
Set the local scale. | |
virtual void | SetLocalScale (double _scale)=0 |
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)=0 |
Set the local scale. | |
virtual void | SetOrigin (const math::Vector3d &_origin)=0 |
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)=0 |
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)=0 |
Store any custom data associated with this node. | |
virtual void | SetWorldPose (const math::Pose3d &_pose)=0 |
Set the world pose. | |
virtual void | SetWorldPosition (const math::Vector3d &_position)=0 |
Set the world position. | |
virtual void | SetWorldPosition (double _x, double _y, double _z)=0 |
Set the world position. | |
virtual void | SetWorldRotation (const math::Quaterniond &_rotation)=0 |
Set the world rotation. | |
virtual void | SetWorldRotation (double _r, double _p, double _y)=0 |
Set the world rotation. | |
virtual void | SetWorldRotation (double _w, double _x, double _y, double _z)=0 |
Set the world rotation. | |
virtual void | SetWorldScale (const math::Vector3d &_scale)=0 |
Set the world scale. | |
virtual void | SetWorldScale (double _scale)=0 |
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)=0 |
Set the world scale. | |
virtual Variant | UserData (const std::string &_key) const =0 |
Get custom data stored in this node. | |
virtual math::Pose3d | WorldPose () const =0 |
Get the world pose. | |
virtual math::Vector3d | WorldPosition () const =0 |
Get the world position. | |
virtual math::Quaterniond | WorldRotation () const =0 |
Get the world rotation. | |
virtual math::Vector3d | WorldScale () const =0 |
Get the world scale. | |
virtual math::Pose3d | WorldToLocal (const math::Pose3d &_pose) const =0 |
Convert given world pose to local pose. | |
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. | |
Protected Member Functions | |
BaseVisual () | |
virtual bool | AttachGeometry (GeometryPtr _geometry)=0 |
virtual bool | DetachGeometry (GeometryPtr _geometry)=0 |
virtual GeometryStorePtr | Geometries () const =0 |
virtual void | PreRenderChildren () override |
virtual void | PreRenderGeometries () |
Protected Attributes | |
gz::math::AxisAlignedBox | boundingBox |
The bounding box of the visual. | |
MaterialPtr | material |
Pointer to material assigned to this visual. | |
uint32_t | visibilityFlags = GZ_VISIBILITY_ALL |
Visual's visibility flags. | |
bool | wireframe = false |
True if wireframe mode is enabled else false. | |
Constructor & Destructor Documentation
◆ BaseVisual()
|
protected |
◆ ~BaseVisual()
|
virtual |
Member Function Documentation
◆ AddGeometry()
|
overridevirtual |
◆ AddVisibilityFlags()
|
overridevirtual |
◆ AttachGeometry()
|
protectedpure virtual |
Implemented in OgreVisual, and Ogre2Visual.
◆ BoundingBox()
|
overridevirtual |
Get the bounding box in world frame coordinates.
- Returns
- The axis aligned bounding box
Implements Visual.
Reimplemented in OgreVisual, and Ogre2Visual.
References std::dynamic_pointer_cast(), std::endl(), gzerr, and AxisAlignedBox::Merge().
◆ Clone()
|
overridevirtual |
Clone the visual (and its children) with a new name.
- Parameters
-
[in] _name Name of the cloned Visual. Set this to an empty string to auto-generate a unique name for the cloned visual. [in] _newParent Parent of the cloned Visual. Set to nullptr if the cloned visual should have no parent.
- Returns
- The visual. nullptr is returned if cloning failed.
Implements Visual.
References std::dynamic_pointer_cast(), string::empty(), and gzerr.
◆ Destroy()
|
overridevirtual |
Destroy any resources associated with this object. Invoking any other functions after destroying an object will result in undefined behavior.
Implements Object.
Reimplemented in BaseArrowVisual< Ogre2Visual >, BaseArrowVisual< OgreVisual >, BaseAxisVisual< Ogre2Visual >, BaseAxisVisual< OgreVisual >, BaseJointVisual< Ogre2Visual >, BaseJointVisual< OgreVisual >, BaseLidarVisual< Ogre2Visual >, BaseLidarVisual< OgreVisual >, OgreLidarVisual, Ogre2COMVisual, Ogre2InertiaVisual, Ogre2LidarVisual, and Ogre2ParticleEmitter.
◆ DetachGeometry()
|
protectedpure virtual |
Implemented in OgreVisual, and Ogre2Visual.
◆ Geometries()
|
protectedpure virtual |
Implemented in OgreVisual, and Ogre2Visual.
◆ GeometryByIndex()
|
overridevirtual |
Get geometry at given index. If no geometry exists at given index, NULL will be returned.
- Parameters
-
[in] _index Index of the desired geometry
- Returns
- The specified geometry
Implements Visual.
◆ GeometryCount()
|
overridevirtual |
Get the number of geometries attached to this visual.
- Returns
- The number of geometries attached to this visual
Implements Visual.
◆ HasGeometry()
|
overridevirtual |
◆ LocalBoundingBox()
|
overridevirtual |
Get the local bounding box of the visual.
- Returns
- The local bounding box
Implements Visual.
Reimplemented in OgreVisual, and Ogre2Visual.
References std::dynamic_pointer_cast(), std::endl(), gzerr, Vector3< typename T >::IsFinite(), AxisAlignedBox::Max(), AxisAlignedBox::Merge(), and AxisAlignedBox::Min().
◆ LocalPose()
|
overridevirtual |
Get the local pose.
- Returns
- The local pose
Implements Node.
References Pose3< typename T >::Pos(), and Pose3< typename T >::Rot().
◆ Material()
|
overridevirtual |
Get the material assigned to attached visuals and geometries.
- Returns
- the Pointer to the material assigned to this visual. If the material is cloned at the time it is set to this visual, the cloned material will be returned.
Implements Visual.
Reimplemented in BaseParticleEmitter< Ogre2Visual >, BaseParticleEmitter< OgreVisual >, OgreCOMVisual, OgreInertiaVisual, OgreLightVisual, Ogre2COMVisual, Ogre2InertiaVisual, and Ogre2LightVisual.
◆ PreRender()
|
overridevirtual |
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.
Implements Object.
Reimplemented in BaseCOMVisual< Ogre2Visual >, BaseCOMVisual< OgreVisual >, BaseGizmoVisual< Ogre2Visual >, BaseGizmoVisual< OgreVisual >, BaseInertiaVisual< Ogre2Visual >, BaseInertiaVisual< OgreVisual >, BaseJointVisual< Ogre2Visual >, BaseJointVisual< OgreVisual >, BaseLidarVisual< Ogre2Visual >, BaseLidarVisual< OgreVisual >, BaseLightVisual< Ogre2Visual >, BaseLightVisual< OgreVisual >, BaseParticleEmitter< Ogre2Visual >, BaseParticleEmitter< OgreVisual >, OgreCOMVisual, OgreInertiaVisual, OgreLidarVisual, OgreLightVisual, OgreProjector, Ogre2COMVisual, Ogre2InertiaVisual, Ogre2LidarVisual, Ogre2LightVisual, Ogre2ParticleEmitter, and Ogre2Projector.
◆ PreRenderChildren()
|
overrideprotectedvirtual |
References std::dynamic_pointer_cast(), std::endl(), and gzerr.
◆ PreRenderGeometries()
|
protectedvirtual |
◆ RemoveGeometries()
|
overridevirtual |
Remove all attached geometries from this visual.
Implements Visual.
◆ RemoveGeometry()
|
overridevirtual |
◆ RemoveGeometryByIndex()
|
overridevirtual |
Remove the geometry at the given index from this visual. If the specified node is not attached this visual, no work will be done.
- Parameters
-
[in] _index Index of the geometry to be removed
- Returns
- The removed geometry
Implements Visual.
◆ RemoveVisibilityFlags()
|
overridevirtual |
◆ SetChildMaterial()
|
overridevirtual |
Set the material for all attached visuals only.
- Parameters
-
[in] _material Name of the material to be assigned [in] _unique True if the specified material should be cloned
Implements Visual.
References std::dynamic_pointer_cast(), std::endl(), and gzerr.
◆ SetGeometryMaterial()
|
overridevirtual |
Set the material for all attached geometries only.
- Parameters
-
[in] _material Name of the material to be assigned [in] _unique True if the specified material should be cloned
Implements Visual.
◆ SetLocalPose()
|
overridevirtual |
Set the local pose.
- Parameters
-
[in] _pose New local pose
Implements Node.
References std::endl(), gzerr, Pose3< typename T >::IsFinite(), Pose3< typename T >::Pos(), and Pose3< typename T >::Rot().
◆ SetMaterial() [1/2]
|
overridevirtual |
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.
- Parameters
-
[in] _name Name of the material to be assigned [in] _unique True if the specified material should be cloned
Implements Visual.
References Scene::Material().
◆ SetMaterial() [2/2]
|
overridevirtual |
Set the material for all attached visuals and geometries.
- Parameters
-
[in] _material Name of the material to be assigned [in] _unique True if the specified material should be cloned
Implements Visual.
Reimplemented in OgreCOMVisual, OgreInertiaVisual, OgreLightVisual, Ogre2COMVisual, Ogre2InertiaVisual, Ogre2LightVisual, BaseParticleEmitter< Ogre2Visual >, BaseParticleEmitter< OgreVisual >, and Ogre2ParticleEmitter.
◆ 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
Implements Visual.
Reimplemented in Ogre2Visual.
References std::endl(), Scene::Engine(), gzerr, and RenderEngine::Name().
◆ SetVisibilityFlags()
|
overridevirtual |
Set visibility flags.
- Parameters
-
[in] _flags Visibility flags
Implements Visual.
Reimplemented in OgreVisual, and Ogre2Visual.
References std::dynamic_pointer_cast(), std::endl(), and gzerr.
◆ SetVisible()
|
overridevirtual |
Specify if this visual is visible.
- Parameters
-
[in] _visible True if this visual should be made visible
Implements Visual.
Reimplemented in BaseArrowVisual< Ogre2Visual >, BaseArrowVisual< OgreVisual >, BaseAxisVisual< Ogre2Visual >, BaseAxisVisual< OgreVisual >, BaseJointVisual< Ogre2Visual >, BaseJointVisual< OgreVisual >, OgreLidarVisual, OgreVisual, Ogre2LidarVisual, and Ogre2Visual.
References std::endl(), Scene::Engine(), gzerr, and RenderEngine::Name().
◆ SetWireframe()
|
overridevirtual |
Enable or disable wireframe.
- Parameters
-
[in] _show True to enable wireframe
Implements Visual.
Reimplemented in OgreVisual, and Ogre2Visual.
References std::endl(), Scene::Engine(), gzerr, and RenderEngine::Name().
◆ Static()
|
overridevirtual |
Get whether the visual is static.
- Returns
- True if the visual is static, false otherwise
- See also
- SetStatic
Implements Visual.
Reimplemented in Ogre2Visual.
◆ VisibilityFlags()
|
overridevirtual |
◆ Wireframe()
|
overridevirtual |
Get whether wireframe is enabled for this visual.
- Returns
- True if wireframe is enabled for this visual.
Implements Visual.
Reimplemented in OgreVisual, and Ogre2Visual.
Member Data Documentation
◆ boundingBox
|
protected |
The bounding box of the visual.
◆ material
|
protected |
Pointer to material assigned to this visual.
◆ visibilityFlags
|
protected |
Visual's visibility flags.
◆ wireframe
|
protected |
True if wireframe mode is enabled else false.
The documentation for this class was generated from the following file: