サポートされているデバイス
Needle Engineは、ARおよびVRを含む完全なWebXR仕様をサポートしています。WebXRは、没入型体験をWebにもたらす公式のWeb標準であり、Webのすべての利点があります。インストール、アプリストア、SDKは必要ありません。
ブラウザを搭載したすべてのデバイスは、Needleで作成されたアプリを実行できます。ブラウザがWebXRをサポートしている場合、Needle Engineに組み込まれているコンポーネントを使用して、アプリはXRでも自動的に動作します。これには、デスクトップブラウザ、モバイルブラウザ、多くのAR/VRヘッドセット上のブラウザだけでなく、Looking Glassディスプレイ、スマートグラスなどの他の新しいテクノロジーも含まれます。
USDZ/QuickLookによるアプリ不要のiOS ARサポート
iOSデバイスはまだ公式のWebXRサポートを持っていませんが、NeedleはEverywhere Actionsを使用してiOS上でAR体験を作成することをサポートしています。iOSセクションで詳細を確認してください。Appleが設定している制限があっても、iOSデバイス上でシームレスにARで動作する、リッチでインタラクティブな体験を作成できます。
iOSでARモードに入ると、Needleは自動的にシーンをUSDZファイルに変換し、AppleのQuickLookを使用してARで表示されます。オブジェクト、マテリアル、オーディオ、アニメーション、Everywhere Actionsは保持されます。
以下の表は、Needle Engineで動作することが確認されたデバイスの一部をリストしています。 WebXRをサポートする新しいデバイスが登場すると、すぐにアプリで動作します。これは、ブラウザをプラットフォームとして使用する大きな利点の1つです。互換性は特定のデバイスやSDKのセットに限定されません。
ヘッドセットデバイス | ブラウザ | 注記 |
---|---|---|
Apple Vision Pro | ✔️ Safari | ハンドトラッキング、トランジェントポインターのサポート |
Meta Quest 3 | ✔️ Meta Browser | ハンドトラッキング、sessiongranted1のサポート、パススルー、深度センサー、メッシュトラッキング |
Meta Quest 3S | ✔️ Meta Browser | ハンドトラッキング、sessiongranted1のサポート、パススルー、深度センサー、メッシュトラッキング |
Meta Quest 2 | ✔️ Meta Browser | ハンドトラッキング、sessiongranted1のサポート、パススルー(白黒) |
Meta Quest 1 | ✔️ Meta Browser | ハンドトラッキング、sessiongranted1のサポート |
Meta Quest Pro | ✔️ Meta Browser | ハンドトラッキング、sessiongranted1のサポート、パススルー |
Pico Neo 4 | ✔️ Pico Browser | パススルー、ハンドトラッキング2 |
Pico Neo 3 | ✔️ Pico Browser | ハンドトラッキングなし、コントローラーのサムスティックが反転 |
Oculus Rift 1/2 | ✔️ Chrome | |
Valve Index | ✔️ Chrome | |
HTC Vive | ✔️ Chrome | |
Hololens 2 | ✔️ Edge | ハンドトラッキング、ARおよびVRのサポート(VRモードでは背景もレンダリングされます) |
モバイルデバイス | ブラウザ | 注記 |
---|---|---|
Android 10+ | ✔️ Chrome | |
Android 10+ | ✔️ Firefox | |
iOS 15+ | (✔️)3 Safari (✔️)3 Chrome | フルコードサポートなし、ただしNeedle Everywhere Actionsが動的でインタラクティブなUSDZファイル作成をサポートしています。 |
iOS 15+ | ✔️ WebXR Viewer | ブラウザは現在少し古くなっています |
Hololens 2 | ✔️ Edge | |
Hololens 1 | ❌ | WebXRサポートなし |
Magic Leap 2 | ✔️ | |
Magic Leap 1 | ✔️ | 非推奨デバイス |
その他のデバイス | ブラウザ | 注記 |
---|---|---|
Looking Glass ホログラフィックディスプレイ | ✔️ Chrome | Looking Glass bridgeと一部のカスタムコードが必要です、サンプルを参照してください |
Logitech MX Ink | ✔️ Meta Browser | 公式にサポートされています。ドキュメントを参照してください |
1: ブラウザフラグを有効にする必要があります: chrome://flags/#webxr-navigation-permission
2: 開発者設定でトグルを有効にする必要があります 3: Everywhere Actions または その他のアプローチ を使用します
VR、AR、およびQuickLookの例
Needle Engineサンプルにアクセスして、多くのインタラクティブな例を今すぐ試してみてください。または、以下のQR Code(電話用)またはOpen on Quest(Meta Questヘッドセット用)ボタンをクリックして、お使いのデバイスでライブで試してみてください。
シーンにVRおよびAR機能を追加する
Needle EngineのAR、VR、およびネットワーキング機能はモジュラー型に設計されています。それらのいずれもサポートしないことも、特定の機能のみを追加することも選択できます。
基本機能
ARとVRを有効にする
WebXR
コンポーネントを追加します。 オプション: アバター Prefab を参照してカスタムアバターを設定できます。 デフォルトでは、基本的なDefaultAvatar
が割り当てられています。テレポートを有効にする テレポート可能なオブジェクト階層に
TeleportTarget
コンポーネントを追加します。 特定のオブジェクトを除外するには、そのレイヤーをIgnoreRaycasting
に設定します。
マルチプレイヤー
ネットワーキングを有効にする
SyncedRoom
コンポーネントを追加します。デスクトップビューアの同期を有効にする
SyncedCamera
コンポーネントを追加します。ボイスチャットを有効にする
VoIP
コンポーネントを追加します。
シーン構造
これらのコンポーネントは、階層内のどこにでも配置できます。これらはすべて同じGameObjectに配置することも一般的です。
Castle Builder は、クロスプラットフォームのマルチプレイヤーサンドボックス体験のために上記のすべてを使用しています。 — #madebyneedle 💚
特殊なARコンポーネント
- ARセッションのルートとスケールを定義する ルートオブジェクトに
WebARSessionRoot
コンポーネントを追加します。AR体験では、シーンを現実世界に合わせてスケーリングしたいことがよくあります。 - ARに入るときのシーンに対するユーザーのスケール(< 1で縮小、> 1で拡大)を定義するユーザーサイズを定義します。
XRでのオブジェクト表示の制御
オブジェクトがBrowser、AR、VR、First Person、Third Personで表示されるかどうかを定義する 制御したいオブジェクトに
XR Flag
コンポーネントを追加します。必要に応じてドロップダウンのオプションを変更します。 一般的な使用例は次のとおりです。
- ARに入るときに床を非表示にする
- First PersonまたはThird Personビューでアバターのパーツを非表示にする。たとえば、一人称視点では、自分の頭部モデルが見えるべきではありません。
VRワールド間の移動
Needle Engineはsessiongranted
状態をサポートしています。これにより、ユーザーは没入型セッションを離れることなく、WebXRアプリケーション間をシームレスに移動できます。つまり、VRまたはARに留まります。
現在、これはOculus Quest 1、2、3のOculus Browserでのみサポートされています。他のプラットフォームでは、ユーザーは現在の没入型セッションから強制終了され、新しいページで再度VRに入る必要があります。 ブラウザフラグを有効にする必要があります: chrome://flags/#webxr-navigation-permission
- オブジェクトをクリックしてリンクを開く 非常に簡単に接続されたワールドを構築できる
OpenURL
コンポーネントを追加します。
スクリプティング
XR用のスクリプティングについては、スクリプティングXRドキュメントで詳細をご覧ください。
アバター
現在、外部アバターシステムの統合はすぐに提供していませんが、アプリケーション固有のアバターやカスタムシステムを作成することは可能です。
- カスタムアバターを作成する
- アバターのルートとして空のGameObjectを作成します
Head
という名前のオブジェクトを追加し、Third Personに設定されたXRFlag
を追加しますHandLeft
とHandRight
という名前のオブジェクトを追加します- これらのオブジェクトの下にグラフィックスを追加します。
実験的なアバターコンポーネント
より表現力豊かなアバターを構築するための実験的なコンポーネントがいくつかあります。現時点では、これらのコンポーネントは後で変更または削除される可能性があるため、独自のバリアントを作成するために複製することをお勧めします。
基本的な首モデルと手足の制約を持つアバターリグの例
ランダムプレイヤーカラー アバターのカスタマイズの例として、レンダラーに
PlayerColor
コンポーネントを追加できます。 このランダム化された色はプレイヤー間で同期されます。目の回転
AvatarEyeLook_Rotation
は、他のアバターとランダムなターゲットを追跡するようにGameObject(目)を回転させます。このコンポーネントはプレイヤー間で同期されます。まばたき
AvatarBlink_Simple
は、数秒ごとにGameObject(目)をランダムに非表示にし、まばたきをエミュレートします。
アバターPrefab階層の例
オフセット制約
OffsetConstraint
を使用すると、アバター空間内の別のオブジェクトに対してオブジェクトをシフトできます。これにより、例えば、BodyがHeadに追従しながらも回転を水平に保つことができます。また、簡単な首モデルを構築することも可能です。手足の制約
BasicIKConstraint
は、2つのトランスフォームとヒントを受け取る非常にミニマルな制約です。これは、簡単な腕または脚のチェーンを構築するのに役立ちます。現在回転が適切に実装されていないため、腕や脚が「正しく見える」ためには、回転対称である必要がある場合があります。「Basic」と呼ばれるのはそのためです!
ARでのHTMLコンテンツオーバーレイ
クライアントが通常のブラウザを使用しているか、ARまたはVRを使用しているかに応じて、異なるHTMLコンテンツを表示したい場合は、HTMLクラスのセットを使用するだけです。 これはHTML要素クラスによって制御されます。例えば、コンテンツをデスクトップとARで表示するには、<needle-engine>
タグ内に<div class="desktop ar"> ... </div>
を追加します。
<needle-engine>
<div class="desktop ar" style="pointer-events:none;">
<div class="positioning-container">
<p>ARとデスクトップ用のコンテンツはここにあります</p>
<p class="only-in-ar">これはARでのみ表示されます</p>
<div>
</div>
</needle-engine>
コンテンツオーバーレイは、オプションのdom-overlay
機能を使用して実装されており、通常、画面ベースのARデバイス(電話、タブレット)でサポートされています。
.ar-session-active
クラスを使用して、ARセッション中に特定のコンテンツを表示/非表示にします。現時点では、:xr-overlay
疑似クラスは使用すべきではありません。なぜなら、これを使用するとMozillaのWebXR Viewerが壊れるためです。
.only-in-ar {
display: none;
}
.ar-session-active .only-in-ar {
display:initial;
}
オーバーレイ要素は、適用されたスタイリングに関係なく、XR中は常に全画面で表示されることに注意する価値があります。アイテムを異なるように配置したい場合は、class="ar"
要素の_内側_にコンテナを作成する必要があります。
iOSでのARとWebXR
iOSデバイスでのAR体験は、Appleが現在iOSデバイスでWebXRをサポートしていないため、いくらか制限されています。
Needle EngineのEverywhere Actionsは、このギャップを埋めるように設計されており、特定のコンポーネントで構成されたシーンに対して、iOSデバイスに自動的なインタラクティブ機能をもたらします。これらは、WebXRで利用可能な機能のサブセットをサポートしており、例えば空間オーディオ、画像トラッキング、アニメーションなどです。ドキュメントで詳細を確認してください。
QuickLookでのカスタムコードの制限
Appleは、QuickLookで使用できるコンテンツの種類に強力な制限を設けています。したがって、カスタムスクリプトコンポーネントは、iOSでのARでの使用のために自動的に変換することはできません。Everywhere Actions APIを使用して、特定の種類のカスタムコードのサポートを追加することは可能です。
楽器 – WebXRとQuickLookのサポート
以下は、Everywhere Actionsを使用するため、ブラウザとiOSデバイスのARで動作する楽器の例です。 これは、空間オーディオ、アニメーション、およびタップインタラクションを使用しています。
Everywhere ActionsとiOS ARの他のオプション
iOSユーザーをさらに高機能なインタラクティブAR体験に導くための他のオプションもあります。
- コンテンツをオンザフライでUSDZファイルとしてエクスポートする。 これらのファイルは、iOSデバイスでARで表示できます。Everywhere Actionsを含むシーンからエクスポートされた場合、インタラクティビティは同じであり、製品コンフィギュレーター、ナラティブ体験などに十分すぎるほどです。 例としては、Castle Builderがあり、そこで作成されたもの(ライブセッションではなく)をiOSでARで表示できます。
Encryption in Space はこのアプローチを使用しています。プレイヤーは画面上で協力してシーンにテキストを配置し、iOSでARで結果を表示できます。Androidでは、WebXRで直接インタラクトすることもできます。 — Katja Rempelによる#madewithneedle 💚
iOSユーザーをWebXR対応ブラウザに誘導する。 ターゲットオーディエンスによっては、例えばMozillaのWebXR Viewerなど、iOSユーザーをiOSでAR体験ができるWebXR対応ブラウザに誘導することができます。
iOSデバイスでカメラアクセスとカスタムアルゴリズムを使用する。 カメラ画像のアクセスを要求し、カスタムアルゴリズムを実行してデバイスのポーズを決定することができます。 現在、これに対する組み込みコンポーネントは提供していませんが、将来試したいライブラリとフレームワークへのいくつかの参照を以下に示します。
- AR.js (オープンソース)
- FireDragonGameStudioによる実験的なAR.js統合
- Mind AR (オープンソース)
- 8th Wall (商用)
- AR.js (オープンソース)
画像トラッキング
Needle Engineは、AndroidでWebXR Image Tracking(ライブデモ)を、iOSでQuickLook Image Trackingをサポートしています。
追加のドキュメントは、Everywhere Actionsセクションにあります。
WebXR Image Trackingはまだ「ドラフト」段階であり、一般には利用できません
これまでのところ、ブラウザベンダーはWebXRの最終的な画像トラッキングAPIについて合意できていません。仕様が「ドラフト」段階にある限り(Marker Tracking Explainer)、 あなたとあなたのアプリのユーザーは、AndroidデバイスでWebXR ImageTrackingを有効にするために以下の手順に従う必要があります。
- Android Chromeブラウザで
chrome://flags
にアクセスします。 WebXR Incubations
オプションを見つけて有効にします。
その仕様がなくても、カメラ画像のアクセスを要求し、カスタムアルゴリズムを実行してデバイスのポーズを決定することは可能です。欠点は、ユーザーがカメラアクセスなどの追加の許可を受け入れる必要があること、およびトラッキングがデバイスのネイティブ機能ほど正確にならないことです。
以下は、カメラアクセスとローカルコンピュータビジョンアルゴリズムに基づいた画像トラッキングを追加するためのライブラリです。
- FireDragonGameStudioによるNeedle Engineとの実験的なAR.js統合
- AR.js (オープンソース)
- Mind AR (オープンソース)
参考資料
WebXR Device APIcaniuse: WebXRApple's Preliminary USD Behaviours
このページはAIによって自動的に翻訳されました