11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ARKitのノードの回転方法

Posted at

はじめに

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°を計算しています。これは方程式があるので求めたい角度を代入すれば簡単に計算することができます。
ツイッターの動画投稿方法を失敗して分かりにくくて申し訳ないです。

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?