Image Component Library (ICL)
Public Member Functions | Static Public Member Functions | Static Protected Member Functions | Protected Attributes | Private Attributes | Friends | List of all members
icl::geom::SceneObject Class Reference

The SceneObject class defines visible objects in scenes or scene graph nodes. More...

#include <SceneObject.h>

Inheritance diagram for icl::geom::SceneObject:
icl::geom::ComplexCoordinateFrameSceneObject icl::geom::CoordinateFrameSceneObject icl::geom::GridSceneObject icl::geom::OctreeObject< Scalar, CAPACITY, SF, Pt, ALLOC_CHUNK_SIZE > icl::geom::PointCloudObjectBase icl::geom::SceneLightObject icl::physics::ManipulatablePaper::Shadow icl::physics::PhysicsObject icl::geom::OctreeObject< float, 16, 1, Vec, 1024 >

Public Member Functions

ICLGeom_API SceneObject ()
 create an object More...
 
ICLGeom_API SceneObject (const std::string &type, const float *params)
 create by string: More...
 
ICLGeom_API SceneObject (const std::string &objFileName)
 creates a scene object from given .obj file More...
 
 SceneObject (const SceneObject &other)
 deep copy of SceneObject instance More...
 
ICLGeom_API SceneObjectoperator= (const SceneObject &other)
 assignment operator for deep copy More...
 
virtual ICLGeom_API ~SceneObject ()
 Empty destructor (but virtual) More...
 
ICLGeom_API std::vector< Vec > & getVertices ()
 returns object vertices More...
 
ICLGeom_API const std::vector< Vec > & getVertices () const
 returns object vertices (const) More...
 
ICLGeom_API const std::vector< Vec > & getNormals () const
 returns object normals (const) More...
 
ICLGeom_API std::vector< GeomColor > & getVertexColors ()
 returns object vertex colors More...
 
ICLGeom_API const std::vector< GeomColor > & getVertexColors () const
 returns object vertex colors (const) More...
 
ICLGeom_API std::vector< Primitive * > & getPrimitives ()
 returns object's primitives (lines, quads, etc...) More...
 
ICLGeom_API const std::vector< Primitive * > & getPrimitives () const
 returns object's primitives (lines, quads, etc...) (const) More...
 
ICLGeom_API void setVisible (int oredTypes, bool visible, bool recursive=true)
 changes visibility of given primitive type More...
 
ICLGeom_API void setVisible (const std::string &what, bool recursive=true)
 convenience method that allows for setting several visibility properties at once More...
 
void setVisible (const char *what, bool recursive=true)
 explicit version for const char pointer to avoid an explicit cast to bool/int More...
 
ICLGeom_API bool isVisible (Primitive::Type t) const
 returns visibility of given primitive type More...
 
virtual ICLGeom_API bool isInvisibleForCamera (int camIndex) const
 this can be overwrittern in subclasses to hide an object for given camera indices More...
 
ICLGeom_API void addVertex (const Vec &p, const GeomColor &color=GeomColor(255, 0, 0, 255))
 adds a new vertex to this object More...
 
ICLGeom_API void addSharedTexture (utils::SmartPtr< qt::GLImg > gli)
 adds a GLImg as shared texture More...
 
ICLGeom_API void addSharedTexture (const core::ImgBase *image, core::scalemode sm=core::interpolateLIN)
 adds an core::ImgBase * as shared texutre More...
 
ICLGeom_API void addNormal (const Vec &n)
 adds a new normal to this object More...
 
ICLGeom_API void addLine (int x, int y, const GeomColor &color=GeomColor(100, 100, 100, 255))
 adds a new line to this object More...
 
ICLGeom_API void addTriangle (int a, int b, int c, int na, int nb, int nc, const GeomColor &color=GeomColor(0, 100, 250, 255))
 adds a new triangle to this onject More...
 
void addTriangle (int a, int b, int c, const GeomColor &color=GeomColor(0, 100, 250, 255))
 convenience method for creation of a triangle with auto-normals More...
 
ICLGeom_API void addQuad (int a, int b, int c, int d, int na, int nb, int nc, int nd, const GeomColor &color=GeomColor(0, 100, 250, 255))
 adds a new triangle to this onject More...
 
void addQuad (int a, int b, int c, int d, const GeomColor &color=GeomColor(0, 100, 250, 255))
 convenience method for creation of a quad with auto-normals More...
 
ICLGeom_API void addPolygon (int nPoints, const int *vertexIndices, const GeomColor &color=GeomColor(0, 100, 250, 255), const int *normalIndices=0)
 add a polygon to this object (note triangles and quads are slower here) More...
 
ICLGeom_API void addTexture (int a, int b, int c, int d, const core::ImgBase *texture, int na, int nb, int nc, int nd, bool createTextureOnce=true, core::scalemode sm=core::interpolateLIN)
 
void addTexture (int a, int b, int c, int d, const core::ImgBase *texture, bool createTextureOnce=true, core::scalemode sm=core::interpolateLIN)
 convenience method for creation of a texture with auto-normals More...
 
ICLGeom_API void addTexture (int a, int b, int c, int d, int sharedTextureIndex, int na=-1, int nb=-1, int nc=-1, int nd=-1)
 adds are shared texture primitive More...
 
ICLGeom_API void addTexture (const core::ImgBase *image, int numPoints, const int *vertexIndices, const utils::Point32f *texCoords, const int *normalIndices=0, bool createTextureOnce=true)
 adds a GenericTexturePrimitive for custom texCoords More...
 
ICLGeom_API void addTextureGrid (int w, int h, const core::ImgBase *image, const icl32f *px, const icl32f *py, const icl32f *pz, const icl32f *pnx=0, const icl32f *pny=0, const icl32f *pnz=0, int stride=1, bool createTextureOnce=true, core::scalemode sm=core::interpolateLIN)
 adds a texture that is drawn on a 2D grid of vertices in 3D space More...
 
ICLGeom_API void addTwoSidedTextureGrid (int w, int h, const core::ImgBase *front, const core::ImgBase *back, const icl32f *px, const icl32f *py, const icl32f *pz, const icl32f *pnx=0, const icl32f *pny=0, const icl32f *pnz=0, int stride=1, bool createFrontOnce=true, bool createBackOnce=true, core::scalemode sm=core::interpolateLIN)
 adds a texture grid that has two different texture for the two faces More...
 
ICLGeom_API void addTwoSidedTGrid (int w, int h, const Vec *vertices, const Vec *normals=0, const GeomColor &frontColor=GeomColor(0, 100, 255, 255), const GeomColor &backColor=GeomColor(255, 0, 100, 255), const GeomColor &lineColor=GeomColor(0, 255, 100, 255), bool drawLines=false, bool drawQuads=true)
 adds a two sided grid (sides may have different colors) More...
 
ICLGeom_API void addTextTexture (int a, int b, int c, int d, const std::string &text, const GeomColor &color, int na, int nb, int nc, int nd, int textSize, core::scalemode sm=core::interpolateLIN)
 adds text-texture quad -primitive to this object More...
 
void addTextTexture (int a, int b, int c, int d, const std::string &text, const GeomColor &color=GeomColor(255, 255, 255, 255), int textSize=30, core::scalemode sm=core::interpolateLIN)
 convenience method for creation of a text-texture with auto-normals More...
 
ICLGeom_API void addText (int a, const std::string &text, float billboardHeight=10, const GeomColor &color=GeomColor(255, 255, 255, 255), int textRenderSize=30, core::scalemode sm=core::interpolateLIN)
 adds a billboard text-texture attached to given node index a More...
 
void addCustomPrimitive (Primitive *p)
 adds a custom primitive More...
 
SceneObjectaddCube (float x, float y, float z, float d)
 adds a cube child-object with given parameters More...
 
ICLGeom_API SceneObjectaddCuboid (float x, float y, float z, float dx, float dy, float dz)
 adds a cuboid child-object with given parameters More...
 
SceneObjectaddSphere (float x, float y, float z, float r, int rzSteps, int xySlices)
 adds a cuboid child-object with given parameters More...
 
ICLGeom_API SceneObjectaddSpheroid (float x, float y, float z, float rx, float ry, float rz, int rzSteps, int xySlices)
 adds a cuboid child-object with given parameters More...
 
ICLGeom_API SceneObjectaddCylinder (float x, float y, float z, float rx, float ry, float h, int steps)
 adds a cylindical child object with given parameters More...
 
ICLGeom_API SceneObjectaddCone (float x, float y, float z, float rx, float ry, float h, int steps)
 adds a conical child object with given parameters More...
 
ICLGeom_API void setColor (Primitive::Type t, const GeomColor &color, bool recursive=true)
 tints all Primitives with given type in given color More...
 
ICLGeom_API void setPointSize (float pointSize, bool recursive=true)
 sets point size More...
 
ICLGeom_API void setLineWidth (float lineWidth, bool recursive=true)
 sets point size More...
 
ICLGeom_API void setUseCustomRender (bool use, bool recursive=true)
 if set, only custom render is used More...
 
virtual ICLGeom_API SceneObjectcopy () const
 performs a deep copy of this object More...
 
virtual void prepareForRendering ()
 called by the renderer before the object is rendered More...
 
virtual void customRender ()
 this function is called when an object is rendered More...
 
virtual void complexCustomRender (icl::geom::ShaderUtil *util)
 this function is called when an object is rendered More...
 
ICLGeom_API void setColorsFromVertices (Primitive::Type t, bool on, bool recursive=true)
 sets how 2D-geom colors are set More...
 
ICLGeom_API bool getSmoothShading () const
 returns wheather smooth shading is activated More...
 
ICLGeom_API void setSmoothShading (bool on, bool recursive=true)
 sets whether to use smoothshading (default is false) More...
 
ICLGeom_API void createAutoNormals (bool smooth=true)
 automatically creates precomputed normals More...
 
virtual GeomColor getDefaultVertexColor () const
 can be reimplemented by subclass to provide and interface for setting default vertex color More...
 
ICLGeom_API Hit hit (const ViewRay &v, bool recursive=true)
 returns whether this object is hit by the given viewray More...
 
const Hit hit (const ViewRay &v, bool recursive=true) const
 returns whether this object is hit by the given viewray (const) More...
 
ICLGeom_API std::vector< Hithits (const ViewRay &v, bool recursive=true)
 returns all hits with SceneObjects form the given viewray More...
 
ICLGeom_API std::vector< VecgetTransformedVertices () const
 returns all vertices in their final world coordinates More...
 
ICLGeom_API Vec getClosestVertex (const Vec &pWorld, bool relative=false)
 returns the vertex, that is closest to the given point in wold coordinates More...
 
ICLGeom_API void setVisible (bool visible, bool recursive=true)
 sets the visibility of this object More...
 
bool isVisible () const
 returns whether this object is currently visible More...
 
void hide (bool recursive=true)
 calls setVisible(false) More...
 
void show (bool recursive=true)
 calls setVisible(true) More...
 
void setLockingEnabled (bool enabled)
 sets locking enabled or disabled More...
 
bool getLockingEnabled () const
 returns whether locking is current enabled for this object More...
 
virtual void lock () const
 locks the internal mutex if locking enabled is set to true More...
 
virtual void unlock () const
 unlocks the internal mutex if locking enabled is set to true More...
 
void setPointSmoothingEnabled (bool enabled=true)
 sets whether points are visualized in a smoothed manner More...
 
void setLineSmoothingEnabled (bool enabled=true)
 sets whether lines are visualized in a smoothed manner More...
 
void setPolygonSmoothingEnabled (bool enabled=true)
 sets whether faces are visualized in a smoothed manner More...
 
ICLGeom_API void clearAllPrimitives ()
 deletes and removes all primitives More...
 
virtual ICLGeom_API void clearObject (bool deleteAndRemoveChildren=true, bool resetTransform=false)
 deletes all primitive and all vertex, color and normal content (and optionally also the children) More...
 
ICLGeom_API void createDisplayList ()
 creates a displaylist in the next render cycle More...
 
ICLGeom_API void freeDisplayList ()
 frees the displaylist in the next render cycle More...
 
ICLGeom_API void setFragmentShader (qt::GLFragmentShader *shader)
 sets a fragment shader to use for this object More...
 
qt::GLFragmentShadergetFragmentShader ()
 returns the current fragment shader (or NULL if non was given) More...
 
const qt::GLFragmentShadergetFragmentShader () const
 returns the current fragment shader (or NULL if non was given, const version) More...
 
void setCastShadowsEnabled (bool castShadows=true)
 
bool getCastShadowsEnabled ()
 
void setReceiveShadowsEnabled (bool receiveShadows=true)
 
bool getReceiveShadowsEnabled ()
 
void setShininess (icl8u value)
 sets the material shininess (default is 128) More...
 
void setSpecularReflectance (const GeomColor &values)
 sets the materials specular reflectance More...
 
bool getDepthTestEnabled () const
 returns whether depth test is enabled for this object More...
 
void setDepthTestEnabled (bool enabled, bool recursive=true)
 sets whether depth test is enabled for this object More...
 
float getPointHitMaxDistance () const
 returns the maximum distance to a pointing viewraw More...
 
void setPointHitMaxDistance (float d)
 sets the maximum distance to a pointing view-ray More...
 

Static Public Member Functions

static SceneObjectcube (float x, float y, float z, float r)
 create a cube scene object More...
 
static SceneObjectcuboid (float x, float y, float z, float dx, float dy, float dz)
 create a cuboid scene object More...
 
static SceneObjectsphere (float x, float y, float z, float r, int rzSteps, int xySlices)
 create a shere scene object More...
 
static SceneObjectspheroid (float x, float y, float z, float rx, float ry, float rz, int rzSteps, int xySlices)
 create a shere scene object More...
 
static SceneObjectsuperquadric (float x, float y, float z, float rx, float ry, float rz, float dx, float dy, float dz, float e1, float e2, int rzSteps, int xySlices)
 create a superquadric scene object More...
 

Static Protected Member Functions

static void collect_hits_recursive (SceneObject *obj, const ViewRay &v, std::vector< Hit > &hits, bool recursive)
 recursive picking method More...
 

Protected Attributes

std::vector< Vecm_vertices
 
std::vector< Vecm_normals
 
std::vector< GeomColorm_vertexColors
 
std::vector< Primitive * > m_primitives
 
std::vector< utils::SmartPtr< qt::GLImg > > m_sharedTextures
 
int m_visibleMask
 
bool m_lineColorsFromVertices
 
bool m_triangleColorsFromVertices
 
bool m_quadColorsFromVertices
 
bool m_polyColorsFromVertices
 
bool m_useCustomRender
 
float m_pointSize
 
float m_lineWidth
 
bool m_useSmoothShading
 
bool m_isVisible
 
Mat m_transformation
 for the scene graph implementation More...
 
bool m_hasTransformation
 
SceneObjectm_parent
 
std::vector< utils::SmartPtr< SceneObject > > m_children
 
utils::Mutex m_mutex
 for asynchronous updates More...
 
bool m_enableLocking
 can be enabled More...
 
bool m_pointSmoothingEnabled
 
bool m_lineSmoothingEnabled
 
bool m_polygonSmoothingEnabled
 
bool m_depthTestEnabled
 default is true More...
 
icl8u m_shininess
 
GeomColor m_specularReflectance
 

Private Attributes

void * m_displayListHandle
 internally used flag More...
 
int m_createDisplayListNextTime
 internal flag More...
 
qt::GLFragmentShaderm_fragmentShader
 internal optionally given fragment shader More...
 
bool m_castShadows
 
bool m_receiveShadows
 
float m_pointHitMaxDistance
 

Friends

class Scene
 provides direct access for the Scene class More...
 
struct Primitive
 

methods for creation of a scene graph

virtual ICLGeom_API void setTransformation (const Mat &m)
 Sets a transformation matrix. More...
 
ICLGeom_API void removeTransformation ()
 sets the internal transformation to the identity matrix More...
 
virtual ICLGeom_API void transform (const Mat &m)
 multiplies the current transformation matrix by given matrix More...
 
template<class T >
void transform (const T &m)
 utility method for passing arbitrary matrix classes More...
 
virtual ICLGeom_API void rotate (float rx, float ry, float rz, icl::math::AXES axes=icl::math::AXES_DEFAULT)
 rotates the scene object (this affects it's transformation matrix) More...
 
template<class T >
void rotate (const T &t, icl::math::AXES axes=icl::math::AXES_DEFAULT)
 utility wrapper for vector based rotation More...
 
virtual ICLGeom_API void translate (float dx, float dy, float dz)
 translates the scene object (this affects it's translates matrix) More...
 
template<class T >
void translate (const T &t)
 utility wrapper for vector based translation More...
 
virtual ICLGeom_API void scale (float sx, float sy, float sz)
 transformes the current transformation matrix by a scale matrix More...
 
template<class T >
void scale (const T &t)
 utility wrapper for vector based scaling More...
 
ICLGeom_API Mat getTransformation (bool relative=false) const
 returns the current transformation matrix More...
 
ICLGeom_API bool hasTransformation (bool relative=false) const
 returns whether the SceneObject has currently a non-ID-transformation More...
 
ICLGeom_API SceneObjectgetParent ()
 returns the parent scene object More...
 
ICLGeom_API const SceneObjectgetParent () const
 returns the parent scene object (const version) More...
 
ICLGeom_API void addChild (SceneObject *child, bool passOwnerShip=true)
 adds a new child to this scene object More...
 
void addChild (utils::SmartPtr< SceneObject > child)
 directly passes a smart pointer as a child More...
 
ICLGeom_API void removeChild (SceneObject *child)
 removes given child More...
 
ICLGeom_API void removeAllChildren ()
 removes all children More...
 
ICLGeom_API bool hasChildren () const
 returns whether the SceneObject has children at all More...
 
ICLGeom_API int getChildCount () const
 returns the number of children More...
 
ICLGeom_API SceneObjectgetChild (int index)
 returns child at given index More...
 
ICLGeom_API const SceneObjectgetChild (int index) const
 returns child at given index (const) More...
 
utils::SmartPtr< SceneObjectgetChildPtr (int index)
 returns a shared pointer to the child at given index More...
 
ICLGeom_API bool hasChild (const SceneObject *o) const
 returns whether the given object is a child of this one More...
 

Detailed Description

The SceneObject class defines visible objects in scenes or scene graph nodes.

SceneObject instances are used in combination with the icl::Scene class. You can add SceneObjects into a Scene and then render these as an image overlay.

A scene object is defined by

SceneGraph objects can also have no vertices. In this case they are invisible nodes within a scene graph.

Creation of SceneObjects

Usually special SceneObject instances are created by subclassing the SceneObject class. Subclasses can either simply add other SceneObjects e.g. using the utility methods SceneObject::addCube or SceneObject::addSphere or they can also define a custom geometry by adding vertices and primitives using SceneObject::addVertex and e.g. SceneObject::addLine or SceneObject::addQuad

Normals

Normals are used for realistic lighting. Therefore, it is recommended to use normals when objects are defined. Normals are also stored in a list. Each face-vertex references one of the normals of this list.

AutoNormals

If no normals are provided, the normals are computed automatically at run-time using cross-product:

Dynamic SceneObjects and Locking

Custome extensions of the SceneObject-interface can implement the SceneObject's virtual method SceneObject::prepareForRendering which is calle every time before the object is acutally rendered. Here, the custom SceneObject can be adapted dynamically.
Please note: When then you want to change the vertex-, primitive- or you'll have to enable the SceneObjects locking mechanism using SceneObject::setLockingEnabled(true).

For compatibility with former version of the SceneObject class, you can also re-implement the virtual methods SceneObject::lock() and SceneObject::unlock() appropriately. Usually this will look like this:

class MySceneObject : public SceneObject{
utils::Mutex mutex;
public:
void lock() { mutex.lock(); }
void unlock() { mutex.unlock(); }
...
};

Constructor & Destructor Documentation

◆ SceneObject() [1/4]

ICLGeom_API icl::geom::SceneObject::SceneObject ( )

create an object

◆ SceneObject() [2/4]

ICLGeom_API icl::geom::SceneObject::SceneObject ( const std::string &  type,
const float *  params 
)

create by string:

currently allowed:

  • "cube" params: [x,y,z,radius];
  • "cuboid" params: [x,y,z,dx,dy,dz]
  • "cone" params: [x,y,z,dx,dy,dz,steps]
  • "cylinder" params: [x,y,z,dx,dy,dz,steps]
  • "sphere" params: [x,y,z,radius,rzSteps,xySlices]
  • "spheroid" params: [x,y,z,rx,ry,rz,rzSteps,xySlices]
  • "superquadric" params: [x,y,z,rx,ry,rz,dx,dy,dz,e1,e2,rzSteps,xySlices] where
    • (x,y,z)^T is the center position
    • (rx,ry,rz)^T are the rotation euler angles
    • (dx,dy,dz)^T are the diameters into x-, y- and z-direction
    • (e1,and e2) are the roundness parameters
    • (rzSlices,rxSlices) is used for the number of steps the create nodes

◆ SceneObject() [3/4]

ICLGeom_API icl::geom::SceneObject::SceneObject ( const std::string &  objFileName)

creates a scene object from given .obj file

◆ SceneObject() [4/4]

icl::geom::SceneObject::SceneObject ( const SceneObject other)
inline

deep copy of SceneObject instance

The new instance's parent is set to null, i.e. it must be added to other's parent explicitly if this is necessary.

◆ ~SceneObject()

virtual ICLGeom_API icl::geom::SceneObject::~SceneObject ( )
virtual

Empty destructor (but virtual)

Member Function Documentation

◆ addChild() [1/2]

ICLGeom_API void icl::geom::SceneObject::addChild ( SceneObject child,
bool  passOwnerShip = true 
)

adds a new child to this scene object

If the child's owner ship is passed, it is deleted automatically when it is removed or if the parent is deleted. Otherwise, the caller has to manage the passed child's memory. Note: there is no cycle detection in the SceneObject class. Adding A to B and B to A leads to unknown results and most likely to programm errors.

◆ addChild() [2/2]

void icl::geom::SceneObject::addChild ( utils::SmartPtr< SceneObject child)

directly passes a smart pointer as a child

By passing a smart pointer to an object, pointer-sharing can also be extended to the caller scope. Please note, that adding a child to an object o, will always set the child's parent to o

◆ addCone()

ICLGeom_API SceneObject* icl::geom::SceneObject::addCone ( float  x,
float  y,
float  z,
float  rx,
float  ry,
float  h,
int  steps 
)

adds a conical child object with given parameters

returns a pointer to the cone added. This can be used to adapt further properties of that object

◆ addCube()

SceneObject* icl::geom::SceneObject::addCube ( float  x,
float  y,
float  z,
float  d 
)
inline

adds a cube child-object with given parameters

returns a pointer to the cube added. This can be used to adapt further properties of that object

◆ addCuboid()

ICLGeom_API SceneObject* icl::geom::SceneObject::addCuboid ( float  x,
float  y,
float  z,
float  dx,
float  dy,
float  dz 
)

adds a cuboid child-object with given parameters

returns a pointer to the cube added. This can be used to adapt further properties of that object

◆ addCustomPrimitive()

void icl::geom::SceneObject::addCustomPrimitive ( Primitive p)
inline

adds a custom primitive

This should only be used for non-directly supported primitives Note: right now, there is no 'hit' checking for non standard primitives

◆ addCylinder()

ICLGeom_API SceneObject* icl::geom::SceneObject::addCylinder ( float  x,
float  y,
float  z,
float  rx,
float  ry,
float  h,
int  steps 
)

adds a cylindical child object with given parameters

returns a pointer to the cylinder added. This can be used to adapt further properties of that object

◆ addLine()

ICLGeom_API void icl::geom::SceneObject::addLine ( int  x,
int  y,
const GeomColor color = GeomColor(100, 100, 100, 255) 
)

adds a new line to this object

If the given normal indices (na and nb) are -1, no normals are used for this primitives

◆ addNormal()

ICLGeom_API void icl::geom::SceneObject::addNormal ( const Vec n)

adds a new normal to this object

◆ addPolygon()

ICLGeom_API void icl::geom::SceneObject::addPolygon ( int  nPoints,
const int *  vertexIndices,
const GeomColor color = GeomColor(0, 100, 250, 255),
const int *  normalIndices = 0 
)

add a polygon to this object (note triangles and quads are slower here)

If the given normal indices's size is 0, auto-normal are computed using cross-product

◆ addQuad() [1/2]

ICLGeom_API void icl::geom::SceneObject::addQuad ( int  a,
int  b,
int  c,
int  d,
int  na,
int  nb,
int  nc,
int  nd,
const GeomColor color = GeomColor(0, 100, 250, 255) 
)

adds a new triangle to this onject

If the given normal indices (na,nb,nc and nd) are -1, auto-normal are computed using cross-product

◆ addQuad() [2/2]

void icl::geom::SceneObject::addQuad ( int  a,
int  b,
int  c,
int  d,
const GeomColor color = GeomColor(0,100,250,255) 
)
inline

convenience method for creation of a quad with auto-normals

◆ addSharedTexture() [1/2]

ICLGeom_API void icl::geom::SceneObject::addSharedTexture ( utils::SmartPtr< qt::GLImg gli)

adds a GLImg as shared texture

◆ addSharedTexture() [2/2]

ICLGeom_API void icl::geom::SceneObject::addSharedTexture ( const core::ImgBase image,
core::scalemode  sm = core::interpolateLIN 
)

adds an core::ImgBase * as shared texutre

◆ addSphere()

SceneObject* icl::geom::SceneObject::addSphere ( float  x,
float  y,
float  z,
float  r,
int  rzSteps,
int  xySlices 
)
inline

adds a cuboid child-object with given parameters

returns a pointer to the cube added. This can be used to adapt further properties of that object

◆ addSpheroid()

ICLGeom_API SceneObject* icl::geom::SceneObject::addSpheroid ( float  x,
float  y,
float  z,
float  rx,
float  ry,
float  rz,
int  rzSteps,
int  xySlices 
)

adds a cuboid child-object with given parameters

returns a pointer to the cube added. This can be used to adapt further properties of that object

◆ addText()

ICLGeom_API void icl::geom::SceneObject::addText ( int  a,
const std::string &  text,
float  billboardHeight = 10,
const GeomColor color = GeomColor(255, 255, 255, 255),
int  textRenderSize = 30,
core::scalemode  sm = core::interpolateLIN 
)

adds a billboard text-texture attached to given node index a

the billboardHeight parameters defines the actual height in world units. The text is always centered at m_vertices[a] and it will always be oriented towards the camera. The textRenderSize parameter defines the pixel resolution of the text

◆ addTextTexture() [1/2]

ICLGeom_API void icl::geom::SceneObject::addTextTexture ( int  a,
int  b,
int  c,
int  d,
const std::string &  text,
const GeomColor color,
int  na,
int  nb,
int  nc,
int  nd,
int  textSize,
core::scalemode  sm = core::interpolateLIN 
)

adds text-texture quad -primitive to this object

If the given normal indices (na,nb,nc and nd) are -1, auto-normal are computed using cross-product. Please note, that the text aspect ratio might not be preserved

Parameters
a
b
c
d
text
color
na
nb
nc
nd
textSizethe text size
smthe scale mode

◆ addTextTexture() [2/2]

void icl::geom::SceneObject::addTextTexture ( int  a,
int  b,
int  c,
int  d,
const std::string &  text,
const GeomColor color = GeomColor(255,255,255,255),
int  textSize = 30,
core::scalemode  sm = core::interpolateLIN 
)
inline

convenience method for creation of a text-texture with auto-normals

◆ addTexture() [1/4]

ICLGeom_API void icl::geom::SceneObject::addTexture ( int  a,
int  b,
int  c,
int  d,
const core::ImgBase texture,
int  na,
int  nb,
int  nc,
int  nd,
bool  createTextureOnce = true,
core::scalemode  sm = core::interpolateLIN 
)

If the given normal indices (na,nb,nc and nd) are -1, auto-normal are computed using cross-product

◆ addTexture() [2/4]

void icl::geom::SceneObject::addTexture ( int  a,
int  b,
int  c,
int  d,
const core::ImgBase texture,
bool  createTextureOnce = true,
core::scalemode  sm = core::interpolateLIN 
)
inline

convenience method for creation of a texture with auto-normals

◆ addTexture() [3/4]

ICLGeom_API void icl::geom::SceneObject::addTexture ( int  a,
int  b,
int  c,
int  d,
int  sharedTextureIndex,
int  na = -1,
int  nb = -1,
int  nc = -1,
int  nd = -1 
)

adds are shared texture primitive

The sharedTextureIndex references a shared texture that has been added by using SceneObject::addSharedTexture

◆ addTexture() [4/4]

ICLGeom_API void icl::geom::SceneObject::addTexture ( const core::ImgBase image,
int  numPoints,
const int *  vertexIndices,
const utils::Point32f texCoords,
const int *  normalIndices = 0,
bool  createTextureOnce = true 
)

adds a GenericTexturePrimitive for custom texCoords

◆ addTextureGrid()

ICLGeom_API void icl::geom::SceneObject::addTextureGrid ( int  w,
int  h,
const core::ImgBase image,
const icl32f px,
const icl32f py,
const icl32f pz,
const icl32f pnx = 0,
const icl32f pny = 0,
const icl32f pnz = 0,
int  stride = 1,
bool  createTextureOnce = true,
core::scalemode  sm = core::interpolateLIN 
)

adds a texture that is drawn on a 2D grid of vertices in 3D space

◆ addTriangle() [1/2]

ICLGeom_API void icl::geom::SceneObject::addTriangle ( int  a,
int  b,
int  c,
int  na,
int  nb,
int  nc,
const GeomColor color = GeomColor(0, 100, 250, 255) 
)

adds a new triangle to this onject

If the given normal indices (na,nb and nc) are -1, auto-normal are computed using cross-product

◆ addTriangle() [2/2]

void icl::geom::SceneObject::addTriangle ( int  a,
int  b,
int  c,
const GeomColor color = GeomColor(0,100,250,255) 
)
inline

convenience method for creation of a triangle with auto-normals

◆ addTwoSidedTextureGrid()

ICLGeom_API void icl::geom::SceneObject::addTwoSidedTextureGrid ( int  w,
int  h,
const core::ImgBase front,
const core::ImgBase back,
const icl32f px,
const icl32f py,
const icl32f pz,
const icl32f pnx = 0,
const icl32f pny = 0,
const icl32f pnz = 0,
int  stride = 1,
bool  createFrontOnce = true,
bool  createBackOnce = true,
core::scalemode  sm = core::interpolateLIN 
)

adds a texture grid that has two different texture for the two faces

Internally, the TwoSidedTextureGridPrimitive is used

◆ addTwoSidedTGrid()

ICLGeom_API void icl::geom::SceneObject::addTwoSidedTGrid ( int  w,
int  h,
const Vec vertices,
const Vec normals = 0,
const GeomColor frontColor = GeomColor(0, 100, 255, 255),
const GeomColor backColor = GeomColor(255, 0, 100, 255),
const GeomColor lineColor = GeomColor(0, 255, 100, 255),
bool  drawLines = false,
bool  drawQuads = true 
)

adds a two sided grid (sides may have different colors)

◆ addVertex()

ICLGeom_API void icl::geom::SceneObject::addVertex ( const Vec p,
const GeomColor color = GeomColor(255, 0, 0, 255) 
)

adds a new vertex to this object

Please note, that colors are defined in ICL's commong [0,255] range, but they are stored internally in [0,1] range, since this is how OpenGL expects colors

◆ clearAllPrimitives()

ICLGeom_API void icl::geom::SceneObject::clearAllPrimitives ( )

deletes and removes all primitives

◆ clearObject()

virtual ICLGeom_API void icl::geom::SceneObject::clearObject ( bool  deleteAndRemoveChildren = true,
bool  resetTransform = false 
)
virtual

deletes all primitive and all vertex, color and normal content (and optionally also the children)

◆ collect_hits_recursive()

static void icl::geom::SceneObject::collect_hits_recursive ( SceneObject obj,
const ViewRay v,
std::vector< Hit > &  hits,
bool  recursive 
)
staticprotected

recursive picking method

◆ complexCustomRender()

virtual void icl::geom::SceneObject::complexCustomRender ( icl::geom::ShaderUtil util)
inlinevirtual

this function is called when an object is rendered

The function can be used to draw something in Object coordinates using OpenGL commands directly. When complexCustomRender is called, the OpenGL matrices is already prepared correctly. Custom render is always called before the SceneObject's primitives are rendered. The complexCustomRender function is given a ShaderUtil to enable rendering with the complex shaders from the Scene.

Reimplemented in icl::physics::ManipulatablePaper, and icl::physics::PhysicsPaper3.

◆ copy()

virtual ICLGeom_API SceneObject* icl::geom::SceneObject::copy ( ) const
virtual

◆ createAutoNormals()

ICLGeom_API void icl::geom::SceneObject::createAutoNormals ( bool  smooth = true)

automatically creates precomputed normals

in smooth mode, for each vertex a surface normal is created. The normals are defined by the mean normal of all adjacent faces (triangles and quads). This does only work for sphere-like object, where a "mean normal" makes sense. This does not make sense for a cube.

The non-smooth mode pre-computes normals for each face, but here, each face-vertex uses the same normal leading to a flat-shaded result. The non-smooth-mode looks identical to the Primitives automatically created online normals, but reduces processor load.

◆ createDisplayList()

ICLGeom_API void icl::geom::SceneObject::createDisplayList ( )

creates a displaylist in the next render cycle

if the displaylist was already created, it is updated

◆ cube()

static SceneObject* icl::geom::SceneObject::cube ( float  x,
float  y,
float  z,
float  r 
)
inlinestatic

create a cube scene object

◆ cuboid()

static SceneObject* icl::geom::SceneObject::cuboid ( float  x,
float  y,
float  z,
float  dx,
float  dy,
float  dz 
)
inlinestatic

create a cuboid scene object

◆ customRender()

virtual void icl::geom::SceneObject::customRender ( )
inlinevirtual

this function is called when an object is rendered

The function can be used to draw something in Object coordinates using OpenGL commands directly. When customRender is called, the OpenGL matrices is already prepared correctly. Custom render is always called before the SceneObject's primitives are rendered

Reimplemented in icl::geom::PointCloudObjectBase, icl::geom::OctreeObject< Scalar, CAPACITY, SF, Pt, ALLOC_CHUNK_SIZE >, icl::geom::OctreeObject< float, 16, 1, Vec, 1024 >, icl::physics::ManipulatablePaper::Shadow, icl::geom::PointCloudObject, and icl::physics::PhysicsPaper3.

◆ freeDisplayList()

ICLGeom_API void icl::geom::SceneObject::freeDisplayList ( )

frees the displaylist in the next render cycle

◆ getCastShadowsEnabled()

bool icl::geom::SceneObject::getCastShadowsEnabled ( )
inline

◆ getChild() [1/2]

ICLGeom_API SceneObject* icl::geom::SceneObject::getChild ( int  index)

returns child at given index

◆ getChild() [2/2]

ICLGeom_API const SceneObject* icl::geom::SceneObject::getChild ( int  index) const

returns child at given index (const)

◆ getChildCount()

ICLGeom_API int icl::geom::SceneObject::getChildCount ( ) const

returns the number of children

◆ getChildPtr()

utils::SmartPtr<SceneObject> icl::geom::SceneObject::getChildPtr ( int  index)

returns a shared pointer to the child at given index

◆ getClosestVertex()

ICLGeom_API Vec icl::geom::SceneObject::getClosestVertex ( const Vec pWorld,
bool  relative = false 
)

returns the vertex, that is closest to the given point in wold coordinates

If relative is true, the vertex is returned in object-coordinates, otherwise it is returned in world coordinates

◆ getDefaultVertexColor()

virtual GeomColor icl::geom::SceneObject::getDefaultVertexColor ( ) const
inlinevirtual

can be reimplemented by subclass to provide and interface for setting default vertex color

The default vertex color is used if no color information is available (m_vertexColors.size() is 0

Reimplemented in icl::geom::PointCloudObjectBase.

◆ getDepthTestEnabled()

bool icl::geom::SceneObject::getDepthTestEnabled ( ) const
inline

returns whether depth test is enabled for this object

◆ getFragmentShader() [1/2]

qt::GLFragmentShader* icl::geom::SceneObject::getFragmentShader ( )
inline

returns the current fragment shader (or NULL if non was given)

◆ getFragmentShader() [2/2]

const qt::GLFragmentShader* icl::geom::SceneObject::getFragmentShader ( ) const
inline

returns the current fragment shader (or NULL if non was given, const version)

◆ getLockingEnabled()

bool icl::geom::SceneObject::getLockingEnabled ( ) const
inline

returns whether locking is current enabled for this object

◆ getNormals()

ICLGeom_API const std::vector<Vec>& icl::geom::SceneObject::getNormals ( ) const

returns object normals (const)

◆ getParent() [1/2]

ICLGeom_API SceneObject* icl::geom::SceneObject::getParent ( )

returns the parent scene object

◆ getParent() [2/2]

ICLGeom_API const SceneObject* icl::geom::SceneObject::getParent ( ) const

returns the parent scene object (const version)

◆ getPointHitMaxDistance()

float icl::geom::SceneObject::getPointHitMaxDistance ( ) const
inline

returns the maximum distance to a pointing viewraw

When calling scene.find(ViewRay) in order to click at an object, all object primitives are checked for the test. In addition, all object vertices are also checked here, but since here, an actual hit is statistically impossible, the "pointHitMaxDistance property is used

◆ getPrimitives() [1/2]

ICLGeom_API std::vector<Primitive*>& icl::geom::SceneObject::getPrimitives ( )

returns object's primitives (lines, quads, etc...)

◆ getPrimitives() [2/2]

ICLGeom_API const std::vector<Primitive*>& icl::geom::SceneObject::getPrimitives ( ) const

returns object's primitives (lines, quads, etc...) (const)

◆ getReceiveShadowsEnabled()

bool icl::geom::SceneObject::getReceiveShadowsEnabled ( )
inline

◆ getSmoothShading()

ICLGeom_API bool icl::geom::SceneObject::getSmoothShading ( ) const

returns wheather smooth shading is activated

◆ getTransformation()

ICLGeom_API Mat icl::geom::SceneObject::getTransformation ( bool  relative = false) const

returns the current transformation matrix

If the relative flag is true, only this objects transformation matrix is returned. If it is set to false (which is default), also the parent SceneObjects absolute transformation matrix is queried and premultiplied

◆ getTransformedVertices()

ICLGeom_API std::vector<Vec> icl::geom::SceneObject::getTransformedVertices ( ) const

returns all vertices in their final world coordinates

◆ getVertexColors() [1/2]

ICLGeom_API std::vector<GeomColor>& icl::geom::SceneObject::getVertexColors ( )

returns object vertex colors

If the number of vertex colors is changed, the object needs to be locked

◆ getVertexColors() [2/2]

ICLGeom_API const std::vector<GeomColor>& icl::geom::SceneObject::getVertexColors ( ) const

returns object vertex colors (const)

◆ getVertices() [1/2]

ICLGeom_API std::vector<Vec>& icl::geom::SceneObject::getVertices ( )

returns object vertices

If the vertex count is changed, the object needs to be locked

◆ getVertices() [2/2]

ICLGeom_API const std::vector<Vec>& icl::geom::SceneObject::getVertices ( ) const

returns object vertices (const)

◆ hasChild()

ICLGeom_API bool icl::geom::SceneObject::hasChild ( const SceneObject o) const

returns whether the given object is a child of this one

◆ hasChildren()

ICLGeom_API bool icl::geom::SceneObject::hasChildren ( ) const

returns whether the SceneObject has children at all

◆ hasTransformation()

ICLGeom_API bool icl::geom::SceneObject::hasTransformation ( bool  relative = false) const

returns whether the SceneObject has currently a non-ID-transformation

Here also the parent transformation is regarded if relative is false

◆ hide()

void icl::geom::SceneObject::hide ( bool  recursive = true)
inline

calls setVisible(false)

◆ hit() [1/2]

ICLGeom_API Hit icl::geom::SceneObject::hit ( const ViewRay v,
bool  recursive = true 
)

returns whether this object is hit by the given viewray

Please note: only faces (i.e. quads, triangles and polygons are checked) The method returns the hit scene object that was closest to the given view-rays origin or null, if it was not hit. If recursive is true, the scene-graph is traversed from this object on and the actually hit child (or child of child etc.) might also be returned.

◆ hit() [2/2]

const Hit icl::geom::SceneObject::hit ( const ViewRay v,
bool  recursive = true 
) const
inline

returns whether this object is hit by the given viewray (const)

◆ hits()

ICLGeom_API std::vector<Hit> icl::geom::SceneObject::hits ( const ViewRay v,
bool  recursive = true 
)

returns all hits with SceneObjects form the given viewray

◆ isInvisibleForCamera()

virtual ICLGeom_API bool icl::geom::SceneObject::isInvisibleForCamera ( int  camIndex) const
inlinevirtual

this can be overwrittern in subclasses to hide an object for given camera indices

Please note that this mechanism does not work in case of optimizing object rendering using display-lists

◆ isVisible() [1/2]

ICLGeom_API bool icl::geom::SceneObject::isVisible ( Primitive::Type  t) const

returns visibility of given primitive type

◆ isVisible() [2/2]

bool icl::geom::SceneObject::isVisible ( ) const
inline

returns whether this object is currently visible

◆ lock()

virtual void icl::geom::SceneObject::lock ( ) const
inlinevirtual

locks the internal mutex if locking enabled is set to true

This function can be re implemented by subclasses that need an eplicit locking. Note, that explicit locking can be enabled/disabled using setLockingEnabled
E.g. if an objects data is updated from another thread, you can sub-class this class and implement a locking mechanism for it

◆ operator=()

ICLGeom_API SceneObject& icl::geom::SceneObject::operator= ( const SceneObject other)

assignment operator for deep copy

This instances parent is not changed. I.e. it must be added to other's parent explicitly if this is necessary.

◆ prepareForRendering()

virtual void icl::geom::SceneObject::prepareForRendering ( )
inlinevirtual

called by the renderer before the object is rendered

here, dynamic object types can adapt e.g. their vertices or colors

Reimplemented in icl::physics::ManipulatablePaper, icl::physics::PhysicsObject, and icl::geom::SceneLightObject.

◆ removeAllChildren()

ICLGeom_API void icl::geom::SceneObject::removeAllChildren ( )

removes all children

◆ removeChild()

ICLGeom_API void icl::geom::SceneObject::removeChild ( SceneObject child)

removes given child

no errors if the child was not found

◆ removeTransformation()

ICLGeom_API void icl::geom::SceneObject::removeTransformation ( )

sets the internal transformation to the identity matrix

◆ rotate() [1/2]

virtual ICLGeom_API void icl::geom::SceneObject::rotate ( float  rx,
float  ry,
float  rz,
icl::math::AXES  axes = icl::math::AXES_DEFAULT 
)
virtual

rotates the scene object (this affects it's transformation matrix)

◆ rotate() [2/2]

template<class T >
void icl::geom::SceneObject::rotate ( const T &  t,
icl::math::AXES  axes = icl::math::AXES_DEFAULT 
)
inline

utility wrapper for vector based rotation

◆ scale() [1/2]

virtual ICLGeom_API void icl::geom::SceneObject::scale ( float  sx,
float  sy,
float  sz 
)
virtual

transformes the current transformation matrix by a scale matrix

◆ scale() [2/2]

template<class T >
void icl::geom::SceneObject::scale ( const T &  t)
inline

utility wrapper for vector based scaling

◆ setCastShadowsEnabled()

void icl::geom::SceneObject::setCastShadowsEnabled ( bool  castShadows = true)
inline

◆ setColor()

ICLGeom_API void icl::geom::SceneObject::setColor ( Primitive::Type  t,
const GeomColor color,
bool  recursive = true 
)

tints all Primitives with given type in given color

◆ setColorsFromVertices()

ICLGeom_API void icl::geom::SceneObject::setColorsFromVertices ( Primitive::Type  t,
bool  on,
bool  recursive = true 
)

sets how 2D-geom colors are set

◆ setDepthTestEnabled()

void icl::geom::SceneObject::setDepthTestEnabled ( bool  enabled,
bool  recursive = true 
)
inline

sets whether depth test is enabled for this object

◆ setFragmentShader()

ICLGeom_API void icl::geom::SceneObject::setFragmentShader ( qt::GLFragmentShader shader)

sets a fragment shader to use for this object

use set fragment shader (0) in order to delete the fragment shader

◆ setLineSmoothingEnabled()

void icl::geom::SceneObject::setLineSmoothingEnabled ( bool  enabled = true)
inline

sets whether lines are visualized in a smoothed manner

This might not be supported by the graphics hardware or driver Default value is true

◆ setLineWidth()

ICLGeom_API void icl::geom::SceneObject::setLineWidth ( float  lineWidth,
bool  recursive = true 
)

sets point size

◆ setLockingEnabled()

void icl::geom::SceneObject::setLockingEnabled ( bool  enabled)
inline

sets locking enabled or disabled

Note, that the method itself locks the internal mutex to prevent, that m_enableLocking is disabled while the mutex is locked somewhere else

◆ setPointHitMaxDistance()

void icl::geom::SceneObject::setPointHitMaxDistance ( float  d)
inline

sets the maximum distance to a pointing view-ray

See also
getPointHitMaxDistance()

◆ setPointSize()

ICLGeom_API void icl::geom::SceneObject::setPointSize ( float  pointSize,
bool  recursive = true 
)

sets point size

◆ setPointSmoothingEnabled()

void icl::geom::SceneObject::setPointSmoothingEnabled ( bool  enabled = true)
inline

sets whether points are visualized in a smoothed manner

This might not be supported by the graphics hardware or driver. Default value is true

◆ setPolygonSmoothingEnabled()

void icl::geom::SceneObject::setPolygonSmoothingEnabled ( bool  enabled = true)
inline

sets whether faces are visualized in a smoothed manner

This might not be supported by the graphics hardware or driver Default value is true

◆ setReceiveShadowsEnabled()

void icl::geom::SceneObject::setReceiveShadowsEnabled ( bool  receiveShadows = true)
inline

◆ setShininess()

void icl::geom::SceneObject::setShininess ( icl8u  value)
inline

sets the material shininess (default is 128)

◆ setSmoothShading()

ICLGeom_API void icl::geom::SceneObject::setSmoothShading ( bool  on,
bool  recursive = true 
)

sets whether to use smoothshading (default is false)

◆ setSpecularReflectance()

void icl::geom::SceneObject::setSpecularReflectance ( const GeomColor values)
inline

sets the materials specular reflectance

given color ranges are expected in range [0,255]

◆ setTransformation()

virtual ICLGeom_API void icl::geom::SceneObject::setTransformation ( const Mat m)
virtual

Sets a transformation matrix.

All vertices are transformed with this matrix before rendering. If the SceneObject instance has a parent-Scene object, then the parent's SceneObject's transformation pre-multiplied

Reimplemented in icl::physics::PhysicsObject.

◆ setUseCustomRender()

ICLGeom_API void icl::geom::SceneObject::setUseCustomRender ( bool  use,
bool  recursive = true 
)

if set, only custom render is used

◆ setVisible() [1/4]

ICLGeom_API void icl::geom::SceneObject::setVisible ( int  oredTypes,
bool  visible,
bool  recursive = true 
)

changes visibility of given primitive type

◆ setVisible() [2/4]

ICLGeom_API void icl::geom::SceneObject::setVisible ( const std::string &  what,
bool  recursive = true 
)

convenience method that allows for setting several visibility properties at once

'what' must be a comma separated list of A=B tokens, where A is a primitive type name and B is a boolean (e.g. either true or 1 or false or 0). The "=B" part can be left out and is then automatically interpreted as "=true" Supported primitive type names are:

  • vertex
  • line
  • triangle
  • quad
  • polygon
  • texture
  • text
  • faces (this is a meta type and refers to triangle, quad, polygon, text and texture)
  • all (refers to all primitive types and to this)
  • this (this is a special type that refers to the whole object)

Here are some examples

obj.setVisible("vertex,line,faces=false"); // shows only lines and points
obj.setVisible("this");                    // shows the whole object
obj.setVisible("this=0");                  // hides the whole object
obj.setVisible("vertex=false,line=true,triangles=false,quads=true"); // ...

In case of referencing a given primitive more than once, and with different visiblity values, the result is undefined.

◆ setVisible() [3/4]

void icl::geom::SceneObject::setVisible ( const char *  what,
bool  recursive = true 
)
inline

explicit version for const char pointer to avoid an explicit cast to bool/int

◆ setVisible() [4/4]

ICLGeom_API void icl::geom::SceneObject::setVisible ( bool  visible,
bool  recursive = true 
)

sets the visibility of this object

◆ show()

void icl::geom::SceneObject::show ( bool  recursive = true)
inline

calls setVisible(true)

◆ sphere()

static SceneObject* icl::geom::SceneObject::sphere ( float  x,
float  y,
float  z,
float  r,
int  rzSteps,
int  xySlices 
)
inlinestatic

create a shere scene object

◆ spheroid()

static SceneObject* icl::geom::SceneObject::spheroid ( float  x,
float  y,
float  z,
float  rx,
float  ry,
float  rz,
int  rzSteps,
int  xySlices 
)
inlinestatic

create a shere scene object

◆ superquadric()

static SceneObject* icl::geom::SceneObject::superquadric ( float  x,
float  y,
float  z,
float  rx,
float  ry,
float  rz,
float  dx,
float  dy,
float  dz,
float  e1,
float  e2,
int  rzSteps,
int  xySlices 
)
inlinestatic

create a superquadric scene object

◆ transform() [1/2]

virtual ICLGeom_API void icl::geom::SceneObject::transform ( const Mat m)
virtual

multiplies the current transformation matrix by given matrix

Reimplemented in icl::physics::PhysicsObject.

◆ transform() [2/2]

template<class T >
void icl::geom::SceneObject::transform ( const T &  m)
inline

utility method for passing arbitrary matrix classes

Note: the given T instance m, needs to have a function-operator(x,y)

◆ translate() [1/2]

virtual ICLGeom_API void icl::geom::SceneObject::translate ( float  dx,
float  dy,
float  dz 
)
virtual

translates the scene object (this affects it's translates matrix)

◆ translate() [2/2]

template<class T >
void icl::geom::SceneObject::translate ( const T &  t)
inline

utility wrapper for vector based translation

◆ unlock()

virtual void icl::geom::SceneObject::unlock ( ) const
inlinevirtual

unlocks the internal mutex if locking enabled is set to true

This function can be re implemented by subclasses that need an eplicit locking. Note, that explicit locking can be enabled/disabled using setLockingEnabled
E.g. if an objects data is updated from another thread, you can sub-class this class and implement a locking mechanism for it

Friends And Related Function Documentation

◆ Primitive

friend struct Primitive
friend

◆ Scene

friend class Scene
friend

provides direct access for the Scene class

Member Data Documentation

◆ m_castShadows

bool icl::geom::SceneObject::m_castShadows
private

◆ m_children

std::vector<utils::SmartPtr<SceneObject> > icl::geom::SceneObject::m_children
protected

◆ m_createDisplayListNextTime

int icl::geom::SceneObject::m_createDisplayListNextTime
private

internal flag

  • 0: no change.
  • 1: create/update display list in next render cycle
  • 2: free display-list (if there is any) in the next render cycle

◆ m_depthTestEnabled

bool icl::geom::SceneObject::m_depthTestEnabled
protected

default is true

◆ m_displayListHandle

void* icl::geom::SceneObject::m_displayListHandle
private

internally used flag

◆ m_enableLocking

bool icl::geom::SceneObject::m_enableLocking
protected

can be enabled

◆ m_fragmentShader

qt::GLFragmentShader* icl::geom::SceneObject::m_fragmentShader
private

internal optionally given fragment shader

◆ m_hasTransformation

bool icl::geom::SceneObject::m_hasTransformation
protected

◆ m_isVisible

bool icl::geom::SceneObject::m_isVisible
protected

◆ m_lineColorsFromVertices

bool icl::geom::SceneObject::m_lineColorsFromVertices
protected

◆ m_lineSmoothingEnabled

bool icl::geom::SceneObject::m_lineSmoothingEnabled
protected

◆ m_lineWidth

float icl::geom::SceneObject::m_lineWidth
protected

◆ m_mutex

utils::Mutex icl::geom::SceneObject::m_mutex
mutableprotected

for asynchronous updates

◆ m_normals

std::vector<Vec> icl::geom::SceneObject::m_normals
protected

◆ m_parent

SceneObject* icl::geom::SceneObject::m_parent
protected

◆ m_pointHitMaxDistance

float icl::geom::SceneObject::m_pointHitMaxDistance
private

◆ m_pointSize

float icl::geom::SceneObject::m_pointSize
protected

◆ m_pointSmoothingEnabled

bool icl::geom::SceneObject::m_pointSmoothingEnabled
protected

◆ m_polyColorsFromVertices

bool icl::geom::SceneObject::m_polyColorsFromVertices
protected

◆ m_polygonSmoothingEnabled

bool icl::geom::SceneObject::m_polygonSmoothingEnabled
protected

◆ m_primitives

std::vector<Primitive*> icl::geom::SceneObject::m_primitives
protected

◆ m_quadColorsFromVertices

bool icl::geom::SceneObject::m_quadColorsFromVertices
protected

◆ m_receiveShadows

bool icl::geom::SceneObject::m_receiveShadows
private

◆ m_sharedTextures

std::vector<utils::SmartPtr<qt::GLImg> > icl::geom::SceneObject::m_sharedTextures
protected

◆ m_shininess

icl8u icl::geom::SceneObject::m_shininess
protected

◆ m_specularReflectance

GeomColor icl::geom::SceneObject::m_specularReflectance
protected

◆ m_transformation

Mat icl::geom::SceneObject::m_transformation
protected

for the scene graph implementation

◆ m_triangleColorsFromVertices

bool icl::geom::SceneObject::m_triangleColorsFromVertices
protected

◆ m_useCustomRender

bool icl::geom::SceneObject::m_useCustomRender
protected

◆ m_useSmoothShading

bool icl::geom::SceneObject::m_useSmoothShading
protected

◆ m_vertexColors

std::vector<GeomColor> icl::geom::SceneObject::m_vertexColors
protected

◆ m_vertices

std::vector<Vec> icl::geom::SceneObject::m_vertices
protected

◆ m_visibleMask

int icl::geom::SceneObject::m_visibleMask
protected

The documentation for this class was generated from the following file: