无法将类型 'SCNMatrix4' 的值转换为预期的参数类型 'matrix_float4x4'(又名 'simd_float4x4')

Cannot convert value of type 'SCNMatrix4' to expected argument type 'matrix_float4x4' (aka 'simd_float4x4')

我在使用 iOS 11 ARKit(Scenekit - Xcode 9 beta) 尝试设置虚拟对象的 simdPosition 时遇到此错误。我需要知道是否可以在 swift 中将 SCNMatrix4 转换为 matrix_float4x4。如果可以怎么转换。

您可以使用 SCNMatrix4ToMat4:

let matrix = SCNMatrix4()               // matrix is SCNMatrix4
let float4x4 = SCNMatrix4ToMat4(matrix) // float4x4 is matrix_float4x4

如果您想将 SCNMatrix4 转换为 matrix_float4x4,请使用 SCNMatrix4FromMat4:

let matrix1 = SCNMatrix4FromMat4(float4x4) // matrix1 is SCNMatrix4

使用 iOS SDK 11,您可以使用初始化程序在 SCNMatrix4simd_float4x4 之间进行转换。

import SceneKit

var mat4 = SCNMatrix4()

let f4x4 = simd_float4x4(mat4)

mat4 = SCNMatrix4(f4x4)

Objective-C方法相同:

[self.sceneView.session setWorldOrigin:SCNMatrix4ToMat4(node.pivot)];