使用 Model I/O 快速将动画 MDLMesh 写入 collada

问题描述 投票:0回答:0

我想为 MDLObject 制作动画,然后将其导出到 .dae 文件。目前,仅导出对象网格,但没有动画。我在网上找不到任何关于如何正确设置对象动画的文章,所以我来这里寻求帮助。

这是我的代码:

首先,我设置了相机变换:

var cameraTransform = MDLTransform()

然后我写给转换:

let transform = frame.camera.transform
let rotation = frame.camera.eulerAngles
let position = transform.columns.3
let elapsedTime = frame.timestamp - firstUpdateTime!

cameraTransform.setTranslation(position[SIMD3(0,1,2)], forTime: elapsedTime)
cameraTransform.setRotation(rotation, forTime: elapsedTime)

并将变换分配给网格和场景:

let object = MDLMesh(boxWithExtent: .init(0.1, 0.1, 0.1), segments: .init(10, 10, 10), inwardNormals: false, geometryType: .triangles, allocator: nil)
object.name = "Camera Transform"
object.transform = ARSessionManager().cameraTransform
let asset = MDLAsset()
asset.add(object)

最后,我导出文件:

try! asset.export(to: colladaFileURL)

这将吐出一个包含立方体但没有动画的文件。 cameraTransform 在我的

ARSessionDelegate
的帧更新功能中,当我在其中添加打印时,我也看到值被吐出。 (例如
SIMD3<Float>(-0.522029, -0.40510324, -1.5561341)
)。

任何帮助将不胜感激!

swift scenekit arkit apple-model-io
© www.soinside.com 2019 - 2024. All rights reserved.