見出し画像

[ARKit]SCNNodeの現在位置・角度を返してくれるextensionを実装した

はじめに

ARKitを実装していると「あれ?このSCNNodeなんでこんな場所に描画されているんだろう?」とか、「このSCNNodeの座標を知りたい」「角度を知りたい」とか思う場面によく遭遇します。

まあprint文とかで書けば一発なんですけど
例えば自分の開発しているバーチャルYouTuberアプリとかだと

//これで欲しい情報は取れるが、
print(leftEyeUpperLidNode.position)

//他の人に相談する際に、可読性を上げたいので
print("x:", leftEyeUpperLidNode.position.x)
print("y:", leftEyeUpperLidNode.position.y)
print("z:", leftEyeUpperLidNode.position.z)

とまあ、こういう風に冗長なコードを書いてしまうことが稀にあります。(純粋に自分の実力不足)

そこで、コードが冗長にならないようなExtensionを実装しました。

実装したExtension

とはいえ、そこまで大層なものではないんですが。。。

extension SCNNode {
    
    //SCNNodeの現在位置を返す
    func getCurrentPosition() -> SCNVector3 {
        let pos: SCNVector3 = self.position
        return pos
    }
    
        //SCNNodeの現在角度を返す
    func getCurrentAngle() -> SCNVector3 {
        let angle: SCNVector3 = self.eulerAngles
        return angle
    }
}

あとは使いたい箇所に下記コードを挿入してあげるだけです。

今回はleftEyeUpperLidNodeの場所を取ってあげたいので入れていますが、ここにはみなさんの調査したいSCNNodeの名前を入れてあげてください

//ViewContoller.Swift

let position = leftEyeUpperLidNode.getCurrentPosition()
print("x:", position.x, " y:", position.y, " z:", position.z)

これで冗長さが少しは回避できたかな?

以上です。

宣伝

宣伝なんですが昨日こんなARアプリ作ってみました
よかったらいいねとかリツイートしてもらえると嬉しいです


この記事が気に入ったらサポートをしてみませんか?