はじめに
ARアプリを作成していて、x、y、z軸におけるオブジェクトのポジションについては理解しやすいですが、
回転や傾きになるとよくわかんなかったので調べてみました。
回転させる方法はいくつかあるようですが、今回はeulerAnglesプロパティを使用しています。
eulerAngles
このプロパティはピッチ(x軸)、ヨー(y軸)、ロール(z軸)を基準にして、ノードのラジアン(角度)を設定するものです。
ラジアンについてはこのサイトのおかげで理解できました。
普段使っている180°や90°は度数法という角度の測り方ですが、Xcodeでは度数法ではなくラジアンを使用しています。
ですのでeulerAnglesプロパティに対して直接90と設定しても思った結果が得られません。
開発環境
回転の状態が分かりやすいように今回はSCNPlaneの表面に対してイメージ画像を貼り付けて、どのように回転しているか確認しています。
以下をデフォルト状態としてx軸、y軸、z軸に対して回転させています。
SCNPlaneをデフォルトで表示した場合#AR #ARKit #ios #Xcode pic.twitter.com/kfbtO3EAhF
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ピッチ(x軸)に対して-90°回転させる
planeNode.eulerAngles.x = -.pi / 2
SCNPlaneをオイラー角x軸に対して-90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/r02xapY27g
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ピッチ(x軸)に対して90°回転させる
planeNode.eulerAngles.x = .pi / 2
SCNPlaneをオイラー角x軸に対して90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/phuEkONIyI
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ヨー(y軸)に対して-90°回転させる
planeNode.eulerAngles.y = -.pi / 2
SCNPlaneをオイラー角y軸に対して-90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/SaxCb7XZSR
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ヨー(y軸)に対して90°回転させる
planeNode.eulerAngles.y = .pi / 2
SCNPlaneをオイラー角y軸に対して90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/tAPxsi1F6I
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ロール(z軸)に対して-90°回転させる
planeNode.eulerAngles.z = -.pi / 2
SCNPlaneをオイラー角z軸に対して-90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/idBDGLhkqz
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ロール(z軸)に対して90°回転させる
planeNode.eulerAngles.z = .pi / 2
SCNPlaneをオイラー角z軸に対して90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/K2QOo28EO0
— TatsunoriMorita (@king_of_morita) 2019年1月14日
まとめ
.Pi / 2でラジアン角度の90°を計算しています。これは方程式があるので求めたい角度を代入すれば簡単に計算することができます。
ツイッターの動画投稿方法を失敗して分かりにくくて申し訳ないです。