Apple Vision Proで感じたBlenderの可能性
Apple Vision Proをテーマにしたプロジェクトに参加したり、声をかけてもらえる機会が少しづつ増えてきました。私はApple Vision Proの実機を持っていませんが、ARには前から興味があったのでXcode15のシミュレーターを使って可能な範囲で検証しています。Apple Vision Proの実体験や、Xcodeで開発するApple Vision Proアプリの体験を通じて、Blenderのスキルを活用できる新しいフィールドを見つけることができた気がしたのでメモを残します。
Apple VisionProを体験した際に最も可能性を感じたのは、目の前に迫る3Dオブジェクトを手に取り、触ったり、ひっくり返して眺めることができる体験でした。Apple Vision Pro内で立ち上げたSafariを通じて、3Dオブジェクトを手にとって見れるので、インターネットブラウジングの体験も大きく変わりそうな予感がします。
今後は、ショッピングサイトで商品を手に取って見る、あるいは身体にフィットした服の全身チェックをしてから購入するという体験が可能になると思います。これはECだけでなく、実店舗での購買体験も変える可能性すらあると感じました。
Blenderの3Dモデルを、Apple Vision Proで動かしてみる
実機の体験が素晴らしかったので、Blenderで自作した3DモデルをApple Vision Proに表示してみたくなります。また、どのようなワークフローでBlenderからApple Vision Proにインポートしてくのかも興味がありました。
下記の動画はBlenderをApple Vision Proにインポートしたものになります。
だいたい下記のようなフローになりました。
・BlenderでスザンヌをUV展開して、着色したい箇所にマテリアルをセット
・BlenderでFBX出力
・Adobe Substance 3D Painterでテクスチャペイント
・Adobe Substance 3D PainterからBlender用にテクスチャ出力
・BlenderでAdobe Substance 3D Painterで制作したテクスチャをロード
・BlenderからUSDC形式でエキスポート
・XcodeのRealityConverterでUSDCファイルをロードし、マテリアルを設定
・RealityConverterからUSDZ形式でエキスポート
・XcodeでAppleVisionProプロジェクトを新規作成
・プロジェクトにUSDZファイルをインポート
・Swiftでロードするコードを書いて描画
Adobe Substance 3D Painterで着色したテクスチャが非常に美しく描画され、特にメタリックやノーマルマップの再現性がすごく高いと感じました。シミュレーターとは言え、リアルタイムレンダリングも速い。
また、最も可能性を感じたのが、VisionProにインポートする際に、メッシュのポリゴン数やマテリアルの制限数に制約がないことです。もちろん膨大な量のポリゴン数の3Dモデル描画は負荷がかかると思いますが。この自由さは3Dモデリングする側の表現力を損なわないのですごく好感が持てました。
自分はXcodeはほぼ未経験なのもあり、ここに至るまでは手探りでした。最初はただのBlenderの円錐3Dモデルをインポートするところから始めたり、Blenderのシェーダーをベイクしてインポートなどもしています。
Blenderで自作した3Dモデルを、Apple Vision Proで動かしてみる
Apple Vision Proにはパーティクルシステムなども搭載されています。ちょうどBlenderでハリー・ポッターの杖を制作中でしたので、魔法の杖として動かしたくなりました。こちらがBlenderで作ったハリー・ポッターの魔法の杖です。
基本的にはスザンヌをApple Vision Proにインポートした手順と変わりはないです。下記がApple Vision Proにインポートした動画です。
今回は、RealityComposerProに用意されているデフォルトのパーティクルをアタッチしました。さらに、ハンドトラッキングを実装して手に杖が追従して魔法の杖をふりまわせるようにしました。ただし、実機がないためハンドトラッキングがうまく動くのかがわかりません。あと、杖の位置調整がうまくいかなかったので、Swiftで調整を行っていますが、初めてのSwiftなのでめちゃくちゃ苦労しました。
Apple Vision Proと連携する際に、Blenderに求められること
痛感したのは「UVをきれいに展開すること」です。BlenderのシェーダーはApple Vision ProやUnityなど他のツールに対して互換性がないので、シェーダーはベイクする必要があります。
Blenderでの表現をある程度再現するためにも、UV展開をきちんとしておかないと、Apple Vision Proにインポートした時に、テクスチャ描画が崩れる事が多々ありました。また、Adobe Substance 3D Painterを使用する場合も、UVをきれいに展開しておかないと、Adobe Substance 3D Painter側でうまく着色できなかったりもしました。
Apple Vision Proは目の前に3Dオブジェクトを持ってこれたり、手に取ってみたり、ハンドトラッキングで追従させたりできる分、ディスプレイで3Dオブジェクトを見るよりも、より身近に感じられると思います。そのため、テクスチャの継ぎ目や模様の交じる箇所などに違和感や粗さが目立つ気がします。
自分はついついUVを雑にしてしまいがちですが、今回のApple Vision ProでUV展開の大切さをあらためて痛感しました。
他の3Dツールや開発ソフト、プログラミング言語を広く浅く知る必要性
Apple Vision ProのアプリはXcodeで開発します。Xcodeを使うからにはプログラミング言語であるSwiftの知識は何かと必要と感じました。
XcodeのプロジェクトファイルにBlenderで作った3Dモデルをインポートした際に、正しくロードできない場合が多々あって、それがBlender側が原因なのかXcode側が原因なのか、その両方なのかの切り分けをする必要があったためです。
また、Blenderの3Dモデルをインポートする際も
・RealityComposerProでロード
・RealityConverterでロード
・Xcodeに直接インポートしてSwiftでロード処理を書く
など方法がいくつかあります。自分はRealityComposerProとRealityConverterでうまくロードできない時があり、その際にSwiftで調整しながらロードしたりしました。特にReality Converterは現時点でベータ版と表記があります。自分は不慣れなのもあり、エラーメッセージが頻発していました。
また、RealityComposerProのUIや機能はUnityにすごく似ているため、Unityのような3Dゲームエンジンの概念が役にたちました。コンポーネントやプロパティの概念はBlenderにも存在しますが、よりプログラミング的なオブジェクト指向の概念に近い感覚です。
UnityもApple Vision Pro用の開発環境を提供しているので、より親和性が高いです。幸い、Unityの言語であるC#と、Apple Vision Pro開発のためのSwiftは言語的に比較的似ているため、並列で習得できるので習得コストは下がる気がします。
BlenderをApple Vision Proにインポートしてみて得られたこと
私のこれまでのBlender制作は、映像が中心だったため、Blenderだけでワークフローが完結していました。(最初はUnityで映像制作していましたが、BlenderにシフトしてからはUnityもほとんど触っていませんでした。)
今回あらためて、UV展開やテクスチャベイクなど、別のプラットフォームに移行する際に注意すべき点を学びました。Apple Vision ProはBlenderで3D作品をする人にとっても、表現の場として可能性を秘めていると思います。
もちろん、これまでもBlenderはAR / VRという軸でプラットフォームで表現する場があったと思いますが、Apple Vision Proを体験すると「スマートフォンに代わるデバイスになるかも?もしかしたらパソコンで作業するというライフスタイルすら代わるかも」と思えてくるので、Blenderを続ける楽しみもApple Vision Proによって大きく代わるかもしれないと思っています。