1
1

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のdaeを使って表示しているオブジェクトがなぜ荒いのかを解決した話

Last updated at Posted at 2019-09-29

はじめに

ARKitを使ったSNSアプリARIZARを開発しています。
開発している時にわかったTIPS的なネタを記事にします。

ぜひARIZARをダウンロードして使ってみてください。
よろしくお願いします。

今回の課題

2つのツイートをみていただくとわかりますが、1つ目より2つ目の方がアバターと私達が呼んでいるオブジェクトがキレイになっていると思います。
今回は、解決したことについて記事にします。

なぜ荒いの?

前回の記事にその答えが隠されていました。

要するに、大きな文字を描画して小さく縮小すれば良いのではないかということがわかりました。

これです。実際のscnファイルを確認しました。

before.png

Positonが(0,-100,-200)にScaleが(0.361,0.361,0.361)になっています。
これは、PositionのZ軸が-200となっていてこれは自分から200m離れていることになります。

でもiPhoneの画面上、オブジェクトが荒い以外違和感がないのですが、逆に言うとオブジェクトが巨大だということが冷静になってみるとわかります。
もう1つ違和感があったのがiPhoneを左右に振って視点を少し変えてもオブジェクトがあまり動かないことの不思議に思っていました。

よくよく考えてみると、東京から富士山をみているような感じなのかなっと気づきました。

解決策

PositionとScaleを調整して、Positionは近く、Scaleはもっと小さくすることでオブジェクトを目の前に移動させました。
これにより本来のオブジェクトの姿が見えるようになりました。
こちらはコードで40cm手前に配置するようにしました。

改善後
        let model = SCNScene(named: named)
        if let modelNode = model?.rootNode.childNodes.first {
            modelNode.position = SCNVector3Make(0, -0.03, -0.4)
            modelNode.scale = SCNVector3(0.0006,0.0006,0.0006)
        }

最後に

ARは物体がないので座標系がピンとこないことが多いです。
荒かったり、カクカクする場合にはそのオブエクトが遠すぎないか?の観点で点検してみてはいかがでしょうか?
ありがとうございました。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?