首页 > 解决方案 > 为什么在 Swift 4.2 中从 SceneKit 节点转换为数据时出现“inout simd_float3”(又名“inout float3”)不可转换为“float3”错误?

问题描述

我正在使用 SceneKit 和 ARKit。在委托方法中调用以下函数:

func prepare(videoFrame: OTVideoFrame) {
    let cameraNode = sceneView.scene.rootNode.childNodes.first {
        $0.camera != nil
    }
    if let node = cameraNode, let cam = node.camera {
        let data = Data(fromArray: [
            node.simdPosition.x,  
            node.simdPosition.y,
            node.simdPosition.z,
            node.eulerAngles.x,
            node.eulerAngles.y,
            node.eulerAngles.z,
            Float(cam.zNear),
            Float(cam.fieldOfView)
            ])

        var err: OTError?
        videoFrame.setMetadata(data, error: &err)
        if let e = err {
            print("Error adding frame metadata: \(e.localizedDescription)")
        }
    }
}

我在该node.simdPosition.x行收到以下错误:

'inout simd_float3' (aka 'inout float3') is not convertible to 'float3'

我该如何解决这个错误?

标签: iosswiftxcodeopentok

解决方案


推荐阅读