I am trying to print the ARsession's parameters like the following. It works when I do it within a session.
func session(_ session: ARSession, didUpdate frame: ARFrame) {
guard let arCamera = session.currentFrame?.camera else { return }
print("ARCamera ProjectionMatrix = \(arCamera.projectionMatrix)")
}
Result:
ARCamera ProjectionMatrix = simd_float4x4([[1.774035, 0.0, 0.0, 0.0], [0.0, 2.36538, 0.0, 0.0], [-0.0011034012, 0.00073593855, -0.99999976, -1.0], [0.0, 0.0, -0.0009999998, 0.0]])
However, I would like to access/print the parameters when a button is clicked. I tried the following:
@IBAction private func startPressed() {
print(ARSession.init().currentFrame?.camera.projectionMatrix)
}
But the result above returns nil
. Am I missing some obvious and can someone help me on how to correct this so I can properly access the camera parameters when the button is clicked?
Thanks in advance!
You are initializing a new session by calling
ARSession.init()
, so there is no wonder it returnsnil
. You should use an instance of currently runningARSession
instead. Assuming you are usingARSCNView
to render the AR experience, correct code would look like this: