JavaScript コンポーネント
8thwall-camera
8thwall カメラコンポーネント。
廃止予定: https://github.com/WonderlandEngine/wonderland-ar-tracking のコンポーネントを代わりに使用してください。
| Param | Type | Description |
|---|---|---|
| deprecated | bool |
anchor
XRAnchor の位置にオブジェクトの位置を設定します。
Anchor.create() 静的関数を使用してアンカーを作成します。
カーソルと一緒に使用する例:
| Param | Type | Description |
|---|---|---|
| persist | bool | |
| uuid | string | 永続アンカーを読み込むための一意識別子、または不明な場合は空/NULL |
audio-listener
Wonderland のオーディオリスナーコンポーネントを表します。 WebAudio リスナーインスタンスの位置と方向を更新します。
注意: 一度にアクティブにするリスナーは1つだけにしてください。
audio-source
Wonderland Engine でのオーディオソースを表し、オーディオファイルの再生を可能にします。
cursor
デスクトップ/モバイル/VR 用の3Dカーソル。
シーン内へのレイキャスティングカーソルを実装します。 クリック/ホバー/アンホバー/カーソルダウン/カーソルアップ/移動に反応するには、 cursor-target を使用します。
VR では、レイは this.object.getForward() の方向にキャストされます。 デスクトップとモバイルでは、 ユーザーが画面上をクリックした場所を考慮してフォワードベクトルが逆投影されます。
.globalTarget は、すべてのオブジェクトに対してコールバックを呼び出すために使用できます。
これにより、カーソルターゲットがアタッチされていないがコリジョングループに一致するオブジェクトにも適用されます。
.hitTestTarget は、WebXR ヒットテスト結果のコールバックを呼び出すために使用できます。
Animation Example を参照してください。
| Param | Type | Description |
|---|---|---|
| collisionGroup | int | レイキャストのコリジョングループ。このグループのオブジェクトのみがこのカーソルの影響を受けます。 |
| cursorObject | object | (オプション) カーソルのヒット位置を視覚化するオブジェクト。 |
| cursorRayObject | object | (オプション) カーソルのレイを視覚化するオブジェクト。 |
| cursorRayScalingAxis | enum | cursorRayObject をスケールする軸。 |
| handedness | enum | VR カーソルの利き手設定で、該当するコントローラからのみトリガーイベントを受け付けます。 |
| maxDistance | float | カーソルのレイキャストの最大距離。 |
| rayCastMode | enum | レイキャストのモード。PhysX または単純なコリジョンコンポーネントを使用するか。 |
| styleCursor | bool | デスクトップでマウスカーソルの CSS スタイルを設定するかどうか。 |
| useWebXRHitTest | bool | WebXR ヒットテストが利用可能な場合の使用設定。 |
ヒットテストロケーションコンポーネントを cursorObject にアタッチします。 これは、cursor によって HitTestResult を hitTestTarget に送信するために使用されます。|
cursor-target
cursor のためのクリック/ホバー/移動/ボタンターゲット。
クリック、ホバー、アンホバー、カーソル移動、カーソルボタンの押下または解除時にコードを実行するには、
.addClickFunction(f),
.addHoverFunction(f),
.addUnHoverFunction(f),
.addMoveFunction(f),
.addDownFunction(f);
.addUpFunction(f) をそれぞれ function f() {} と共に使用してください。
別のコンポーネントでメンバーを呼び出すために、カーソルターゲットを次のように設定できます:
Functions:
1const target = this.object.getComponent(CursorTarget);
2const callback = function(object, cursorComponent) {};
3
4target.onHover.add(callback);
5target.onHover.remove(callback);
6
7target.onUnHover.add(callback);
8target.onUnHover.remove(callback);
9
10target.onClick.add(callback);
11target.onClick.remove(callback);
12
13target.onMove.add(callback);
14target.onMove.remove(callback);
15
16target.onDown.add(callback);
17target.onDown.remove(callback);
18
19target.onUp.add(callback);
20target.onUp.remove(callback);要件:
- 同じオブジェクトに
collisionコンポーネントが アタッチされていること。
Animation Example を参照してください。
debug-object
オブジェクトの限られたデバッグ情報を表示します。
情報には、オブジェクトの名前、オブジェクトパラメータの名前、 オブジェクトのワールドトランスレーション、ワールドトランスフォーム、 ローカルトランスフォームが含まれます。
主にエンジン開発者によってデバッグ目的で使用されたり、例コードとして使用されます。
| Param | Type | Description |
|---|---|---|
| obj | object | 名前を表示するセカンドオブジェクト |
device-orientation-look
モバイルデバイスからのデバイスの方向を取得し、オブジェクトの方向に設定します。
マジックウィンドウ体験に役立ちます。
finger-cursor
0.8.5+カーソルターゲットとの衝突オーバーラップ、例として追跡された手の指先で、のインタラクションを可能にします。
要件:
- 同じオブジェクトへの衝突コンポーネント(通常は半径
0.05の球体)
fixed-foveation
WebXR セッションが開始されると、 固定フォビエーション を適用します。
固定フォビエーションは、ユーザーの視界のエッジで低解像度でレンダリングすることで、 ペリフェリーのシェーディングコストを削減します。
| Param | Type | Description |
|---|---|---|
| fixedFoveation | float | 0 (なし) から 1 (完全) までの適用量 |
hand-tracking
WebXR デバイス API での簡単なハンドトラッキング “Hand Input” API を実現します。
手をスフィアジョイントやスキンメッシュとして表示する機能を提供します。
キャッチングに反応するには、this.isGrabbing() を使用します。その他のジェスチャーについては、
this.joints - Object3D の配列を参照し、
WebXR Hand Input 仕様に記載されているジョイントインデックスを使用してください。
通常、ハンドトラッキングまたはコントローラを使用することが望ましいので、
両方は使用しません。このコンポーネントでは、ポーズが使用できない場合に
ハンドトラッキングの可視化を非表示にする deactivateChildrenWithoutPose と
手の追跡ポーズが利用可能になると別のオブジェクトを無効にする
controllerToDeactivate を提供します。
XR セッションの外では、トラッキングやコントローラはいずれも有効/無効にしません。
そのため、vr-mode-active-switch コンポーネントと共存します。
要件:
- ハンドトラッキングを使用するには、
chrome://flagsで “joint tracking” を有効にします。 Oculus Quest/Oculus Quest 2 用 Oculus Browser で設定します。
Hand Tracking Example を参照してください。
| Param | Type | Description |
|---|---|---|
| controllerToDeactivate | object | ポーズが使用できない場合に子を含めてアクティブするコントローラオブジェクト |
| deactivateChildrenWithoutPose | bool | トラッキングされていない場合に子を非アクティブ化します |
| handSkin | skin | (オプション) トラッキングされたジョイントポーズに適用するスキン。もしない場合は、ジョイントスフィアが表示に使用されます。 |
| handedness | enum | どの手からトラッキング入力を受け取るかを決定する利き手設定 |
| jointMaterial | material | 表示に使用するマテリアル。スキンメッシュまたはジョイントスフィアのどちらに適用されます。 |
| jointMesh | mesh | (オプション) ジョイントを表示するためのメッシュ |
hit-test-location
WebXR デバイス API “ヒットテスト”をセットアップし、 オブジェクトをヒット位置に配置します。
要件:
- AR ボタンの必須またはオプション機能に
'hit-test'を指定してください。例として Wastepaperbin AR を参照してください。
| Param | Type | Description |
|---|---|---|
| scaleObject | bool | 互換性維持のため:オブジェクトを 0 にスケールして戻すかどうか |
廃止予定: onHitLost と onHitFound を代わりに使用してください。|
image-texture
URL から画像をダウンロードし、アタッチされたメッシュコンポーネントに diffuseTexture または flatTexture として適用します。
以下のシェーダーからのマテリアルがサポートされています:
- “Phong Opaque Textured”
- “Flat Opaque Textured”
- “Background”
- “Physical Opaque Textured”
- “Foliage”
| Param | Type | Description |
|---|---|---|
| material | material | ビデオテクスチャを適用するマテリアル |
| textureProperty | string | 設定するテクスチャプロパティの名前 |
| url | string | 画像をダウンロードするための URL |
input-profile
XR コントローラの入力プロファイルを動的にロードおよびマップします。
| Param | Type | Description |
|---|---|---|
| addVrModeSwitch | bool | 真の場合、ロードされたコントローラモデルに VR モードスイッチコンポーネントを追加します。 |
| customBasePath | string | カスタム XR 入力プロファイルを読み込むためのオプションのフォルダパス。 |
| defaultBasePath | string | XR 入力プロファイルが保存されている基本のパスです。 |
| defaultController | object | カスタムモデルの読み込みに失敗した場合に使用されるデフォルトの 3D コントローラモデル。 |
| handedness | enum | コントローラの利き手を表すインデックス(0 は左、1 は右)。 |
| mapToDefaultController | bool | true の場合、入力プロファイルはデフォルトコントローラにマップされ、コントローラの動的な 3D モデルはロードされません。 |
| trackedHand | object | HandTracking コンポーネントが追加されているオブジェクト。 |
mouse-look
マウスの動きでカメラの向きを制御します。
マウスが動いたときにのみオブジェクトの向きに影響を与えるように効率的に実装されています。
| Param | Type | Description |
|---|---|---|
| mouseButtonIndex | int | “moveOnClick” が有効な場合、ビューを制御するために押しておく必要があるマウスボタン |
| pointerLockOnClick | bool | キャンバス上の “mousedown” イベントでポインターロックを有効化します |
| requireMouseDown | bool | ビューを制御するためにマウスボタンを押す必要があるかどうか。そうでない場合、ビューは常にマウスの動きに従います |
| sensitity | float | マウスルック 感度 |
orbital-camera
OrbitalCamera コンポーネントは、指定された距離でターゲットポイントの周りを回転することにより、ユーザーを軌道に回らせます。これはオブジェクト自体の位置です。
備考: コンポーネントはマウスまたはタッチで作動します。そのため、VR では動作しません。
| Param | Type | Description |
|---|---|---|
| damping | float | |
| maxElevation | float | |
| maxZoom | float | |
| minElevation | float | |
| minZoom | float | |
| mouseButtonIndex | int | |
| radial | float | |
| xSensitivity | float | |
| ySensitivity | float | |
| zoomSensitivity | float |
plane-detection
WebXR デバイス API - Plane Detection を使用して XRPlanes のメッシュとコリジョンを生成します。
| Param | Type | Description |
|---|---|---|
| collisionMask | int | 新しく作成されるコリジョンコンポーネントに割り当てるコリジョンマスク、またはコリジョンコンポーネントを作成しない場合は負の値。 |
| planeMaterial | material | 作成されるプレーンメッシュに割り当てられるマテリアル、またはメッシュを作成しない場合は null。 |
player-height
Y-オフセットを地面上に設定するためのプレーヤーの高さを設定します。 ’local’ および ‘viewer’ リファレンス空間
| Param | Type | Description |
|---|---|---|
| height | float |
target-framerate
目標のフレームレートを設定します。
指定された framerate に最も近いサポートされているフレームレート に
の目標フレームレートを更新します。
目標フレームレートはデバイスの VR 合成のための指標として、新しい画像で画面を更新する頻度を示します。 これは、アプリがより規則的な間隔でフレームを生成し、ドロップされる可能性のあるフレームに費やす時間を潜在的に減らします。
負荷の高いアプリにとって、適切な目標フレームレートを設定することは、アプリのレンダリングの安定性を向上させ、 スタッターの減少にも寄与します。
同様に、目標フレームレートを使用して、シンプルなアプリで Oculus Quest 2 の 120Hz リフレッシュレートを有効にすることができます。
| Param | Type | Description |
|---|---|---|
| framerate | float |
teleport
VR テレポート移動。
Teleport Example を参照してください。
| Param | Type | Description |
|---|---|---|
| cam | ? | VR の外で使用するノン VR カメラ |
| camRoot | ? | プレーヤーのルート、テレポート時に位置が設定されるオブジェクト。 |
| eyeLeft | ? | VR で使用する左目 |
| eyeRight | ? | VR で使用する右目 |
| floorGroup | ? | テレポート可能な “floor” オブジェクトのコリジョングループ |
| handedness | ? | 該当するコントローラからのトリガーイベントのみを受け入れるための VR カーソルの利き手設定。 |
| indicatorYOffset | ? | インジケータオブジェクトに適用するオフセット、例として床との Z抜けを避けるため。 |
| maxDistance | ? | PhysX のレイキャストの最大距離 |
| rayCastMode | ? | レイキャストのモード。PhysX または単純なコリジョンコンポーネントを使用するか。 |
| teleportIndicatorMeshObject | ? | プレーヤーがテレポートする位置を示すために配置されるオブジェクト。 |
| thumbstickActivationThreshhold | ? | テレポートターゲットインジケータが表示されるためにスティックが押される必要のある距離 |
| thumbstickDeactivationThreshhold | ? | テレポートを実行するためにスティックが離す必要のある距離 |
trail
動的なメッシュベースのトレイル
このコンポーネントは、オブジェクトが追加されたオブジェクトのワールド位置を追跡します。 固定インターバルでワールド位置が格納され、トレイルセグメントの開始および終了ポイントとして使用されます。
トレイルはその長さに沿って先細りします。UV テクスチャー座標は U軸がトレイルの幅をカバーし、 V軸がトレイルの長さをカバーするように設定されています。これにより、トレイルの外観はテクスチャーを使用して定義されます。
| Param | Type | Description |
|---|---|---|
| interval | float | 新しいポイントを記録する前の時間間隔 |
| material | material | トレイルメッシュに適用するマテリアル |
| resetThreshold | float | トレイルがリセットされる最大デルタ時間(秒)指定された更新がまれにしか発生しない場合(例: タブにフォーカスがない時など)にトレイルがジャンプしないようにします。 |
| segments | int | トレイルメッシュのセグメント数 |
| taper | bool | トレイルが先細りするかどうか |
| width | float | トレイルの幅(ワールドスペース) |
two-joint-ik-solver
二関節チェーン(例:膝や肘)の逆運動学
| Param | Type | Description |
|---|---|---|
| copyTargetRotation | ? | ターゲットからエンドへのローテーションをコピーするフラグ |
| end | ? | 中間にアタッチされるボーン |
| helper | ? | ジョイントの回転軸を決定するために使用するヘルパーオブジェクト |
| middle | ? | ルートにアタッチされるボーン |
| root | ? | ルートボーン、決して動かない |
| target | ? | ジョイントが到達するためのターゲット |
video-texture
URL からビデオをダウンロードし、指定されたマテリアルに diffuseTexture または flatTexture として適用します。
ビデオテクスチャは、フレームが利用可能な限り定期的に更新する必要があります。 このコンポーネントは新しいフレームの検出を処理し、ビデオの現在のフレームを反映するようにテクスチャを更新します。
以下のシェーダーからのマテリアルがサポートされています:
- “Phong Opaque Textured”
- “Flat Opaque Textured”
- “Background”
- “Physical Opaque Textured”
- “Foliage”
ビデオは this.video を通じてアクセスできます:
Video Example を参照してください。
| Param | Type | Description |
|---|---|---|
| autoplay | bool | ビデオを自動的に再生し始めるかどうか |
| loop | bool | ビデオをループするかどうか |
| material | material | ビデオテクスチャを適用するマテリアル |
| muted | bool | サウンドをミュートするかどうか |
| textureProperty | string | 設定するテクスチャプロパティの名前 |
| url | string | ビデオをダウンロードするための URL |
vr-mode-active-switch
VR/AR セッションがアクティブかどうかに応じて、オブジェクト上の他のすべてのコンポーネントをアクティブ/非アクティブに切り替えることを可能にします。
例として、ユーザーが VR に入るまでコントローラを非表示にするのに便利です。
| Param | Type | Description |
|---|---|---|
| activateComponents | ? | コンポーネントをアクティブにするタイミング: VR 中または VR 外時 |
| affectChildren | ? | 子オブジェクトのコンポーネントに影響を与えるかどうか |
vrm
VRM 1.0 モデルをロードおよび処理するためのコンポーネント。
モデルのポージングは専らボーンの回転によって行います。これらは .bones プロパティを使用してアクセスでき、
VRM ボーン命名に従います。すべての VRM モデルがすべての可能なボーンを持っているわけではありません。
リストポーズ(T ポーズ)は .restPose プロパティに格納されています。
ボーンをリストポーズにリセットするには次を使用します:
1vrmComponent.bones[vrmBoneName].rotationLocal = vrmComponent.restPose[vrmBoneName];モデルを世界内で移動するには、このコンポーネントがアタッチされているオブジェクト(つまり、VRMモデルのルート)を移動します。 ボーンやその子孫オブジェクトを使用して VRM モデルを移動してはいけません。
コア拡張 VRMC_vrm や VRMC_springBone, VRMC_node_constraint のエクステンションがサポートされています。
制限事項:
VRMC_material_mtoonのサポートはありません- 表情のサポートはありません
- 表情ベースの lookAt はサポートされていません
- メッシュのアノテーションモード
autoはサポートされていません
| Param | Type | Description |
|---|---|---|
| lookAtTarget | ? | VRM が見ているオブジェクト |
| src | ? | ロードする VRM ファイルの URL |
wasd-controls
基本的な W/A/S/D キーによる移動。
| Param | Type | Description |
|---|---|---|
| headObject | object | フォワード方向を判断するために使用されるオブジェクトの方向 |
| lockY | bool | グローバル x & z 平面でのみオブジェクトを移動するフラグ |
| speed | float | 移動速度 m/s。 |