こんちにちはmorimori(@TatsunoriMorita)です。
ARアプリを作成していて、x、y、z軸におけるオブジェクトのポジションについては理解しやすいですが、回転や傾きになるとよくわかんなかったので調べてみました。
はじめに
回転させる方法はいくつかあるようですが、今回はeulerAnglesプロパティを使用しています。
このプロパティはピッチ(x軸)、ヨー(y軸)、ロール(z軸)を基準にして、ノードのラジアン(角度)を設定するものです。
ラジアンについてはこのサイトのおかげで理解できました。
普段使っている180°や90°は度数法という角度の測り方ですが、Xcodeでは度数法ではなくラジアンを使用しています。
ですのでeulerAnglesプロパティに対して直接90と設定しても思った結果が得られません。
3D座標はx、y、z座標の3軸を使用して位置と、回転を表現します。
回転の状態が分かりやすいように今回はSCNPlaneの表面に対してイメージ画像を貼り付けて、どのように回転しているか確認しています。
以下をデフォルト状態としてx軸、y軸、z軸に対して回転させています。
SCNPlaneをデフォルトで表示した場合#AR #ARKit #ios #Xcode pic.twitter.com/kfbtO3EAhF
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ピッチ(x軸)に対して-90°回転させる
SCNPlaneをオイラー角x軸に対して-90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/r02xapY27g
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ピッチ(x軸)に対して90°回転させる
SCNPlaneをオイラー角x軸に対して90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/phuEkONIyI
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ヨー(y軸)に対して-90°回転させる
SCNPlaneをオイラー角y軸に対して-90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/SaxCb7XZSR
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ヨー(y軸)に対して90°回転させる
SCNPlaneをオイラー角y軸に対して90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/tAPxsi1F6I
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ロール(z軸)に対して-90°回転させる
SCNPlaneをオイラー角z軸に対して-90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/idBDGLhkqz
— TatsunoriMorita (@king_of_morita) 2019年1月14日
ロール(z軸)に対して90°回転させる
SCNPlaneをオイラー角z軸に対して90°回転させた場合#AR #ARKit #ios #Xcode pic.twitter.com/K2QOo28EO0
— TatsunoriMorita (@king_of_morita) 2019年1月14日
まとめ
.Pi / 2でラジアン角度の90°を計算しています。これは方程式があるので求めたい角度を代入すれば簡単に計算することができます。
高校入学と同時に理系科目を捨てた身としては、ラジアンやオイラーと言われても何のことやらとなるので、
概念くらい基礎学力として勉強しておけばよかったとちょっと反省しました。
*ツイッターの動画投稿方法間違えて分かりにくくなってしまってすみませんw