【发布时间】:2018-01-15 23:16:03
【问题描述】:
当我尝试设置虚拟对象的 simdPosition 时,我在使用 iOS 11 ARKit(Scenekit - Xcode 9 beta)时遇到了这个错误。我需要知道是否可以将 SCNMatrix4 快速转换为 matrix_float4x4。如果是的话如何转换。
【问题讨论】:
标签: swift scenekit ios11 xcode9-beta arkit
当我尝试设置虚拟对象的 simdPosition 时,我在使用 iOS 11 ARKit(Scenekit - Xcode 9 beta)时遇到了这个错误。我需要知道是否可以将 SCNMatrix4 快速转换为 matrix_float4x4。如果是的话如何转换。
【问题讨论】:
标签: swift scenekit ios11 xcode9-beta arkit
使用 iOS SDK 11,您可以使用初始化程序在 SCNMatrix4 和 simd_float4x4 之间进行转换。
import SceneKit
var mat4 = SCNMatrix4()
let f4x4 = simd_float4x4(mat4)
mat4 = SCNMatrix4(f4x4)
【讨论】:
你可以使用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
【讨论】:
Objective-C 也有同样的方法:
[self.sceneView.session setWorldOrigin:SCNMatrix4ToMat4(node.pivot)];
【讨论】: