ARKit Place a SCNNode facing the camera

前端 未结 6 2030
挽巷
挽巷 2021-02-02 00:15

I\'m using ARKit to display 3D objects. I managed to place the nodes in the real world in front of the user (aka the camera). But I don\'t manage to make them to fa

6条回答
  •  逝去的感伤
    2021-02-02 00:59

    First, get the rotation matrix of the camera:

    let rotate = simd_float4x4(SCNMatrix4MakeRotation(sceneView.session.currentFrame!.camera.eulerAngles.y, 0, 1, 0))
    

    Then, combine the matrices:

    let rotateTransform = simd_mul(r.worldTransform, rotate)
    

    Lastly, apply a transform to your node, casting as SCNMatrix4:

    node.transform = SCNMatrix4(rotateTransform)
    

    Hope that helps

    EDIT

    here how you can create SCNMatrix4 from simd_float4x4

       let rotateTransform = simd_mul(r.worldTransform, rotate)
    
      node.transform =  SCNMatrix4(m11: rotateTransform.columns.0.x, m12: rotateTransform.columns.0.y, m13: rotateTransform.columns.0.z, m14: rotateTransform.columns.0.w, m21: rotateTransform.columns.1.x, m22: rotateTransform.columns.1.y, m23: rotateTransform.columns.1.z, m24: rotateTransform.columns.1.w, m31: rotateTransform.columns.2.x, m32: rotateTransform.columns.2.y, m33: rotateTransform.columns.2.z, m34: rotateTransform.columns.2.w, m41: rotateTransform.columns.3.x, m42: rotateTransform.columns.3.y, m43: rotateTransform.columns.3.z, m44: rotateTransform.columns.3.w)
    

提交回复
热议问题