我想为 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)
)。
任何帮助将不胜感激!