OpenSceneGraph 3.6.5
AutoTransform
Go to the documentation of this file.
1/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
2 *
3 * This library is open source and may be redistributed and/or modified under
4 * the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
5 * (at your option) any later version. The full license is in LICENSE file
6 * included with this distribution, and on the openscenegraph.org website.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * OpenSceneGraph Public License for more details.
12*/
13
14#ifndef OSG_AUTOTRANSFORM
15#define OSG_AUTOTRANSFORM 1
16
17#include <osg/Group>
18#include <osg/Transform>
19#include <osg/Quat>
20#include <osg/Viewport>
21
22namespace osg {
23
28{
29 public :
31
33
34 virtual osg::Object* cloneType() const { return new AutoTransform (); }
35 virtual osg::Object* clone(const osg::CopyOp& copyop) const { return new AutoTransform (*this,copyop); }
36 virtual bool isSameKindAs(const osg::Object* obj) const { return dynamic_cast<const AutoTransform *>(obj)!=NULL; }
37 virtual const char* className() const { return "AutoTransform"; }
38 virtual const char* libraryName() const { return "osg"; }
39
40 virtual AutoTransform* asAutoTransform() { return this; }
41 virtual const AutoTransform* asAutoTransform() const { return this; }
42
43 inline void setPosition(const Vec3d& pos) { _position = pos; dirtyBound(); }
44 inline const Vec3d& getPosition() const { return _position; }
45
46
47 inline void setRotation(const Quat& quat) { _rotation = quat; dirtyBound(); }
48 inline const Quat& getRotation() const { return _rotation; }
49
50 inline void setScale(double scale) { setScale(osg::Vec3(scale,scale,scale)); }
51
52 void setScale(const Vec3d& scale);
53 inline const Vec3d& getScale() const { return _scale; }
54
55 void setMinimumScale(double minimumScale) { _minimumScale = minimumScale; }
56 double getMinimumScale() const { return _minimumScale; }
57
58 void setMaximumScale(double maximumScale) { _maximumScale = maximumScale; }
59 double getMaximumScale() const { return _maximumScale; }
60
61 inline void setPivotPoint(const Vec3d& pivot) { _pivotPoint = pivot; dirtyBound(); }
62 inline const Vec3d& getPivotPoint() const { return _pivotPoint; }
63
64
67
68
76
78
80
83 void setAxis(const Vec3& axis);
85 inline const Vec3& getAxis() const { return _axis; }
86
88 void setNormal(const Vec3& normal);
90 inline const Vec3& getNormal() const { return _normal; }
91
92 void setAutoScaleToScreen(bool autoScaleToScreen);
94
97
98
99 virtual bool computeLocalToWorldMatrix(Matrix& matrix,NodeVisitor* nv) const;
100
101 virtual bool computeWorldToLocalMatrix(Matrix& matrix,NodeVisitor* nv) const;
102
103 protected :
104
105 virtual ~AutoTransform() {}
106
110
112
114
116 mutable Vec3d _scale;
117
121
123
131
134
135 // used internally as cache of which what _axis is aligned to help
136 // decide which method of rotation to use.
140
141};
142
143}
144
145#endif
The core osg library provides the basic scene graph classes such as Nodes, State and Drawables,...
Definition AlphaFunc:19
Vec3f Vec3
Definition Vec3:21
Matrixd Matrix
Definition Matrix:27
bool getAutoScaleToScreen() const
Definition AutoTransform:93
double getMinimumScale() const
Definition AutoTransform:56
Vec3 _axis
Definition AutoTransform:132
Quat _rotation
Definition AutoTransform:115
void setAutoRotateMode(AutoRotateMode mode)
float getAutoScaleTransitionWidthRatio() const
Definition AutoTransform:96
AxisAligned
Definition AutoTransform:125
@ AXIAL_ROT_Y_AXIS
Definition AutoTransform:127
@ AXIAL_ROT_X_AXIS
Definition AutoTransform:126
@ CACHE_DIRTY
Definition AutoTransform:129
@ AXIAL_ROT_Z_AXIS
Definition AutoTransform:128
int _cachedMode
Definition AutoTransform:137
bool _autoScaleToScreen
Definition AutoTransform:113
double _maximumScale
Definition AutoTransform:119
const Vec3d & getScale() const
Definition AutoTransform:53
void setPivotPoint(const Vec3d &pivot)
Definition AutoTransform:61
double _minimumScale
Definition AutoTransform:118
const Vec3d & getPosition() const
Definition AutoTransform:44
Vec3 _side
Definition AutoTransform:138
const Vec3d & getPivotPoint() const
Definition AutoTransform:62
void setAutoScaleToScreen(bool autoScaleToScreen)
virtual ~AutoTransform()
Definition AutoTransform:105
AutoRotateMode _autoRotateMode
Definition AutoTransform:111
double getMaximumScale() const
Definition AutoTransform:59
AutoRotateMode getAutoRotateMode() const
Definition AutoTransform:79
void setAxis(const Vec3 &axis)
Set the rotation axis for the AutoTransform's child nodes.
Vec3d _pivotPoint
Definition AutoTransform:108
virtual osg::Object * cloneType() const
clone an object of the same type as the node.
Definition AutoTransform:34
Vec3 _normal
Definition AutoTransform:133
void setAutoScaleTransitionWidthRatio(float ratio)
Definition AutoTransform:95
AutoRotateMode
Definition AutoTransform:70
@ ROTATE_TO_CAMERA
Definition AutoTransform:73
@ ROTATE_TO_SCREEN
Definition AutoTransform:72
@ NO_ROTATION
Definition AutoTransform:71
@ ROTATE_TO_AXIS
Definition AutoTransform:74
virtual const char * libraryName() const
return the name of the node's library.
Definition AutoTransform:38
double _autoScaleTransitionWidthRatio
Definition AutoTransform:120
const Quat & getRotation() const
Definition AutoTransform:48
virtual bool computeWorldToLocalMatrix(Matrix &matrix, NodeVisitor *nv) const
virtual bool computeLocalToWorldMatrix(Matrix &matrix, NodeVisitor *nv) const
Vec3d _position
Definition AutoTransform:107
Vec3d _scale
Definition AutoTransform:116
virtual const char * className() const
return the name of the node's class type.
Definition AutoTransform:37
AutoTransform(const AutoTransform &pat, const CopyOp &copyop=CopyOp::SHALLOW_COPY)
virtual const AutoTransform * asAutoTransform() const
Definition AutoTransform:41
void setScale(const Vec3d &scale)
void setMinimumScale(double minimumScale)
Definition AutoTransform:55
osg::Matrixd computeMatrix(const osg::NodeVisitor *nv) const
float getAutoUpdateEyeMovementTolerance() const
Definition AutoTransform:66
double _autoUpdateEyeMovementTolerance
Definition AutoTransform:109
virtual osg::Object * clone(const osg::CopyOp &copyop) const
return a clone of a node, with Object* return type.
Definition AutoTransform:35
const Vec3 & getNormal() const
Get the front face direction normal.
Definition AutoTransform:90
virtual AutoTransform * asAutoTransform()
Definition AutoTransform:40
void setRotation(const Quat &quat)
Definition AutoTransform:47
void setMaximumScale(double maximumScale)
Definition AutoTransform:58
void setPosition(const Vec3d &pos)
Definition AutoTransform:43
void setAutoUpdateEyeMovementTolerance(float tolerance)
Definition AutoTransform:65
void setNormal(const Vec3 &normal)
This normal defines child Nodes' front face direction when unrotated.
const Vec3 & getAxis() const
Get the rotation axis.
Definition AutoTransform:85
void setScale(double scale)
Definition AutoTransform:50
virtual bool isSameKindAs(const osg::Object *obj) const
return true if this and obj are of the same kind of object.
Definition AutoTransform:36
Copy Op(erator) used to control whether shallow or deep copy is used during copy construction and clo...
Definition CopyOp:41
@ SHALLOW_COPY
Definition CopyOp:47
Definition Matrixd:27
void dirtyBound()
Mark this node's bounding sphere dirty.
Visitor for type safe operations on osg::Nodes.
Definition NodeVisitor:82
Base class/standard interface for objects which require IO support, cloning and reference counting.
Definition Object:61
A quaternion class.
Definition Quat:30
General purpose double triple for use as vertices, vectors and normals.
Definition Vec3d:30
#define NULL
Definition Export:55
#define OSG_EXPORT
Definition Export:39

osg logo
Generated at Sun Jul 20 2025 00:00:00 for the OpenSceneGraph by doxygen 1.14.0.