[Interest] Object Picking using SceneLoader (Qt 5.7)
Eric Biagiotti
eric.biagiotti at tseboston.com
Thu Sep 1 16:59:50 CEST 2016
Hi,
I am creating a simple 3D viewer using QML and Qt3D. I just need to dynamically add objects to the surface of a mesh when the user clicks. I am using the SceneLoader component to load an obj file and its corresponding mtl file, but I can't seem to get an ObjectPicker component to work alongside the SceneLoader.
Is ObjectPicker supposed to work along side a SceneLoader component? Is it more likely that the click event just isn't making it to the ObjectPicker? In the example code below, replacing the SceneLoader with a SphereMesh works. Any insight would be appreciated.
Item {
id: modelViewerItem
anchors.fill: parent
visible: true
property vector3d defaultCameraPosition: Qt.vector3d(0.0, 0.0, 300.0)
property vector3d defaultCameraViewCenter: Qt.vector3d(0.0, 0.0, 0.0)
Rectangle {
id: scene
anchors.fill: parent
Scene3D {
id: scene3d
anchors.fill: parent
anchors.margins: 0
aspects: ["input", "render", "logic"]
cameraAspectRatioMode: Scene3D.AutomaticAspectRatio
Entity {
id: sceneRoot
Camera {
id: camera
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
nearPlane : 0.1
farPlane : 1000.0
position: defaultCameraPosition
upVector: Qt.vector3d(0.0, 1.0, 0.0)
viewCenter: defaultCameraViewCenter
}
components: [
RenderSettings {
activeFrameGraph: ForwardRenderer {
camera: camera
}
},
InputSettings { }
]
Entity {
id: faceEntity
components: [
SceneLoader {
id: faceScene
source: "file:///D:/generatedModel.obj"
},
ObjectPicker {
id: picker
onClicked: {
console.log("Picked")
}
},
Transform {
id: faceTransform
translation: Qt.vector3d(0, 0, 30)
}
]
}
Entity {
id: spotLight
components: [
Transform {
id: spotLightTransform
translation: camera.position
},
SpotLight {
id: mainLight
parent: camera
enabled: true
intensity: 1.5
localDirection: Qt.vector3d(0,0,0)
}
]
}
}
}
}
}
Thanks for your help,
Eric
More information about the Interest
mailing list