Q3DCamera Class

Representation of a camera in 3D space. More...

Header: #include <Q3DCamera>
CMake: find_package(Qt6 REQUIRED COMPONENTS DataVisualization)
target_link_libraries(mytarget PRIVATE Qt6::DataVisualization)
qmake: QT += datavisualization
Since: QtDataVisualization 1.0
Instantiated By: Camera3D
Inherits: Q3DObject

Public Types

enum CameraPreset { CameraPresetNone, CameraPresetFrontLow, CameraPresetFront, CameraPresetFrontHigh, CameraPresetLeftLow, …, CameraPresetDirectlyBelow }

Properties

Public Functions

Q3DCamera(QObject *parent = nullptr)
virtual ~Q3DCamera()
Q3DCamera::CameraPreset cameraPreset() const
float maxZoomLevel() const
float minZoomLevel() const
void setCameraPosition(float horizontal, float vertical, float zoom = 100.0f)
void setCameraPreset(Q3DCamera::CameraPreset preset)
void setMaxZoomLevel(float zoomLevel)
void setMinZoomLevel(float zoomLevel)
void setTarget(const QVector3D &target)
void setWrapXRotation(bool isEnabled)
void setWrapYRotation(bool isEnabled)
void setXRotation(float rotation)
void setYRotation(float rotation)
void setZoomLevel(float zoomLevel)
QVector3D target() const
bool wrapXRotation() const
bool wrapYRotation() const
float xRotation() const
float yRotation() const
float zoomLevel() const

Reimplemented Public Functions

virtual void copyValuesFrom(const Q3DObject &source) override

Signals

void cameraPresetChanged(Q3DCamera::CameraPreset preset)
void maxZoomLevelChanged(float zoomLevel)
void minZoomLevelChanged(float zoomLevel)
void targetChanged(const QVector3D &target)
void wrapXRotationChanged(bool isEnabled)
void wrapYRotationChanged(bool isEnabled)
void xRotationChanged(float rotation)
void yRotationChanged(float rotation)
void zoomLevelChanged(float zoomLevel)

Detailed Description

Q3DCamera represents a basic orbit around centerpoint 3D camera that is used when rendering the data visualization. The class offers simple methods for rotating the camera around the origin and setting zoom level.

Member Type Documentation

enum Q3DCamera::CameraPreset

Predefined positions for camera.

ConstantValueDescription
Q3DCamera::CameraPresetNone-1Used to indicate a preset has not been set, or the scene has been rotated freely.
Q3DCamera::CameraPresetFrontLow0 
Q3DCamera::CameraPresetFront1 
Q3DCamera::CameraPresetFrontHigh2 
Q3DCamera::CameraPresetLeftLow3 
Q3DCamera::CameraPresetLeft4 
Q3DCamera::CameraPresetLeftHigh5 
Q3DCamera::CameraPresetRightLow6 
Q3DCamera::CameraPresetRight7 
Q3DCamera::CameraPresetRightHigh8 
Q3DCamera::CameraPresetBehindLow9 
Q3DCamera::CameraPresetBehind10 
Q3DCamera::CameraPresetBehindHigh11 
Q3DCamera::CameraPresetIsometricLeft12 
Q3DCamera::CameraPresetIsometricLeftHigh13 
Q3DCamera::CameraPresetIsometricRight14 
Q3DCamera::CameraPresetIsometricRightHigh15 
Q3DCamera::CameraPresetDirectlyAbove16 
Q3DCamera::CameraPresetDirectlyAboveCW4517 
Q3DCamera::CameraPresetDirectlyAboveCCW4518 
Q3DCamera::CameraPresetFrontBelow19In Q3DBars from CameraPresetFrontBelow onward these only work for graphs including negative values. They act as Preset...Low for positive-only values.
Q3DCamera::CameraPresetLeftBelow20 
Q3DCamera::CameraPresetRightBelow21 
Q3DCamera::CameraPresetBehindBelow22 
Q3DCamera::CameraPresetDirectlyBelow23Acts as CameraPresetFrontLow for positive-only bars.

Property Documentation

cameraPreset : CameraPreset

This property holds the currently active camera preset.

If no CameraPreset value is set, CameraPresetNone is used by default.

Access functions:

Q3DCamera::CameraPreset cameraPreset() const
void setCameraPreset(Q3DCamera::CameraPreset preset)

Notifier signal:

void cameraPresetChanged(Q3DCamera::CameraPreset preset)

maxZoomLevel : float

This property holds the maximum allowed camera zoom level.

If the maximum level is set to a new value that is lower than the existing minimum level, the minimum level is adjusted to the new maximum as well. If the current zoomLevel is outside the new bounds, it is adjusted as well. Defaults to 500.0f.

Access functions:

float maxZoomLevel() const
void setMaxZoomLevel(float zoomLevel)

Notifier signal:

void maxZoomLevelChanged(float zoomLevel)

See also zoomLevel and minZoomLevel.

minZoomLevel : float

This property holds the minimum allowed camera zoom level.

If the minimum level is set to a new value that is higher than the existing maximum level, the maximum level is adjusted to the new minimum as well. If the current zoomLevel is outside the new bounds, it is adjusted as well. The minZoomLevel cannot be set below 1.0f. Defaults to 10.0f.

Access functions:

float minZoomLevel() const
void setMinZoomLevel(float zoomLevel)

Notifier signal:

void minZoomLevelChanged(float zoomLevel)

See also zoomLevel and maxZoomLevel.

[since QtDataVisualization 1.2] target : QVector3D

This property holds the camera target as a vector or vertex in the 3D space.

Defaults to QVector3D(0.0, 0.0, 0.0).

Valid coordinate values are between -1.0...1.0, where the edge values indicate the edges of the corresponding axis range. Any values outside this range are clamped to the edge.

Note: For bar graphs, the Y-coordinate is ignored and camera always targets a point on the horizontal background.

This property was introduced in QtDataVisualization 1.2.

Access functions:

QVector3D target() const
void setTarget(const QVector3D &target)

Notifier signal:

void targetChanged(const QVector3D &target)

wrapXRotation : bool

This property holds the behavior of the minimum and maximum limits in the X-rotation.

If set to true, the X-rotation of the camera is wrapped from minimum to maximum and from maximum to minimum. If set to false, the X-rotation of the camera is limited to the sector determined by the minimum and maximum values. Set to true by default.

Access functions:

bool wrapXRotation() const
void setWrapXRotation(bool isEnabled)

Notifier signal:

void wrapXRotationChanged(bool isEnabled)

wrapYRotation : bool

This property holds the behavior of the minimum and maximum limits in the Y-rotation.

If true, the Y-rotation of the camera is wrapped from minimum to maximum and from maximum to minimum. If false, the Y-rotation of the camera is limited to the sector determined by the minimum and maximum values. Set to true by default.

Access functions:

bool wrapYRotation() const
void setWrapYRotation(bool isEnabled)

Notifier signal:

void wrapYRotationChanged(bool isEnabled)

xRotation : float

This property holds the X-rotation angle of the camera around the target point in degrees.

Access functions:

float xRotation() const
void setXRotation(float rotation)

Notifier signal:

void xRotationChanged(float rotation)

yRotation : float

This property holds the Y-rotation angle of the camera around the target point in degrees.

Access functions:

float yRotation() const
void setYRotation(float rotation)

Notifier signal:

void yRotationChanged(float rotation)

zoomLevel : float

This property holds the camera zoom level in percentage.

The default value of 100.0f means there is no zoom in or out set in the camera. The value is limited by the minZoomLevel and maxZoomLevel properties.

Access functions:

float zoomLevel() const
void setZoomLevel(float zoomLevel)

Notifier signal:

void zoomLevelChanged(float zoomLevel)

See also minZoomLevel and maxZoomLevel.

Member Function Documentation

[explicit] Q3DCamera::Q3DCamera(QObject *parent = nullptr)

Constructs a new 3D camera with position set to origin, up direction facing towards the Y-axis and looking at origin by default. An optional parent parameter can be given and is then passed to QObject constructor.

[virtual noexcept] Q3DCamera::~Q3DCamera()

Destroys the camera object.

[override virtual] void Q3DCamera::copyValuesFrom(const Q3DObject &source)

Reimplements: Q3DObject::copyValuesFrom(const Q3DObject &source).

Copies the 3D camera's properties from the given source camera. Values are copied from the source to this object.

void Q3DCamera::setCameraPosition(float horizontal, float vertical, float zoom = 100.0f)

Utility function that sets the camera rotations and distance.horizontal and vertical define the camera rotations to be used. Optional zoom parameter can be given to set the zoom percentage of the camera within the bounds defined by minZoomLevel and maxZoomLevel properties.