- Qt 6.4
- Qt 3D
- C++ Classes
- Qt3DRender
- QCamera
- Qt 6.4.3 Reference Documentation

# QCamera Class

class Qt3DRender::QCamera

The QCamera class defines a view point through which the scene will be rendered. More...

Header: | #include <Qt3DRender/QCamera>
CMake: | find_package(Qt6 REQUIRED COMPONENTS 3drender) target_link_libraries(mytarget PRIVATE Qt6::3drender)
qmake: | QT += 3drender
Since: | Qt 5.5
Instantiated By: | Camera
Inherits: | Qt3DCore::QEntity

- List of all members, including inherited members
- Deprecated members

## Public Types

enum | CameraTranslationOption { TranslateViewCenter, DontTranslateViewCenter }

## Properties

aspectRatio : float bottom : float exposure : float farPlane : float fieldOfView : float left : float lens : Qt3DRender::QCameraLens* const nearPlane : float position : QVector3D | projectionMatrix : QMatrix4x4 projectionType : Qt3DRender::QCameraLens::ProjectionType right : float top : float transform : Qt3DCore::QTransform* const upVector : QVector3D viewCenter : QVector3D viewVector : const QVector3D

## Public Functions

| QCamera(Qt3DCore::QNode *parent = nullptr)
float | aspectRatio() const
float | bottom() const
float | exposure() const
float | farPlane() const
float | fieldOfView() const
float | left() const
Qt3DRender::QCameraLens * | lens() const
float | nearPlane() const
void | pan(float angle)
void | pan(float angle, const QVector3D &axis)
void | panAboutViewCenter(float angle)
void | panAboutViewCenter(float angle, const QVector3D &axis)
QQuaternion | panRotation(float angle) const
QVector3D | position() const
QMatrix4x4 | projectionMatrix() const
QCameraLens::ProjectionType | projectionType() const
float | right() const
void | roll(float angle)
void | rollAboutViewCenter(float angle)
QQuaternion | rollRotation(float angle) const
void | rotate(const QQuaternion &q)
void | rotateAboutViewCenter(const QQuaternion &q)
QQuaternion | rotation(float angle, const QVector3D &axis) const
void | tilt(float angle)
void | tiltAboutViewCenter(float angle)
QQuaternion | tiltRotation(float angle) const
float | top() const
Qt3DCore::QTransform * | transform() const
void | translate(const QVector3D &vLocal, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)
void | translateWorld(const QVector3D &vWorld, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)
QVector3D | upVector() const
QVector3D | viewCenter() const
QVector3D | viewVector() const

## Public Slots

void | setAspectRatio(float aspectRatio)
void | setBottom(float bottom)
void | setExposure(float exposure)
void | setFarPlane(float farPlane)
void | setFieldOfView(float fieldOfView)
void | setLeft(float left)
void | setNearPlane(float nearPlane)
void | setPosition(const QVector3D &position)
void | setProjectionMatrix(const QMatrix4x4 &projectionMatrix)
void | setProjectionType(QCameraLens::ProjectionType type)
void | setRight(float right)
void | setTop(float top)
void | setUpVector(const QVector3D &upVector)
void | setViewCenter(const QVector3D &viewCenter)
void | viewAll()
void | viewEntity(Qt3DCore::QEntity *entity)
void | viewSphere(const QVector3D &center, float radius)

## Signals

void | aspectRatioChanged(float aspectRatio)
void | bottomChanged(float bottom)
void | exposureChanged(float exposure)
void | farPlaneChanged(float farPlane)
void | fieldOfViewChanged(float fieldOfView)
void | leftChanged(float left)
void | nearPlaneChanged(float nearPlane)
void | positionChanged(const QVector3D &position)
void | projectionMatrixChanged(const QMatrix4x4 &projectionMatrix)
void | projectionTypeChanged(QCameraLens::ProjectionType projectionType)
void | rightChanged(float right)
void | topChanged(float top)
void | upVectorChanged(const QVector3D &upVector)
void | viewCenterChanged(const QVector3D &viewCenter)
void | viewVectorChanged(const QVector3D &viewVector)

## Detailed Description

## Member Type Documentation

### enum QCamera::CameraTranslationOption

This enum specifies how camera view center is translated

Constant | Value | Description
--- | --- | ---
`Qt3DRender::QCamera::TranslateViewCenter` | `0` | Translate the view center causing the view direction to remain the same
`Qt3DRender::QCamera::DontTranslateViewCenter` | `1` | Don't translate the view center causing the view direction to change

## Property Documentation

### aspectRatio : float

Holds the current aspect ratio.

Access functions:

float | aspectRatio() const
void | setAspectRatio(float aspectRatio)

Notifier signal:

void | aspectRatioChanged(float aspectRatio)

### bottom : float

Holds the current bottom of the camera.

This property is only relevant when projectionType is QCameraLens::OrthographicProjection.

Access functions:

float | bottom() const
void | setBottom(float bottom)

Notifier signal:

void | bottomChanged(float bottom)

### exposure : float

Holds the current exposure of the camera.

The default value is 0.0.

The MetalRoughMaterial in Qt 3D Extras is currently the only provided material that makes use of camera exposure. Negative values will cause the material to be darker, and positive values will cause it to be lighter.

Custom materials may choose to interpret the value differently.

Access functions:

float | exposure() const
void | setExposure(float exposure)

Notifier signal:

void | exposureChanged(float exposure)

### farPlane : float

Holds the current camera far plane. Objects that are farther from the camera than the farPlane will not be rendered.

Access functions:

float | farPlane() const
void | setFarPlane(float farPlane)

Notifier signal:

void | farPlaneChanged(float farPlane)

### fieldOfView : float

Holds the current vertical field of view in degrees.

Along with aspectRatio, this property determines how much of the scene is visible to the camera. In that respect you might think of it as analogous to choosing a wide angle (wide horizontal field of view) or telephoto (narrow horizontal field of view) lens depending on how much of a scene you want to capture.

fieldOfView is only relevant when projectionType is QCameraLens::PerspectiveProjection.

Access functions:

float | fieldOfView() const
void | setFieldOfView(float fieldOfView)

Notifier signal:

void | fieldOfViewChanged(float fieldOfView)

### left : float

Holds the current left of the camera.

This property is only relevant when projectionType is QCameraLens::OrthographicProjection.

Access functions:

float | left() const
void | setLeft(float left)

Notifier signal:

void | leftChanged(float left)

### `[read-only, since 5.14]` lens : Qt3DRender::QCameraLens* const

Holds the Qt3DRender::QCameraLens component of the camera.

This property was introduced in Qt 5.14.

Access functions:

Qt3DRender::QCameraLens * | lens() const

### nearPlane : float

Holds the current camera near plane. Objects that are closer to the camera than the nearPlane will not be rendered.

Access functions:

float | nearPlane() const
void | setNearPlane(float nearPlane)

Notifier signal:

void | nearPlaneChanged(float nearPlane)

### position : QVector3D

Holds the camera's position in coordinates relative to the parent entity.

Access functions:

QVector3D | position() const
void | setPosition(const QVector3D &position)

Notifier signal:

void | positionChanged(const QVector3D &position)

### projectionMatrix : QMatrix4x4

Holds the current projection matrix of the camera.

Access functions:

QMatrix4x4 | projectionMatrix() const
void | setProjectionMatrix(const QMatrix4x4 &projectionMatrix)

Notifier signal:

void | projectionMatrixChanged(const QMatrix4x4 &projectionMatrix)

### projectionType : Qt3DRender::QCameraLens::ProjectionType

Holds the type of the camera projection. The default value is QCameraLens::PerspectiveProjection.

- QCameraLens::OrthographicProjection - Parallel lines appear parallel. Objects appear the same size regardless of distance.
- QCameraLens::PerspectiveProjection - Parallel lines appear to meet in the distance. Objects appear to shrink the farther they are from the camera.
- QCameraLens::FrustumProjection
- QCameraLens::CustomProjection

Access functions:

QCameraLens::ProjectionType | projectionType() const
void | setProjectionType(QCameraLens::ProjectionType type)

Notifier signal:

void | projectionTypeChanged(QCameraLens::ProjectionType projectionType)

See also Qt3DRender::QCameraLens::ProjectionType.

### right : float

Holds the current right of the camera.

This property is only relevant when projectionType is QCameraLens::OrthographicProjection.

Access functions:

float | right() const
void | setRight(float right)

Notifier signal:

void | rightChanged(float right)

### top : float

Holds the current top of the camera.

This property is only relevant when projectionType is QCameraLens::OrthographicProjection.

Access functions:

float | top() const
void | setTop(float top)

Notifier signal:

void | topChanged(float top)

### `[read-only, since 5.14]` transform : Qt3DCore::QTransform* const

Holds the Qt3DCore::QTransform component of the camera.

This property was introduced in Qt 5.14.

Access functions:

Qt3DCore::QTransform * | transform() const

### upVector : QVector3D

Holds the camera's up vector in coordinates relative to the parent entity.

The up vector indicates which direction the top of the camera is facing. Think of taking a picture: after positioning yourself and pointing the camera at your target, you might rotate the camera left or right, giving you a portrait or landscape (or angled!) shot. upVector allows you to control this type of movement.

Access functions:

QVector3D | upVector() const
void | setUpVector(const QVector3D &upVector)

Notifier signal:

void | upVectorChanged(const QVector3D &upVector)

### viewCenter : QVector3D

Holds the camera's view center in coordinates relative to the parent entity.

Intuitively, the viewCenter is the location the camera is pointing at.

Access functions:

QVector3D | viewCenter() const
void | setViewCenter(const QVector3D &viewCenter)

Notifier signal:

void | viewCenterChanged(const QVector3D &viewCenter)

### `[read-only]` viewVector : const QVector3D

Holds the camera's view vector in coordinates relative to the parent entity.

This vector decribes the displacement from the camera (position) to its target (viewCenter).

Access functions:

QVector3D | viewVector() const

Notifier signal:

void | viewVectorChanged(const QVector3D &viewVector)

## Member Function Documentation

### QCamera::QCamera(Qt3DCore::QNode *parent = nullptr)

Creates a new QCamera instance with the specified parent.

### `[slot]` void QCamera::setAspectRatio(float aspectRatio)

Sets the camera's aspect ratio to aspectRatio.

Note: Setter function for property aspectRatio.

See also aspectRatio().

### `[slot]` void QCamera::setBottom(float bottom)

Sets the bottom of the camera to bottom.

Note: Setter function for property bottom.

See also bottom().

### `[slot]` void QCamera::setExposure(float exposure)

Sets the camera's exposure to exposure.

Note: Setter function for property exposure.

See also exposure().

### `[slot]` void QCamera::setFarPlane(float farPlane)

Sets the camera's far plane to farPlane

Note: Setter function for property farPlane.

See also farPlane().

### `[slot]` void QCamera::setFieldOfView(float fieldOfView)

Sets the camera's field of view to fieldOfView in degrees.

Note: Setter function for property fieldOfView.

See also fieldOfView().

### `[slot]` void QCamera::setLeft(float left)

Sets the left of the camera to left.

Note: Setter function for property left.

See also left().

### `[slot]` void QCamera::setNearPlane(float nearPlane)

Sets the camera's near plane to nearPlane.

Note: Setter function for property nearPlane.

See also nearPlane().

### `[slot]` void QCamera::setPosition(const QVector3D &position)

Sets the camera's position in 3D space to position.

Note: Setter function for property position.

See also position().

### `[slot]` void QCamera::setProjectionMatrix(const QMatrix4x4 &projectionMatrix)

Sets the camera's projection matrix to projectionMatrix.

Note: Setter function for property projectionMatrix.

See also projectionMatrix().

### `[slot]` void QCamera::setProjectionType(QCameraLens::ProjectionType type)

Sets the camera's projection type to type.

Note: Setter function for property projectionType.

See also projectionType().

### `[slot]` void QCamera::setRight(float right)

Sets the right of the camera to right.

Note: Setter function for property right.

See also right().

### `[slot]` void QCamera::setTop(float top)

Sets the top of the camera to top.

Note: Setter function for property top.

See also top().

### `[slot]` void QCamera::setUpVector(const QVector3D &upVector)

Sets the camera's up vector to upVector.

Note: Setter function for property upVector.

See also upVector().

### `[slot]` void QCamera::setViewCenter(const QVector3D &viewCenter)

Sets the camera's view center to viewCenter.

Note: Setter function for property viewCenter.

See also viewCenter().

### `[slot]` void QCamera::viewAll()

Rotates and moves the camera so that it's viewCenter is the center of the scene's bounding volume and the entire scene fits in the view port.

Note: Only works if the lens is in perspective or orthographic projection mode.

See also Qt3D.Render::Camera::projectionType.

### `[slot]` void QCamera::viewEntity(Qt3DCore::QEntity *entity)

Rotates and moves the camera so that it's viewCenter is the center of the entity's bounding volume and the entire entity fits in the view port.

Note: Only works if the lens is in perspective or orthographic projection mode.

See also Camera.projectionType.

### `[slot]` void QCamera::viewSphere(const QVector3D &center, float radius)

Rotates and moves the camera so that it's viewCenter is center and a sphere of radius fits in the view port.

Note: Only works if the lens is in perspective or orthographic projection mode.

See also Qt3D.Render::Camera::projectionType.

### Qt3DRender::QCameraLens *QCamera::lens() const

Returns the current lens.

Note: Getter function for property lens.

### `[invokable]` void QCamera::pan(float angle)

Adjusts the pan angle of the camera by angle in degrees.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::pan(float angle, const QVector3D &axis)

Adjusts the pan angle of the camera by angle in degrees on a chosen axis.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::panAboutViewCenter(float angle)

Adjusts the camera pan about view center by angle in degrees.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::panAboutViewCenter(float angle, const QVector3D &axis)

Adjusts the camera pan about view center by angle in degrees on axis.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` QQuaternion QCamera::panRotation(float angle) const

Returns the calculated pan rotation in relation to the angle in degrees taken in to adjust the camera's pan or left/right rotation on the Y axis.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::roll(float angle)

Adjusts the camera roll by angle in degrees.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::rollAboutViewCenter(float angle)

Adjusts the camera roll about view center by angle in degrees.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` QQuaternion QCamera::rollRotation(float angle) const

Returns the calculated roll rotation in relation to the angle in degrees taken in to adjust the camera's roll or lean left/right rotation on the Z axis.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::rotate(const QQuaternion &q)

Rotates the camera with the use of a Quaternion in q.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::rotateAboutViewCenter(const QQuaternion &q)

Rotates the camera about the view center with the use of a Quaternion in q.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` QQuaternion QCamera::rotation(float angle, const QVector3D &axis) const

Returns the calculated rotation in relation to the angle in degrees and chosen axis taken in.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::tilt(float angle)

Adjusts the tilt angle of the camera by angle in degrees.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::tiltAboutViewCenter(float angle)

Adjusts the camera tilt about view center by angle in degrees.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` QQuaternion QCamera::tiltRotation(float angle) const

Returns the calculated tilt rotation in relation to the angle in degrees taken in to adjust the camera's tilt or up/down rotation on the X axis.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### Qt3DCore::QTransform *QCamera::transform() const

Returns the camera's position via transform.

Note: Getter function for property transform.

### `[invokable]` void QCamera::translate(const QVector3D &vLocal, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)

Translates the camera's position and its view vector by vLocal in local coordinates. The option allows for toggling whether the view center should be translated.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.

### `[invokable]` void QCamera::translateWorld(const QVector3D &vWorld, Qt3DRender::QCamera::CameraTranslationOption option = TranslateViewCenter)

Translates the camera's position and its view vector by vWorld in world coordinates. The option allows for toggling whether the view center should be translated.

Note: This function can be invoked via the meta-object system and from QML. See Q_INVOKABLE.