Search Unity

2016 年に、Unity Lab のオーサリングツールグループは、XR ヘッドマウントディスプレイ(HMD)で Unity のシーンビューを操作するための拡張機能である、EditorXR の初版をリリースしました。EditorXR を使えば、XR 空間内で Unity エディターのオーサリングツールの機能をフル活用してコンテンツを制作することができます。その導入以降、Unity の実験的な EditorXR 機能は、Unity のプラットフォームや XR コミュニティと並んで進化しています。本ブログ記事では、Unity の最近の進捗を共有するとともに、今年リリースした注目の機能 EditorXR ランタイムについて詳しく解説します。

最新の更新プログラム(0.3 リリース)

Unity では最近、バージョン 0.3 を GitHub に公開しました。このバージョンには Unity の最新バージョンに対応するための更新プログラムのほか、より重要な部分として、Oculus と SteamVR の SDK に対する依存関係が削除されます。この変更により、セットアッププロセスがより簡単になります。

もう 1 つの主な機能は、空間 UIです。これは、メニューの操作性を改善し、EditorXR で迅速なモード切替を可能にする継続的な取り組みの一部です。この機能は、使いやすさと Magic Leap や HoloLens などの AR HMD との互換性にフォーカスを当てています(2 つの追跡コントローラーは含まれません)。EditorXR が追加設定なしで機能するのは引き続き Oculus と SteamVR のみですが、将来はさらに多くのデバイスに正式に対応する予定です。Unity では EditorXR の基盤システムを使用して、MARS コンパニオンアプリのメニューとインタラクションを動かします。これにより、実在するものをキャプチャーしてオーサリングする、スマートフォンと AR HMD 用の機能を提供します。その他大きくはないものの注目に値する機能強化として、両手を使用した直接操作の改善と、デフォルトの Annotation ツールと CreatePrimitive ツールのメニューの更新が含まれます。これらの変更の詳細については、Unity の GitHub リリースのページを参照してください。

また、Unity のウェブサイトに EditorXR 機能に関する永続的なページを追加しました。これは、EditorXR に関するすべての情報や更新プログラムのハブとして機能します。

EditorXR ランタイムを構築した理由

4 年間にわたる XR 開発から学んだ最も大きなことは、XR のアプリを編集するためのツールやインタラクションパターンと、XR でユーザーがどの程度のことができるかは、互いに絡み合っていることです。EditorXR 用に作成したすべてのツールを開発者コミュニティに公開し、それぞれのアプリに使用できるようにしたのは、これが理由です。

どのようなものか?

EditorXR ランタイムを使用すると、Unity で制作された XR アプリケーションに Unity の任意の機能を追加できます。Unity では EditorXR の開発の初期段階より、コアエンジンに対する変更はできるだけ最小限に留め、あらゆるユーザーが利用できるシステムや API を使用してコードを記述することを意識してきました。これは、EditorXR 用に設計したほぼすべての機能をご自身のプロジェクト内で使用できることを意味します。

Unity のエディター機能の多くは、プレイヤービルドでは使用できません。この理由から、EditorXR ランタイムには編集モードで利用できる機能のサブセットが含まれています。たとえば、インスペクターによって使用される、SerializedObject クラスと SerializedProperty クラスは、実行時には存在しません。短期的には、単にビルドにインスペクター、ヒエラルキー(およびロックされたオブジェクト)、プロジェクト、プロファイラー、コンソールの各ワークスペースを含めません。インスペクター、ヒエラルキー(およびロックされたオブジェクト)、プロジェクトの各ワークスペースは、再生モードでも使用できません。これらのエディターシステムをランタイムの同等のものに置き換える予定です。その一部は MARS コンパニオンアプリと一緒にリリースされます。

EditorXR をランタイムでどのように使用するか?

編集モードで、VRView ウィンドウは EditorXR へのエントリポイントです。ビューが開かれると Unity がシステムをブートストラップし、ビューが閉じられるとシャットダウンします。再生モードとプレイヤービルドでは、OnEnable と OnDisable を使用します。EditingContextManager コンポーネントが起動して EditorXR をシャットダウンします。これは、EditorXR ランタイムが使用されるすべてのシーンに含まれる必要があります。また、EditingContextManager を独自のマネージャーに置き換え、EditorXR のライフサイクルをユーザースクリプトから制御することもできます。デフォルト設定では、EditorXR は EditingContextManager が有効になるとすぐに起動し、そのコンポーネントが無効になるとシャットダウンします。

なぜ使用するのか?

EditorXR をプレイヤーまたは再生モードで実行する利点の 1 つは非常にシンプルなこと、つまりパフォーマンスの大幅な向上です。編集モードで、EditorXR はエディターの GUI を使用してシーンを連続して描画するため、結果として複雑なレイアウトを使用しているときに、回避不能な CPU のオーバーヘッドやパフォーマンスの制限が発生します。備忘録として、編集モードで最高のパフォーマンスを実現するには、デフォルトレイアウトにあるものを含め、すべてのエディターウィンドウを閉じる必要がありますが、再生モードではこれは不要です。

ゲームコードが実行されている間、コンテキスト内のシーン操作ツールを利用することもできます。たとえば、プレイセッションに入ってから数分後に、樹木を少し左に動かす必要があるとします。その場合は、EditorXR で変換ツールを使用して木を軽く動かし、感触を確かめてください。もちろん、再生モードで加えた変更は引き続き再生モードを終了した後にシーンに転送して戻す必要がありますが、これは変更したオブジェクトからプレハブを使用したり、Play Mode Saver などのエディターの拡張機能を使用したりすることで、簡単に行うことができます。Unity では実行時にヒエラルキーとインスペクターを利用できるようにすることに取り組んでおり、この機能がリリースされると、HMD 内でビルドのシーンオブジェクトを調査してデバッグできるようになります。たとえば Oculus Quest で EditorXR ツールの使用を試行している場合など、状況によっては、選択肢がプレイヤービルドのみになる場合があります。これらの機能はまだ潜在能力を完全には発揮していませんが、現行バージョンは Unity エディターに対応していないプラットフォーム用のオーサリングツールをビルドするための確固たる土台になります。

EditorXR の開発と改善を進めるにつれて、Unity ではデフォルトの UI が AR スマートフォン、HMD のほか、タッチやマウス、キーボードを使用して操作する従来型のタブレットやスクリーンでも機能するよう拡張する予定です。考え方としては、コンテキストを問わずあらゆるデバイスでオーサリングできる、Unity の単一のフレームワークを設けることです。ユーザーは Unity のコードを活用してどのようなものでも自由に制作できます。また、Unity では MARS コンパニオンアプリなど、Unity エディターを実行できないデバイスや XR を利用する特化したワークフローに対応する、プレイヤーベースのオーサリングツールの構築も進める予定です。

EditorXR ランタイムのもう 1 つのユースケースは、ゲームにレベルエディターを搭載することや、EditorXR をベースに制作やコラボレーションを担うソフトウェアを構築することです。注釈ツールや Poly ワークスペース などの既存の機能を活用して、具体的なワークフローに応える、独自のカスタマイズしたワークフローやデータパイプラインを構築できます。VR の生産性を高めるツールを作成して販売することも可能です。

今後の予定

EditorXR ランタイムを既存のプロジェクトに組み込む方法については、まだ回答されていない質問があります。たとえば、独自のコントローラーモデルを使用する場合はどうすればよいか?既存のインタラクションでトリガーの使用やそれに対応するボタンマッピングが必要とされる場合、EditorXR メニューを開くには、またはツールを使用するにはどうすればよいか?プレイヤービルドからの変更を保存するにはどうすればよいか?EditorXR のメニューを拡張してその操作を実行できるようにした方がよいか、それとも独自に作成して EditorXR を操作した方がよいか?この時点では、これらの質問に対する回答はすべて皆さん次第です。単に EditorXR をフォークしてニーズに合わせて変更できます。すでに EditorXR の拡張を進めている、またはこの記事により EditorXR をプロジェクトに組み込むことに興味を持たれた方は、Unity にお問い合わせのうえ、取り組んでいる作業についてお知らせください。GitHub のプルリクエストも歓迎しています。

XR インタラクションツールキット

Unity の XR インタラクションツールキットのリリースにより、Unity の開発者は XR 体験を作成するための事実上の標準たりうるインタラクションコードのセットを手にすることになります。このため、Unity はユーザーのプロジェクトがシーンのセットアップの特定の側面をどのように処理しているかについて憶測を立て、さらに、同じような目的のために EditorXR の一部のコードを削除できるようになりました。XR カメラリグと MultipleRayInputModule を制御するコードを始めとし、Unity では EditorXR 内の汎用コードを、XR インタラクションツールキット内の同様のものに置き換えます。この方法により、すでに設定されている方法で既存のシーンにそれらのコンポーネントを活用できます。EditorXR は、XR インタラクションツールキットを使用してセットアップされている場合は、カスタマイズされたコントローラーモデルとインタラクション設定を使用します。また、EditorXR を VR 以外のプロジェクトで使用することもできます。この場合、EditorXR が起動およびシャットダウンするときにデフォルトのセットアップが作成されます。

スマートフォンと AR HMD

MARS コンパニオンアプリの一部として、Unity では EditorXR のシステムがスマートフォンで機能し、マニピュレーターやメニューにタッチスクリーン入力を使用するようにアップデートを進めています。既存の VR メニューとツールは、現時点では AR に直接変換されません。Unity の目標は、スマートフォンや AR HMD 用に同等の汎用のメインメニューとワークスペースを導入することです。この手順の最初のステップは、それらのプラットフォームで機能するように基盤のシステムを有効にし、それらシステムをユーザーのコードでセットアップできるようにすることです。

シリアル化

シーンの保存とロード、取り消し/やり直し、ヒエラルキーとインスペクターは、Unity のオーサリングにおいて重要な機能です。ランタイムビルドでそれらがないことは、ビルドが実行されている間だけ残るシーンの操作に限定されていることを意味します。とはいえ、Poly ワークスペースからオブジェクトをゲームに引っ張ってくることは、たとえ一時的であっても、非常に楽しいものです。それらのギャップを埋めるために、Unity ではプレイヤービルドに対して Unity のシーンをインポートまたはエクスポートできる、ランタイムシリアル化パッケージに取り組んでいます。計画としては、この機能の準備ができたときに、EditorXR から基本のシーンエディターがビルドできるようになることです。また、インスペクターと取り消し/やり直し機能もシリアル化に依存しますが、Unity ではこれらの機能のランタイムバージョンも提供できるようになる予定です。

アセット

最後に、アセットバンドルを介して予測可能な方法で EditorXR のプレイヤービルドに新しいアセットを公開できるようにすることで、プロジェクトワークスペースの複写で作業し、最終的に Poly ワークスペースのようなクラウドベースのアセットパイプラインに進化させることができます。Unity では今後数か月または数年間これらの機能に取り組む予定で、EditorXR をベースに何をビルドできるか楽しみにしています。いつものように、Unity では皆さんのご意見やご感想をお待ちしております。次は Unity にどのような機能に取り組んでもらいたいと考えていますか?

ゲームプレイのようにオーサリング

EditorXR ランタイムは、XR 内のオーサリング機能をアプリの機能として公開し、プレイヤーに独自のコンテンツをメディア内で設計する機会を提供することで、創造性の可能性を切り開きます。これは、かつて類似の機能が搭載されたゲームが享受したことがある、ユーザー生成コンテンツのすべてのメリットが詰まった、アプリのレベルエディターの形で提供される場合があります。また、VR/AR アプリでは、3D オブジェクトの直接的かつ自然な両手での操作、実際のスケールでの環境の構築、複雑な新しいコントロールを学ぶことなくマッスルメモリーや身体的な経験(描画、彫刻など)をデジタルの領域に転送するなど、XR でのオーサリングにネイティブなすべての利点も得られます。

さらに一歩進んで、完全に制作のためのアプリをビルドすることを目指している場合(次の Tilt Brush または Gravity Sketch)、EditorXR ランタイムには膨大な数のショートカットや構築のための安定した土台が用意されています。ここで提供した基礎から始め、皆さんが抱いている次世代の優れた XR デザインアプリのビジョンに合わせて修正を加え、拡張し、定型化してください。

XR テクノロジーを使用して、さらに大勢の多種多様なクリエイターに対応させるという考えは、Unity のチームが情熱を持って取り組んでいることです。私たちは、EditorXR とその機能に対する計画は、世界をクリエイターであふれるよりよい場所にするという Unity のビジョンを深く体現していると考えています。

EditorXR に関する詳細とアップデートに関する情報をご確認ください。

9 replies on “EditorXR ランタイム”

EditorXR allows you to see things from the user’s perspective while accessing the full capabilities of the Unity Editor.

Nice! When I tried Unity VR editor some years ago, I wasn’t that satisfied, so I’m very happy that this project is going forward and also evolving in offering authoring tools!

“The Inspector and undo/redo functionality also rely on serialization, and we will be able to provide runtime versions of these features.”

That’s awesome. Is there a plan at Unity to support editor features in the runtime in general, not just limited to EditorXR?
In a way, have the editor features just as a package that you can load in the runtime… It would be super useful to be able to bring up a hierarchy window in a build, or an inspector window.

I can’t speak to legacy features, but most new feature development (e.g. DOTS) is taking the approach of the dev being able to decide which packages are loaded and used for a specific build/configuration.

Really glad to see EditorXR still advancing! While I don’t get to use it as often as I’d like, I love it.

Comments are closed.