Qt3D Core: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=Qt3D Core=


==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'''<br /> A Component that contains a list of transformation<br />
 
==========


* '''LookAtTransform'''<br /> Performs a LookAtTransform.
::* '''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.


* '''MatrixTransform'''<br /> Performs a transformation based on the Matrix provided.
::* '''TranslateTransform'''
::Performs a translation.  


==========
::* '''RotateTransform'''
::Performs a rotation around an axis.


* '''TranslateTransform'''<br /> Performs a translation.
::* '''ScaleTransform'''
::Performs a scaling.  


==========
http://i58.tinypic.com/2poe3bn.png


* '''RotateTransform'''<br /> Performs a rotation around an axis.
==== Others Components ====


==========
::* '''CameraLens'''
::Contains the lens properties of a Camera.
'''''' Projection Type
'''''' Far plane
'''''' Near plane
'''''' Field of view
'''''' Aspect ratio =====


* '''ScaleTransform'''<br /> Performs a scaling.
=== Custom elements ===


[[Image:2poe3bn.png]]
::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 =====


====Others Components====
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>


* '''CameraLens'''<br /> Contains the lens properties of a Camera.
== Resources Management ==
** 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'''<br /> The Camera elements is an Entity that contains a Transform and a CameraLens.<br />
 
==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.<br /> This should lower the amount of cache misses and speed up rendering.
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
* QBoundedCircularBuffer
===Categories:===
* [[:Category:Developing with Qt|Developing_with_Qt]]
** [[:Category:Developing with Qt::Qt3D|Qt3D]]

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.

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.
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