トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

Swiftを初めて触る【AppleVisionPro】

SwiftでVisionOSのアプリを作っていく。

作りたいのは音声認識したらプロンプトが入力されて、AIが360度画像を作って、それが空間に表示されるもの。

 

Swift触るの初めてなので、まずはこちらの30Daysから使いたい機能二つを自分のまっさらなプロジェクトにコピーして組み合わせてみるところから

github.com

あんまりメモせずがむしゃらにやっていたので記憶が曖昧

360度画像表示

こちらを参考に360度画像表示をする!

表示する360度画像はAssetsというところにあらかじめセットしておくみたい

左下の+からImageSetというのを追加して、画像を入れた

なんか怒られてた。黄色マークだから無視していいかと思ったらこれだと画像表示されずダメだった。JPGって大文字なのがダメだった

表示されない時こんな感じの真っ黒になる

あとinfoのところもなんかサンプルと同じように設定し直さないとダメだった気がする

これで無事表示された

何もせずとも、日本語も使えるんだね

音声認識

 

360度画像表示と合体してできた。

初めてswiftファイルを追加した。

入力した言葉をテキストに表示するのはChatGPTに聞いた。すごい簡単だった

UI要素を書く場所にText(speechRecognizer.transcript)を追加するだけだった

警告が出る

この時は動いていたけど、後の方で色々別の処理追加したら、音声認識開始して何かをしゃべるとアプリが落ちるようになってしまった;;

結局この仕組みは使わず、デフォルトの TextFieldを追加したら、キーボードが出てきてそこで音声認識でも入力できるので別にいいかってなった。

アプリアイコン設定

アプリアイコンがないとテンションが上がらないので設定することにした。

AppIconというエリアはAsstsに最初からあるけどどこに画像設定するのかわからない・・・

と思ったらスクロールしたらNo Contentの下の方に設定する場所あった

適当にBackもFrontもトマシープアイコンにしたら、Backは透過じゃなくて塗りつぶしされてるものじゃないとダメと怒られた

Figmaで作った

元画像が小さいとその大きさが反映されるんだ・・・

ちゃんとした大きさに設定し直した。

いい感じだけど他のアプリみたいに影が落ちない・・・なんで;;

Xcodeのプレビューだと落ちてるな・・・Simulatorの不具合かな?

その他

SkyboxLAI社のapiを使って、音声認識してプロンプトとして与えて360度画像を作ってもらい、それを表示したい。

API投げて画像をローカルに落とすところまでは、先輩の力でなんとかできた。最初ChatGPTにドキュメント投げて作ってもらってたけど全然的外れなことしてた気がする。

skybox.blockadelabs.com

ドキュメント

api-documentation.blockadelabs.com

生成された画像を空間に表示する部分がうまくいかない

ローカルのパス名とファイル名からWindowに画像を表示するのはなんとかできた。

わかったこと

Viewの中では変数に何かを入れることはできない

Buttonの中のTaskとかの中でしかできないことがある

onAppearがUnityでいうStart()代わり

        .onAppear {

              Task {

                  await openImmersiveSpace(id: "ImmersiveSpace_Full")

              }

          }

Viewの中はフラグとかが変化したら随時いつでも反応するらしい

最後に

UnityC#ちょっと触ってただけの人間が初めて作るべきものじゃなかった・・・

最近ずっとUIしかしてないし

ChatGPTがVisionOSの情報や最新のSwiftの情報を持ってないのもキツイ。検索してって言ったら検索してくれるけど。

次回はSwiftのUIの構築の方を勉強!!