Posted at

ARKitのノードの回転方法


はじめに

ARアプリを作成していて、x、y、z軸におけるオブジェクトのポジションについては理解しやすいですが、

回転や傾きになるとよくわかんなかったので調べてみました。

回転させる方法はいくつかあるようですが、今回はeulerAnglesプロパティを使用しています。

eulerAngles

このプロパティはピッチ(x軸)、ヨー(y軸)、ロール(z軸)を基準にして、ノードのラジアン(角度)を設定するものです。

ラジアンについてはこのサイトのおかげで理解できました。

普段使っている180°や90°は度数法という角度の測り方ですが、Xcodeでは度数法ではなくラジアンを使用しています。

ですのでeulerAnglesプロパティに対して直接90と設定しても思った結果が得られません。


開発環境

回転の状態が分かりやすいように今回はSCNPlaneの表面に対してイメージ画像を貼り付けて、どのように回転しているか確認しています。

以下をデフォルト状態としてx軸、y軸、z軸に対して回転させています。



ピッチ(x軸)に対して-90°回転させる

planeNode.eulerAngles.x = -.pi / 2


ピッチ(x軸)に対して90°回転させる

planeNode.eulerAngles.x = .pi / 2


ヨー(y軸)に対して-90°回転させる

planeNode.eulerAngles.y = -.pi / 2


ヨー(y軸)に対して90°回転させる

planeNode.eulerAngles.y = .pi / 2


ロール(z軸)に対して-90°回転させる

planeNode.eulerAngles.z = -.pi / 2


ロール(z軸)に対して90°回転させる

planeNode.eulerAngles.z = .pi / 2


まとめ

.Pi / 2でラジアン角度の90°を計算しています。これは方程式があるので求めたい角度を代入すれば簡単に計算することができます。

ツイッターの動画投稿方法を失敗して分かりにくくて申し訳ないです。