python - 为什么 FirstPersonCameraController {camera: camera } 不能与 QML ApplicationWindow 一起使用?
问题描述
我正在 ApplicationWindow 中从 PyQT5 加载 QML 3D 场景。但是,我无法用鼠标平移和旋转我的自定义模型。
import QtQuick.Controls 2.5
import QtQuick.Scene3D 2.12
import Qt3D.Core 2.12
import Qt3D.Render 2.12
import Qt3D.Input 2.12
import Qt3D.Extras 2.13
import QtQuick 2.12 as QQ2
ApplicationWindow{
Scene3D {
id: scene3d
anchors.fill: parent
anchors.margins: 10
focus: true
aspects: "input"
FirstPersonCameraController {
camera: camera
}
Entity {
id: sceneRoot
Camera {
id: camera
projectionType: CameraLens.PerspectiveProjection
fieldOfView: 45
nearPlane : 0.1
farPlane : 1000.0
position: Qt.vector3d( 0.0, 0.0, 40.0 )
upVector: Qt.vector3d( 0.0, 1.0, 1.0 )
viewCenter: Qt.vector3d( 0.0, 0.0, 0.0 )
PointLight{
id:pl3
}
}
ObjectPicker{
id: spherePicker
onPressed:{
console.log("Sphere clicked")
}
}
components: [
RenderSettings {
activeFrameGraph: ForwardRenderer {
camera: camera
clearColor: "transparent"
}
},
InputSettings { }
]
PhongMaterial {
id: material
diffuse:Qt.rgba(0.5,0.5,0,1)
}
PointLight{
id:pl2
}
Mesh {
id: esh
source: "egg1.obj"
}
Transform {
id: torusTransform
scale3D: Qt.vector3d(5, 5, 5)
rotation: fromAxisAndAngle(Qt.vector3d(1, 1, 0), 45)
}
Entity {
id: torusEntity
components: [ esh, material, torusTransform,spherePicker ]
}
}
}
}
模型加载正确,只是我无法用鼠标控制它的旋转。
我认为这与“FirstPersonCameraController”有关
解决方案
我目前无法亲自验证这一点,但我假设您必须FirstPersonCameraController
在名为sceneRoot
.
现在它是Scene3D
. 尝试将其移至Camera
节点下方,看看是否有效。
顺便说一句:我假设您的意思是您无法控制相机,这就是您所说的
模型加载正确,只是我无法用鼠标控制它的旋转。
推荐阅读
- postgresql - 错误请求:CSRF 令牌不匹配 - Ubuntu 上的 pgadmin4
- python - 用“return”和多个不必要的空格分隔的多行的正则表达式
- javascript - 通过嵌套对象的属性修改嵌套对象的数组
- python - 同步实现异步抽象方法
- visual-studio-code - Visual Studio Code 的 arduino 设置
- django - 找不到页面 404 Django 和 Python
- python - 供用户在 Python 中选择输入模式的函数
- linux - 无法从树莓派 4 上的 UART 串行 RX-TX 引脚读取数据
- javascript - 使用另一个登录服务器进行登录验证
- java - 有什么方法可以从 Firebase Firestore 库中的查询对象获取有关查询的数据?