XR_EXT_spatial_mesh_tracking

Name String

XR_EXT_spatial_mesh_tracking

拡張機能の種類

インスタンス拡張

登録済みの内線番号

784

リビジョン

1

承認ステータス

未批准

拡張機能とバージョンの依存関係

XR_EXT_spatial_entity

寄与者

Nihav Jain、Google
Natalie Fleury、Meta
Yuichi Taguchi、Meta
Ron Bessems、Meta
Yin Li、Microsoft
Jimmy Alamparambil、ByteDance
Zhipeng Liu、ByteDance
Jun Yan、ByteDance

概要

この拡張機能は XR_EXT_spatial_entity をベースにしており、環境の三角形メッシュをトラッキングするための空間機能を定義します。この拡張機能で定義された機能によって提供される三角形メッシュは、仮想コンテンツと環境の衝突を判断するためにアプリで使用されることを目的としています。

空間メッシュ トラッキング機能

この拡張機能は、環境の三角形メッシュをトラッキングするための空間機能として XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT を定義します。平面やオブジェクトなどのエンティティのメッシュのトラッキングは、この機能ではカバーされません。代わりに、それらのエンティティをトラッキングするそれぞれの機能の XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントの列挙によって示さなければなりません。

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT は、ランタイムの機能とアプリケーションによって選択された構成に応じて、ウォータータイト メッシュと非ウォータータイト メッシュの両方をアプリケーションに提供するために使用されます。

ウォータータイト メッシュとは、あらゆるサイズのギャップやスキャンされていない領域が埋められ、特定の体積ブロック内で密なメッシュを形成しているメッシュです。その名のとおり、アプリケーションが水密メッシュ内に水を満たした場合、水密ボリュームから水が漏れることはありません。スキャンされたメッシュを水密にするには、多くの場合、非常に高いコンピューティングが必要になります。ただし、一部のランタイムでは、メッシュを事前に処理することでそのコストを相殺します。

ランタイム サポート

ランタイムが環境の三角形メッシュのトラッキングをサポートしている場合、xrEnumerateSpatialCapabilitiesEXT で XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT を列挙することで、このことを示さなければなりません。

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT をサポートするランタイムには、次の 3 つの機能があります。

  • ランタイムは、非ウォータータイト メッシュ トラッキングのみをサポートしています。この場合、ランタイムは xrEnumerateSpatialCapabilitiesEXT で XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT を列挙しますが、xrEnumerateSpatialCapabilityFeaturesEXT で XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT を列挙してはなりません(水密メッシュのトラッキングを参照)。
  • ランタイムは、ウォータータイト メッシュ トラッキングと非ウォータータイト メッシュ トラッキングの両方をサポートしています。この場合、ランタイムは xrEnumerateSpatialCapabilitiesEXT で XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT を列挙し、xrEnumerateSpatialCapabilityFeaturesEXT で XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT も列挙して(水密メッシュのトラッキングを参照)、アプリからの水密メッシュ トラッキング リクエストを有効にする必要があります。
  • ランタイムは、ウォータータイト メッシュ トラッキングのみをサポートしています。この場合、ランタイムは xrEnumerateSpatialCapabilitiesEXT で XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT を列挙し、xrEnumerateSpatialCapabilityFeaturesEXT で XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT も列挙しなければなりません(水密メッシュのトラッキングを参照)。これにより、水密メッシュのトラッキングをサポートしていることをアプリに示します。この特定のケースでは、XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT の構成に関係なく、ランタイムは常に水密メッシュをアプリに返します。

構成

XrSpatialCapabilityConfigurationMeshTrackingEXT 構造体は次のように定義されます。

typedef struct XrSpatialCapabilityConfigurationMeshTrackingEXT {
    XrStructureType                     type;
    const void*                         next;
    XrSpatialCapabilityEXT              capability;
    uint32_t                            enabledComponentCount;
    const XrSpatialComponentTypeEXT*    enabledComponents;
} XrSpatialCapabilityConfigurationMeshTrackingEXT;

メンバーの説明

  • type は、この構造の XrStructureType です。
  • next は、NULL または構造体チェーン内の次の構造体へのポインタです。
  • capability は XrSpatialCapabilityEXT であり、XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT でなければなりません。
  • enabledComponentCount は、enabledComponents 配列内の要素の数を表す uint32_t です。
  • enabledComponents は XrSpatialComponentTypeEXT の配列へのポインタです。

アプリは、XrSpatialContextCreateInfoEXT :: capabilityConfigs に XrSpatialCapabilityConfigurationMeshTrackingEXT 構造体へのポインタを含めることで、XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT 空間機能を有効にできます。

capability が XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT でない場合、ランタイムは XR_ERROR_VALIDATION_FAILURE を返さなければなりません。

有効な使用方法(暗黙的)

水密メッシュのトラッキング

XrSpatialFeatureTrackWatertightMeshEXT 構造体は次のように定義されます。

typedef struct XrSpatialFeatureTrackWatertightMeshEXT {
    XrStructureType    type;
    const void*        next;
    XrBool32           enableWatertightMeshTracking;
} XrSpatialFeatureTrackWatertightMeshEXT;

メンバーの説明

  • type は、この構造の XrStructureType です。
  • next は、NULL または構造体チェーン内の次の構造体へのポインタです。
  • enableWatertightMeshTracking は、ランタイムがスキャンされた環境のウォータータイト メッシュを計算する必要があるかどうかを示します。

水密メッシュ トラッキングをサポートするランタイムは、xrEnumerateSpatialCapabilityFeaturesEXT で XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT を列挙しなければなりません。XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT 機能を使用すると、アプリは必要に応じて水密メッシュ トラッキングを有効にし、水密メッシュ生成で発生する可能性のある追加のコンピューティングを明示的にオプトインできます。

特定の機能に対して xrEnumerateSpatialCapabilityFeaturesEXT によって XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT が列挙されている場合、アプリは XrSpatialFeatureTrackWatertightMeshEXT をその機能の対応する構成構造にチェーンして、追跡されたメッシュをウォータータイトにするかどうかを示すことができます。アプリケーションが enableWatertightMeshTracking を XR_TRUE に設定した場合、ランタイムは環境のウォータータイト メッシュを計算してアプリケーションに提供しなければなりません。アプリケーションが enableWatertightMeshTracking を XR_FALSE に設定した場合、ランタイムが水密メッシュ トラッキングのみをサポートしている場合(ランタイムが事前にスキャンされた環境から処理されたメッシュを提供している場合など)は、トラッキングされたメッシュが水密である可能性があります。

有効な使用方法(暗黙的)

申請フロー

次の図は、環境の防水メッシュをトラッキングする場合に、アプリが空間コンテキストを構成する方法を示しています。

はい

はい

アプリには
防水メッシュが必要

アプリに必要なもの

はい

○

いいえ

いいえ

ランタイム
は「メッシュ トラッキング」
機能をサポート

ランタイム...

はい

○

いいえ

いいえ

ランタイム
は「トラック ウォータータイト メッシュ」
機能をサポート

ランタイム...

アプリが「メッシュ トラッキング機能」と「水密メッシュのトラッキング」機能を使用して空間コンテキストを作成する

アプリが空間を作成する...

アプリが現在のランタイムで機能サポートの欠如を処理する

アプリが次の不足に対応している...

アプリが、トラッキングされたメッシュを処理して、水密メッシュ自体を作成します。メッシュの穴を埋めるためにユーザーの支援が必要になる場合があります。

アプリがトランザクションを処理する... テキストが SVG ではないため、表示できません

図 29. 防水メッシュをリクエストするためのアプリフロー

保証対象の部品

XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT をサポートするランタイムは、この機能によって検出されたすべてのエンティティの保証されたコンポーネントとして、次の空間コンポーネントを提供しなければならず、xrEnumerateSpatialCapabilityComponentTypesEXT でそれらを列挙しなければなりません。

  • XR_SPATIAL_COMPONENT_TYPE_BOUNDED_3D_EXT
  • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT
境界付き 3D コンポーネント

境界付き 3D コンポーネントは、それが配置されているエンティティの中心と範囲を提供します。このコンポーネントから提供されるデータにより、アプリケーションは視錐台の外にあるエンティティを簡単に除外できます。

詳しくは、境界付き 3D をご覧ください。

Mesh 3D コンポーネント

メッシュ 3D コンポーネントは、それが存在するエンティティの 3D メッシュを提供します。詳しくは、Mesh 3D をご覧ください。

体積セグメンテーション(チャンキング)

ランタイムは、アプリケーションが視錐台の外にあるメッシュ ブロックを簡単にカリングできるように、メッシュをボリューメトリック ブロック(チャンク)にセグメント化することがあります。このような場合、ランタイムは、そのような各ボリューム ブロックを個別のエンティティとして扱い、そのような各エンティティ(ボリューム ブロック)に保証コンポーネントのセットを配置しなければなりません。ランタイムがこのように水密メッシュを提供している場合、各ボリュメトリック ブロックは個別に水密ではありませんが、ブロックのグループが水密メッシュを形成します。このようなシナリオでは、ランタイムは各エンティティ(ボリューメトリック ブロック)に XR_SPATIAL_COMPONENT_TYPE_PARENT_EXT コンポーネントを追加しなければなりません。また、ウォータータイト メッシュを形成するブロック全体で、親エンティティの値が同じでなければなりません。これにより、アプリケーションは、どのチャンクが組み合わさって防水メッシュを形成しているかを識別できます。

隣接するボリューメトリック ブロックのメッシュは頂点を共有しても構いませんが、1 つのボリューメトリック ブロックの三角形は、隣接するボリュームの三角形と重複してはなりません。

オプション コンポーネント

メッシュの法線

コンポーネント データ

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT は、データに XrSpatialBufferEXT を使用します。XrSpatialBufferEXT :: bufferId は、このコンポーネントが配置されているエンティティのメッシュの頂点法線を含むバッファを表します。XrSpatialBufferEXT :: bufferType は XR_SPATIAL_BUFFER_TYPE_VECTOR3F_EXT でなければなりません。XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT を持つエンティティには、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT も必要です。このコンポーネントによって提供される法線は、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントの XrSpatialMeshDataEXT :: vertexBuffer で提供される頂点に対応しなければなりません。

データをクエリするコンポーネント リストの構造

XrSpatialComponentMesh3DNormalsListEXT 構造体は次のように定義されます。

typedef struct XrSpatialComponentMesh3DNormalsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshNormalsCount;
    XrSpatialBufferEXT*    meshNormals;
} XrSpatialComponentMesh3DNormalsListEXT;

メンバーの説明

  • type は、この構造の XrStructureType です。
  • next は、NULL または構造体チェーン内の次の構造体へのポインタです。このような構造体は、コア OpenXR またはこの拡張機能では定義されていません。
  • meshNormalsCount は、meshNormals 配列内の要素の数を表す uint32_t です。
  • meshNormals は XrVector3f の配列です。

XrSpatialComponentMesh3DNormalsListEXT が XrSpatialComponentDataQueryResultEXT :: next の次のチェーンにあり、XrSpatialComponentDataQueryConditionEXT :: componentTypeCount がゼロではなく、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT が XrSpatialComponentDataQueryConditionEXT :: componentTypes に含まれていない場合、ランタイムは xrQuerySpatialComponentDataEXT から XR_ERROR_VALIDATION_FAILURE を返さなければなりません。

meshNormalsCount が XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput より小さい場合、ランタイムは xrQuerySpatialComponentDataEXT から XR_ERROR_SIZE_INSUFFICIENT を返さなければなりません。

有効な使用方法(暗黙的)

  • XR_EXT_spatial_mesh_tracking 拡張機能は、XrSpatialComponentMesh3DNormalsListEXT を使用する前に有効にする必要があります。
  • type は XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT にする必要があります。
  • next は、NULL または構造体チェーン内の次の構造体への有効なポインタでなければなりません。
  • meshNormals は、meshNormalsCount XrSpatialBufferEXT 構造の配列へのポインタでなければなりません。
  • meshNormalsCount パラメータは 0 より大きい値にする必要があります。

構成

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT が XrSpatialCapabilityComponentTypesEXT :: componentTypes で列挙されている場合、アプリは XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents リストに列挙型を含めることで、その機能を有効にできます。このコンポーネントでは、XrSpatialCapabilityConfigurationBaseHeaderEXT の次のチェーンに含める特別な構成は必要ありません。ただし、アプリでは、このコンポーネントとそのデータを XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントと組み合わせて使用することをおすすめします。

メッシュ セマンティック ラベル

typedef enum XrSpatialMeshSemanticLabelEXT {
    XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT = 1,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT = 2,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT = 3,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT = 4,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT = 5,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT = 6,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT = 7,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT = 8,
    XR_SPATIAL_MESH_SEMANTIC_LABEL_MAX_ENUM_EXT = 0x7FFFFFFF
} XrSpatialMeshSemanticLabelEXT;

XrSpatialMeshSemanticLabelEXT 列挙型は、メッシュのセマンティック ラベルのセットを記述します。これは、さまざまな空間コンポーネントで使用され、頂点ごとまたは三角形ごとのセマンティック ラベルの XrSpatialBufferEXT の uint8_t 値に意味を与えます。メッシュ頂点セマンティック ラベルとメッシュ三角形セマンティック ラベルをご覧ください。

このセマンティック ラベルセットを拡張するか、メッシュ用に独自の新しいセットを追加する拡張機能は、セマンティック ラベルの設計と拡張のガイドラインに記載されているガイドラインに従うべきです。

列挙型の説明

XR_SPATIAL_MESH_SEMANTIC_LABEL_UNCATEGORIZED_EXT

ランタイムが頂点または三角形を分類できませんでした。

XR_SPATIAL_MESH_SEMANTIC_LABEL_FLOOR_EXT

頂点または三角形が床にマッピングされている。

XR_SPATIAL_MESH_SEMANTIC_LABEL_WALL_EXT

頂点または三角形が壁にマッピングされている。

XR_SPATIAL_MESH_SEMANTIC_LABEL_CEILING_EXT

頂点または三角形が天井にマッピングされます。

XR_SPATIAL_MESH_SEMANTIC_LABEL_TABLE_EXT

頂点または三角形がテーブルにマッピングされます。

XR_SPATIAL_MESH_SEMANTIC_LABEL_CHAIR_EXT

頂点または三角形が椅子にマッピングされます。

XR_SPATIAL_MESH_SEMANTIC_LABEL_SOFA_EXT

頂点または三角形がソファにマッピングされます。

XR_SPATIAL_MESH_SEMANTIC_LABEL_BED_EXT

頂点または三角形がベッドにマッピングされます。

メッシュ頂点のセマンティック ラベル

コンポーネントの概要

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT は、空間エンティティのメッシュの各頂点に 1 つのセマンティック ラベルを提供します。

コンポーネント データ

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT は、データに XrSpatialBufferEXT を使用します。XrSpatialBufferEXT :: bufferId は、このコンポーネントが配置されているエンティティのメッシュの頂点セマンティック ラベルを含むバッファを表します。XrSpatialBufferEXT :: bufferType は XR_SPATIAL_BUFFER_TYPE_UINT8_EXT でなければなりません。バッファ内の値は、XrSpatialMeshSemanticLabelEXT 列挙型の値に対応しています。XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT を持つエンティティには、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントも必要です。このコンポーネントによって提供されるセマンティック ラベルは、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントの XrSpatialMeshDataEXT :: vertexBuffer で提供される頂点に対応している必要があります。これは、このコンポーネントによって提供される空間バッファデータの特定のインデックスにあるセマンティック ラベルが、XrSpatialMeshDataEXT :: vertexBuffer によって提供される同じインデックスの頂点に対応することを意味します。これは、xrGetSpatialBufferUint8EXT :: bufferCountOutput が、頂点セマンティック ラベル バッファと XrSpatialMeshDataEXT :: vertexBuffer で同じ値でなければならないことも意味します。

データをクエリするコンポーネント リストの構造

XrSpatialComponentMesh3DVertexSemanticLabelsListEXT 構造体は次のように定義されます。

typedef struct XrSpatialComponentMesh3DVertexSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DVertexSemanticLabelsListEXT;

メンバーの説明

  • type は、この構造の XrStructureType です。
  • next は、NULL または構造体チェーン内の次の構造体へのポインタです。このような構造体は、コア OpenXR またはこの拡張機能では定義されていません。
  • meshSemanticLabelsCount は、meshSemanticLabels 配列内の要素の数を表す uint32_t です。
  • meshSemanticLabels は XrSpatialBufferEXT の配列です。

XrSpatialComponentMesh3DVertexSemanticLabelsListEXT が XrSpatialComponentDataQueryResultEXT :: next の次のチェーンにあり、XrSpatialComponentDataQueryConditionEXT :: componentTypeCount がゼロではなく、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT が XrSpatialComponentDataQueryConditionEXT :: componentTypes に含まれていない場合、ランタイムは xrQuerySpatialComponentDataEXT から XR_ERROR_VALIDATION_FAILURE を返さなければなりません。

meshSemanticLabelsCount が XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput より小さい場合、ランタイムは xrQuerySpatialComponentDataEXT から XR_ERROR_SIZE_INSUFFICIENT を返さなければなりません。

有効な使用方法(暗黙的)

  • XR_EXT_spatial_mesh_tracking 拡張機能は、XrSpatialComponentMesh3DVertexSemanticLabelsListEXT を使用する前に有効にする必要があります。
  • type は XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT にする必要があります。
  • next は、NULL または構造体チェーン内の次の構造体への有効なポインタでなければなりません。
  • meshSemanticLabels は、meshSemanticLabelsCount XrSpatialBufferEXT 構造の配列へのポインタでなければなりません。
  • meshSemanticLabelsCount パラメータは 0 より大きい値にする必要があります。

構成

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT が XrSpatialCapabilityComponentTypesEXT :: componentTypes で列挙されている場合、アプリは XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents リストに列挙型を含めることで、その機能を有効にできます。このコンポーネントでは、XrSpatialCapabilityConfigurationBaseHeaderEXT の次のチェーンに含める特別な構成は必要ありません。ただし、アプリでは、このコンポーネントとそのデータを XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントと組み合わせて使用することをおすすめします。このコンポーネントは、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT と同時に有効にすることはできません。アプリが XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT と XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT の両方を XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents に追加する場合、ランタイムは XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT を返さなければなりません。また、アプリケーションが別々の XrSpatialContextEXT で両方のコンポーネントを有効にしようとした場合、ランタイムは XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT を返さなければなりません。

メッシュ三角形のセマンティック ラベル

コンポーネントの概要

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT は、空間エンティティのメッシュの三角形ごとに 1 つのセマンティック ラベルを提供します。

コンポーネント データ

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT は、データに XrSpatialBufferEXT を使用します。XrSpatialBufferEXT :: bufferId は、このコンポーネントが存在するエンティティのメッシュの三角形セマンティック ラベルを含むバッファを表します。XrSpatialBufferEXT :: bufferType は XR_SPATIAL_BUFFER_TYPE_UINT8_EXT でなければなりません。バッファ内の値は、XrSpatialMeshSemanticLabelEXT 列挙型の値に対応しています。XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT を持つエンティティには、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントも必要です。このコンポーネントによって提供されるセマンティック ラベルは、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントの XrSpatialMeshDataEXT で提供される三角形に対応している必要があります。三角形のセマンティック ラベルを含む空間バッファの要素数は、XrSpatialMeshDataEXT :: indexBuffer の要素数を 3 で割った値です。これは、このコンポーネントによって提供される空間バッファデータの特定のインデックスにあるセマンティック ラベルが、XrSpatialMeshDataEXT :: indexBuffer の [index * 3]、[index * 3 + 1]、[index * 3 + 2] で表される三角形に対応することを意味します。

データをクエリするコンポーネント リストの構造

XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT 構造体は次のように定義されます。

typedef struct XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT {
    XrStructureType        type;
    void*                  next;
    uint32_t               meshSemanticLabelsCount;
    XrSpatialBufferEXT*    meshSemanticLabels;
} XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT;

メンバーの説明

  • type は、この構造の XrStructureType です。
  • next は、NULL または構造体チェーン内の次の構造体へのポインタです。このような構造体は、コア OpenXR またはこの拡張機能では定義されていません。
  • meshSemanticLabelsCount は、meshSemanticLabels 配列内の要素の数を表す uint32_t です。
  • meshSemanticLabels は XrSpatialBufferEXT の配列です。

XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT が XrSpatialComponentDataQueryResultEXT :: next の次のチェーンにあり、XrSpatialComponentDataQueryConditionEXT :: componentTypeCount がゼロではなく、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT が XrSpatialComponentDataQueryConditionEXT :: componentTypes に含まれていない場合、ランタイムは xrQuerySpatialComponentDataEXT から XR_ERROR_VALIDATION_FAILURE を返さなければなりません。

meshSemanticLabelsCount が XrSpatialComponentDataQueryResultEXT :: entityIdCountOutput より小さい場合、ランタイムは xrQuerySpatialComponentDataEXT から XR_ERROR_SIZE_INSUFFICIENT を返さなければなりません。

有効な使用方法(暗黙的)

  • XrSpatialComponentMesh3DTriangleSemanticLabelsListEXT を使用する前に、XR_EXT_spatial_mesh_tracking 拡張機能を有効にする必要があります。
  • type は XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT にする必要があります。
  • next は、NULL または構造体チェーン内の次の構造体への有効なポインタでなければなりません。
  • meshSemanticLabels は、meshSemanticLabelsCount XrSpatialBufferEXT 構造の配列へのポインタでなければなりません。
  • meshSemanticLabelsCount パラメータは 0 より大きい値にする必要があります。

構成

XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT が XrSpatialCapabilityComponentTypesEXT :: componentTypes で列挙されている場合、アプリは XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents リストに列挙型を含めることで、その機能を有効にできます。このコンポーネントでは、XrSpatialCapabilityConfigurationBaseHeaderEXT の次のチェーンに含める特別な構成は必要ありません。ただし、アプリでは、このコンポーネントとそのデータを XR_SPATIAL_COMPONENT_TYPE_MESH_3D_EXT コンポーネントと組み合わせて使用することをおすすめします。このコンポーネントは、XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT と同時に有効にすることはできません。アプリが XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT と XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT の両方を XrSpatialCapabilityConfigurationBaseHeaderEXT :: enabledComponents に追加する場合、ランタイムは XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT を返さなければなりません。また、アプリケーションが別々の XrSpatialContextEXT で両方のコンポーネントを有効にしようとした場合、ランタイムは XR_ERROR_SPATIAL_CAPABILITY_CONFIGURATION_INVALID_EXT を返さなければなりません。

新しい構造

新しい列挙型

新しい列挙型定数

  • XR_EXT_SPATIAL_MESH_TRACKING_EXTENSION_NAME
  • XR_EXT_spatial_mesh_tracking_SPEC_VERSION
  • XrSpatialCapabilityEXT の拡張:

    • XR_SPATIAL_CAPABILITY_MESH_TRACKING_EXT
  • XrSpatialCapabilityFeatureEXT の拡張:

    • XR_SPATIAL_CAPABILITY_FEATURE_TRACK_WATERTIGHT_MESH_EXT
  • XrSpatialComponentTypeEXT の拡張:

    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_NORMALS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_TRIANGLE_SEMANTIC_LABELS_EXT
    • XR_SPATIAL_COMPONENT_TYPE_MESH_3D_VERTEX_SEMANTIC_LABELS_EXT
  • XrStructureType の拡張:

    • XR_TYPE_SPATIAL_CAPABILITY_CONFIGURATION_MESH_TRACKING_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_NORMALS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_TRIANGLE_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_COMPONENT_MESH_3D_VERTEX_SEMANTIC_LABELS_LIST_EXT
    • XR_TYPE_SPATIAL_FEATURE_TRACK_WATERTIGHT_MESH_EXT

問題

変更履歴

  • リビジョン 1、2025-11-02(Nihav Jain、Google)

    • 拡張機能の初期説明