【问题标题】:Cannot convert value of type 'SCNMatrix4' to expected argument type 'matrix_float4x4' (aka 'simd_float4x4')无法将“SCNMatrix4”类型的值转换为预期的参数类型“matrix_float4x4”(又名“simd_float4x4”)
【发布时间】:2018-01-15 23:16:03
【问题描述】:

当我尝试设置虚拟对象的 simdPosition 时,我在使用 iOS 11 ARKit(Scenekit - Xcode 9 beta)时遇到了这个错误。我需要知道是否可以将 SCNMatrix4 快速转换为 ma​​trix_float4x4。如果是的话如何转换。

【问题讨论】:

    标签: swift scenekit ios11 xcode9-beta arkit


    【解决方案1】:

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

    import SceneKit
    
    var mat4 = SCNMatrix4()
    
    let f4x4 = simd_float4x4(mat4)
    
    mat4 = SCNMatrix4(f4x4)
    

    【讨论】:

    • 如何在Objective-C中进行转换?
    • @Hecot,开始你自己的线程,或者最好开始将你的项目迁移到 Swift 中。
    • 感谢您的大力支持!
    【解决方案2】:

    你可以使用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
    

    【讨论】:

      【解决方案3】:

      Objective-C 也有同样的方法:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-18
        • 2021-02-26
        • 2023-03-24
        相关资源
        最近更新 更多