質問: UnityでARFoundationを使い、マーカー認識によってモデルを表示したいと思っています。 現在、立方体をカメラで捉えたマーカー上に表示させようとしているのですが、 スケールが崩れているのか、長方形に伸びてしまいます。 ARTrackedImageManagerではマーカーが検出されたときにインスタンス化されると リファレンスで書いてあったのですが、実際にどこで生成されているのか理解できておらず デバッグでプレハブの状態を確認することができません。 【開発環境】 ------ * Unity 2019.4.0 * Xcode 11.3.1 * 端末 iPad(ios 13.4.1) 【試したこと】 ------- 実機上にUnityのデバッグログを表示させたところ、 「NullReference」とありました。 →もしかすると、プレハブで設定したGameObjectが外れてしまっているのかも知れないです。 どうして外れているのかわかっていない状況です。 【エディターの情報】 ---------- ■ 表示させたいモデルのインスペクタ ![プレハブの状態](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/492b511f6ac3a749562a45155edb9206.png) ※Cubeは GameObject1>GameObject2>Cubeという階層になっています。 GameObject1 GameObject2はスケール(1,1,1)で、位置と回転はすべて0です。 ■ ARSsession Originのインスペクタ ![ARSessionOriginの状態](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/1955127a1fb60dc48def128b6013a583.png) これはスケールの調整に問題があるでしょうか? 何が問題なのかご指摘いただけますと幸いです。 また、Unityでiosをつかった開発をするのが初めてなので デバッグの仕方についてアドバイスなど頂けると大変助かります。
回答: TrackedImageInfoManager.csはAR Foundation Samplesのものですか? もしそうだとして中身をいじっていないのなら ``` public class TrackedImageInfoManager : MonoBehaviour { ~~~省略~~~ void UpdateInfo(ARTrackedImage trackedImage) { // Set canvas camera var canvas = trackedImage.GetComponentInChildren(); canvas.worldCamera = worldSpaceCanvasCamera; // (1) ~~~省略~~~ // The image extents is only valid when the image is being tracked trackedImage.transform.localScale = new Vector3(trackedImage.size.x, 1f, trackedImage.size.y); // (2) ~~~省略~~~ ``` (1) "Cube"の子にはCanvasがないと思われるのでここでNullReference (2)ここでサイズを変更しているので"長方形に伸びてしまいます。"の原因はおそらくこれ とりあえず今はUpdateInfoのtrackedImage は ARTrackedImageManagerのTrackedImagePrefabに設定したPrefabをinstantiateしたものみたいに考えたらいいかもしれないです