从技术预览版变更的 Qt Quick 3D 物理API
从 Qt 6.5.0 版本开始,Qt Quick 3D 物理模块已不再处于技术预览状态。由于 API 反馈和审查过程,进行了一些与源代码不兼容的更改。
大多数更改是重命名类型和属性,以提高与其他 API的一致性,并使名称更具描述性。最显著的更改是将 DynamicsWorld
改名为 PhysicsWorld,这将影响所有应用程序。
最重要的行为更改是处理 运动学刚体。不再通过使用 Node 属性(如 position
、rotation
等)来更改运动学刚体的位置/朝向,而是通过使用新的属性:kinematicPosition、kinematicEulerRotation、kinematicRotation 和 kinematicPivot 来实现。进行此更改的原因是为了确保运动学刚体的视觉运动与其余仿真同步,而不是早于一步发生。
在 DynamicRigidBody.density 属性中不再将负值(和零)视为特殊情况。相反,有两种新的 massMode 枚举值取代了 Density
默认密度 | 通过 PhysicsWorld.defaultDensity 定义身体的密度。这是默认设置。 |
自定义密度 | 通过 density 属性定义身体的密度。 |
已将 enableTriggerReports
属性重命名为 sendTriggerReports。此外,当物理对象进入触发身体时,通过设置 receiveTriggerReports 可以通知物理对象。
以下是所有 API 变更的完整列表
- CollisionShape:
- 将 enableDebugView 重命名为 enableDebugDraw
- 将抽象基类型
CollisionNode
重命名为 PhysicsNode- 将 enableTriggerReports 改为 sendTriggerReports 和 receiveTriggerReports
- CharacterController
- 将
speed
重命名为 movement
- 将
- ConvexMeshShape
- 将
meshSource
重命名为 source
- 将
- HeightFieldShape
- 将
heightMap
重命名为 source
- 将
- TriangleMeshShape
- 将
meshSource
重命名为 source
- 将
- PhysicsWorld(从
DynamicsWorld
重命名而来)- 将
forceDebugView
重命名为 forceDebugDraw - 将
minTimestep
/maxTimestep
重命名为 minimumTimestep/maximumTimestep - 删除了 sceneNode
- 添加了 scene
- 添加了 viewport
- 将
- DynamicRigidBody
- 将
axisLockLinearX/Y/Z
属性合并为单个属性 linearAxisLock,该属性接受一个位域 - 将
axisLockAngularX/Y/Z
属性合并为单个属性 angularAxisLock,该属性接受一个位域 - 添加了新属性 kinematicPosition、kinematicEulerRotation、kinematicRotation 和 kinematicPivot
- 将
Density
枚举值更改为 DefaultDensity/CustomDensity 并删除了对负值的特殊处理。 - 用方法 setLinearVelocity 替换
linearVelocity
属性。 - 用方法 setAngularVelocity 替换
angularVelocity
属性。
- 将
© 2024 Qt 公司。此处包含的文档贡献归各自所有者所有。提供的文档是根据自由软件基金会发布的 GNU 自由文档许可协议版本 1.3 许可的。Qt 及其相关标志是芬兰及/或世界其他地区的 Qt 公司商标。所有其他商标均属于其各自所有者。