Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
Qt3D Core: Difference between revisions
No edit summary |
Henri Vikki (talk | contribs) No edit summary |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
==Core elements== | |||
[[Category:Developing_with_Qt::Qt3D]] | |||
== Core elements == | |||
The Core exposes a few default elements that make up all Qt3D scenes. | The Core exposes a few default elements that make up all Qt3D scenes. | ||
===Node=== | === Node === | ||
A base Qt3D element. | A base Qt3D element. | ||
===Entity=== | === Entity === | ||
An Entity is a Node which has a list of Component properties. This is the type of elements that are actually rendered. | An Entity is a Node which has a list of Component properties. This is the type of elements that are actually rendered. | ||
===Component=== | === Component === | ||
Components are elements that are used to further specify an Entity. | Components are elements that are used to further specify an Entity. | ||
====Transformations | ==== Transformations ==== | ||
* ''' | ::* '''Transform''' | ||
::A Component that contains a list of transformation | |||
<code>Transform { | |||
id : transform_0 | |||
Rotate { | |||
axis : Qt.vector3d(0,1,0) | |||
angle : 30 | |||
} | |||
Scale { | |||
scale3D : Qt.vector3d(0.5, 0.25, 0.5) | |||
} | |||
Translate { | |||
dx : –9; dy : 2; dz : 20 | |||
} | |||
}</code> | |||
::* '''LookAtTransform''' | |||
::Performs a LookAtTransform. | |||
::* '''MatrixTransform''' | |||
::Performs a transformation based on the Matrix provided. | |||
* ''' | ::* '''TranslateTransform''' | ||
::Performs a translation. | |||
::* '''RotateTransform''' | |||
::Performs a rotation around an axis. | |||
* ''' | ::* '''ScaleTransform''' | ||
::Performs a scaling. | |||
http://i58.tinypic.com/2poe3bn.png | |||
==== Others Components ==== | |||
::* '''CameraLens''' | |||
::Contains the lens properties of a Camera. | |||
'''''' Projection Type | |||
'''''' Far plane | |||
'''''' Near plane | |||
'''''' Field of view | |||
'''''' Aspect ratio ===== | |||
=== Custom elements === | |||
::Custom elements can be created by subclassing an Entity and predefining a set of properties. | |||
::* '''Camera''' | |||
::The Camera elements is an Entity that contains a Transform and a CameraLens. | |||
<code>Camera { | |||
id : camera2 ===== | |||
lens : CameraLens { | |||
projectionType: CameraLens.PerspectiveProjection | |||
fieldOfView: 45 | |||
aspectRatio: 16/9 | |||
nearPlane : 0.01 | |||
farPlane : 1000.0 | |||
} | |||
transform : Transform { | |||
LookAt { | |||
position: Qt.vector3d( 0.0, –1.0, –5.0 ) | |||
upVector: Qt.vector3d( 0.0, 1.0, 0.0 ) | |||
viewCenter: Qt.vector3d( 0.0, 2.0, 10.0 ) | |||
} | |||
Rotate { | |||
axis : Qt.vector3d(0, 0, 1) | |||
angle : 40 | |||
} | |||
} | |||
}</code> | |||
== Resources Management == | |||
==Resources Management== | |||
To achieve high rendering performances, the memory access to the resources has to be properly managed and structured. Therefore, a set of templated resources management oriented classes have been developed in the core of Qt3D. | To achieve high rendering performances, the memory access to the resources has to be properly managed and structured. Therefore, a set of templated resources management oriented classes have been developed in the core of Qt3D. | ||
Line 72: | Line 102: | ||
* QListResourcesManager | * QListResourcesManager | ||
The use of a Handle systems allows for resources to be easily accessed and managed while allowing for memory structure to be realigned so as to maintain a contiguous memory alignment and reduce fragmentation. | The use of a Handle systems allows for resources to be easily accessed and managed while allowing for memory structure to be realigned so as to maintain a contiguous memory alignment and reduce fragmentation. | ||
This should lower the amount of cache misses and speed up rendering. | |||
Other Resources management oriented classes include : | Other Resources management oriented classes include : | ||
* QCircularBuffer | * QCircularBuffer | ||
Latest revision as of 08:19, 30 March 2015
Core elements
The Core exposes a few default elements that make up all Qt3D scenes.
Node
A base Qt3D element.
Entity
An Entity is a Node which has a list of Component properties. This is the type of elements that are actually rendered.
Component
Components are elements that are used to further specify an Entity.
Transformations
- Transform
- A Component that contains a list of transformation
Transform {
id : transform_0
Rotate {
axis : Qt.vector3d(0,1,0)
angle : 30
}
Scale {
scale3D : Qt.vector3d(0.5, 0.25, 0.5)
}
Translate {
dx : –9; dy : 2; dz : 20
}
}
- LookAtTransform
- Performs a LookAtTransform.
- MatrixTransform
- Performs a transformation based on the Matrix provided.
- TranslateTransform
- Performs a translation.
- RotateTransform
- Performs a rotation around an axis.
- ScaleTransform
- Performs a scaling.
Others Components
- CameraLens
- Contains the lens properties of a Camera.
' Projection Type ' Far plane ' Near plane ' Field of view ' Aspect ratio =====
Custom elements
- Custom elements can be created by subclassing an Entity and predefining a set of properties.
- Camera
- The Camera elements is an Entity that contains a Transform and a CameraLens.
- Custom elements can be created by subclassing an Entity and predefining a set of properties.
Camera {
id : camera2 =====
lens : CameraLens {
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
aspectRatio: 16/9
nearPlane : 0.01
farPlane : 1000.0
}
transform : Transform {
LookAt {
position: Qt.vector3d( 0.0, –1.0, –5.0 )
upVector: Qt.vector3d( 0.0, 1.0, 0.0 )
viewCenter: Qt.vector3d( 0.0, 2.0, 10.0 )
}
Rotate {
axis : Qt.vector3d(0, 0, 1)
angle : 40
}
}
}
Resources Management
To achieve high rendering performances, the memory access to the resources has to be properly managed and structured. Therefore, a set of templated resources management oriented classes have been developed in the core of Qt3D.
- QHandle
- QArrayResourcesManager
- QListResourcesManager
The use of a Handle systems allows for resources to be easily accessed and managed while allowing for memory structure to be realigned so as to maintain a contiguous memory alignment and reduce fragmentation. This should lower the amount of cache misses and speed up rendering.
Other Resources management oriented classes include :
- QCircularBuffer