Qt Quick 3D - RuntimeLoader Example▲
This example shows how to implement a simple asset viewer using the RuntimeLoader.
See the introductory example documentation for an explanation of how to set up a basic scene. Once we have the scene set up we can add the RuntimeLoader item:
RuntimeLoader {
id
:
importNode
source
:
importUrl
instancing
:
instancingButton.checked ? instancing :
null
onBoundsChanged
:
helper.updateBounds(bounds)
}
Loading an asset is done by setting the RuntimeLoader's source property. In this example the source is bound to the importUrl which will be changed when the user selects a file in the file-dialog.
Assuming the asset can be loaded, the content will be created as children of the RuntimeLoader importNode. Note that the RuntimeLoader is a Node type, and since it is also the root node for the loaded asset, any transforms applied to the importNode will also affect its children.
Error handling▲
If an asset fails to load then the RuntimeLoader's status property will be set to Error. The RuntimeLoader's errorString can then be queried to get a more detailed description of the error.
In this example we will be displaying the error message in a red message box in the middle of the screen, like this:
Rectangle
{
id
:
messageBox
visible
:
importNode.status !==
RuntimeLoader.Success
color
:
"red"
width
:
parent.width *
0.8
height
:
parent.height *
0.8
anchors.centerIn
:
parent
radius
:
Math.min(width
, height
) /
10
opacity
:
0.6
Text
{
anchors.fill
:
parent
font.pixelSize
:
36
text
:
"Status: "
+
importNode.errorString +
"\nPress \"Import...\" to import a model"
color
:
"white"
wrapMode
:
Text.Wrap
horizontalAlignment
:
Text.AlignHCenter
verticalAlignment
:
Text.AlignVCenter
}
}
Moving the camera▲
To make it possible to change the position of the camera we use the WasdController from the Helpers module and bind it to our camera, like this:
OrbitCameraController {
id
:
orbitController
origin
:
orbitCameraNode
camera
:
orbitCamera
enabled
:
helper.orbitControllerEnabled
}
WasdController {
id
:
wasdController
controlledObject
:
wasdCamera