gpt4 book ai didi

swift - 如何在 RealityKit 中与 3D 对象交互

转载 作者:行者123 更新时间:2023-11-28 05:40:27 26 4
gpt4 key购买 nike

3D 对象的交互问题。我发现了 RealityKit 的一些 beta 函数,例如 PhysicsBodyComponent、applyImpulse、addForce、applyAngularImpulse 等。

我试图将物理特性添加到对象“花瓶”中,并在点击或类似事件时产生对象的冲动。

真的很奇怪,执行命令后,物理特性正常添加,同时脉冲和力没有添加到对象中(请参见下面的调试输出)。

enter image description here

调试打印输出:

Something 1 Optional(RealityKit.PhysicsBodyComponent(mode: RealityKit.PhysicsBodyMode.dynamic, massProperties: RealityKit.PhysicsMassProperties(mass: 0.2, inertia: SIMD3(0.1, 0.1, 0.1), centerOfMass: (position: SIMD3(0.0, 0.0, 0.0), orientation: simd_quatf(real: 1.0, imag: SIMD3(0.0, 0.0, 0.0)))), material: RealityKit.PhysicsMaterialResource, isTranslationLocked: (x: false, y: false, z: false), isRotationLocked: (x: false, y: false, z: false), isContinuousCollisionDetectionEnabled: false, teleport: false, userForce: SIMD3(0.0, 0.0, 0.0), userTorque: SIMD3(0.0, 0.0, 0.0), userLinearImpulse: SIMD3(0.0, 0.0, 0.0), userAngularImpulse: SIMD3(0.0, 0.0, 0.0)))

Something 5 Optional(RealityKit.PhysicsBodyComponent(mode: RealityKit.PhysicsBodyMode.dynamic, massProperties: RealityKit.PhysicsMassProperties(mass: 0.2, inertia: SIMD3(0.1, 0.1, 0.1), centerOfMass: (position: SIMD3(0.0, 0.0, 0.0), orientation: simd_quatf(real: 1.0, imag: SIMD3(0.0, 0.0, >0.0)))), material: RealityKit.PhysicsMaterialResource, isTranslationLocked: (x: false, y: false, z: false), isRotationLocked: (x: false, y: false, z: false), isContinuousCollisionDetectionEnabled: false, teleport: false, userForce: SIMD3(0.0, 0.0, 0.0), userTorque: SIMD3(0.0, 0.0, 0.0), userLinearImpulse: SIMD3(0.0, 0.0, 0.0), userAngularImpulse: SIMD3(0.0, 0.0, 0.0)))

正如我们所见,函数不会向对象“花瓶”添加冲量和力。也许我做错了什么。

最佳答案

我认为您不应该直接创建 ModelEntity 的实例。我认为这是仅表示网格的 Entity 类的内部组件。您可以直接使用 RealityKit 中的组件来增强交互/动画。这些适用于整个实体对象。我认为这类似于创建 Metal View 的方式,您需要它由 Core Animation 层支持才能访问用户交互。

如果您查看 SwiftStrike sample application它们不直接实例化 ModelEntity,这让我相信在 Entity 对象之外创建它们不是最佳实践。

我相信您会通过 Reality Composer 将花瓶添加到项目中。您可以在那里应用 Material 和碰撞。您还可以添加响应触摸等行为。然后您可以通过 Xcode 中的 reality composer 文件访问花瓶,并将组件添加到将转换其位置的花瓶实体。所有实体都有一个转换组件,记录在案 here .

RealityKit 感觉它的设计目的是为了尽可能多地从程序员那里抽象出代码,所以很多底层架构并没有真正公开或记录下来。它的组织方式也不像我组织的那样,但我对实体组件设计模式不太熟悉。

如果您不喜欢 RealityKit 的布局方式,您还可以选择使用 SceneKit 作为渲染器。这并没有抽象出太多的功能,并允许您直接在对象上使用 Core Animation 命令。

关于swift - 如何在 RealityKit 中与 3D 对象交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56932621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com