#結論
ものすごくニッチなんですが、iPhoneカメラの内部パラメーターを取得する方法。
公式ドキュメント がとてもわかりづらかったので。。。。
guard let currentFrame = sceneView.session.currentFrame else {
print("Error: Current frame is nil. [\(#function)]")
return
}
let intrinsics = currentFrame.camera.intrinsics
print(intrinsics)
//simd_float3x3([[1579.0884, 0.0, 0.0)], [0.0, 1579.0884, 0.0)], [942.4918, 712.6197, 1.0)]])
内部パラメーターについて
画像上の点をカメラからの位置情報に置き換えるためのパラメーターです。
基本的にはカメラに固有のものなんですが、焦点距離によって値が変わるので、iPhone等モバイルデバイスは使うなら毎回取得したほうが良いです。
引用:内部パラメータの意味を解説してみる | NO MORE! 車輪の再発明
#行列のパラメーターについて (雑談)
行列のパラメーターの割り振りは、日本語だと"行""列"の順番になるイメージですが、Appleは逆なんですね。
例えばSCNMatrix4で定義される、init(m11: Float, m12: Float, m13: Float, m14: Float, m21: Float, m22: Float, m23: Float, m24: Float,m31: Float, m32: Float, m33: Float, m34: Float,m41: Float, m42: Float, m43: Float, m44: Float)
は、パッと見 m11,m12,m13,m14が1行目にありそうです。
ですが、これは数学的には下記と同値になります。(少しはまった)
\begin{matrix}
m11 & m21 & m31 & m41 \\
m12 & m22 & m32 & m42 \\
m13 & m23 & m33 & m43 \\
m14 & m24 & m34 & m44 \\
\end{matrix}
もしかしてこれが一般的なんでしょうか。。
#Swiftについて(雑談)
いまさらSwift触って2ヶ月なんですが、言語としては無駄が少なくわかりやすいな〜と思うものの、ドキュメントに実装例ないのは厳しくないですか、、、
内部パラメーターの件も、いろんなクラスにまたがっててすぐにわからなかったです。。。個々では載ってるのですが。