ぬるぽ

ゆるくプログラミングなどを語っていくブログ

ARKit入門 その7 ノードの回転方法

 

 

こんちにちはmorimori(@TatsunoriMorita)です。

 

ARアプリを作成していて、xyz軸におけるオブジェクトのポジションについては理解しやすいですが、回転や傾きになるとよくわかんなかったので調べてみました。

 

はじめに

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

developer.apple.com

 

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

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

juken-mikata.net

 

 

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

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

 

3D座標はx、y、z座標の3軸を使用して位置と、回転を表現します。

f:id:nooootion:20190114131951p:plain

 

 

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

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

 

 

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

f:id:nooootion:20190114132107p:plain

 

 

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

f:id:nooootion:20190114132428p:plain

  

 

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

f:id:nooootion:20190114132730p:plain

 

 

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

f:id:nooootion:20190114132835p:plain

 

 

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

f:id:nooootion:20190114132922p:plain

 

 

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

f:id:nooootion:20190114133024p:plain

 

 

まとめ

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

高校入学と同時に理系科目を捨てた身としては、ラジアンやオイラーと言われても何のことやらとなるので、

概念くらい基礎学力として勉強しておけばよかったとちょっと反省しました。

*ツイッターの動画投稿方法間違えて分かりにくくなってしまってすみませんw