本文へスキップ
バージョン: 3.1

class ARSemanticSegmentationManager

(Niantic.Lightship.AR.Semantics.ARSemanticSegmentationManager)

概要

ARSemanticSegmentationManagerはXRSemanticsSubsystemを制御し、Updateループごとにセマンティクス・テクスチャを更新する。 テクスチャとXRCpuImagesは、個々のセマンティック・セグメンテーション チャンネルの信頼度マップと、ピクセルごとに選択された信頼度の閾値を超えたセマンティック・チャンネルを示すビット配列に利用できます。 画面上にセマンティックセグメンテーションテクスチャがオーバーレイ表示されている場合は、画面上の任意の位置でセマンティックプロパティを読み取るユーティリティが表示されます。

    クラス ARSemanticSegmentationManager:SubsystemLifecycleManager< XRSemanticsSubsystem, XRSemanticsSubsystemDescriptor, XRSemanticsSubsystem.Provider > {
public
// fields

IReadOnlyList<string> ChannelNames => _readOnlyChannelNames;
IReadOnlyDictionary<string, int> ChannelIndices => _readOnlyChannelNamesToIndices;

// properties

uint?TargetFrameRate;
bool IsMetadataAvailable;
Action<ARSemanticSegmentationModelEventArgs> MetadataInitialized;

// events

event FrameReceived();

// methods

void Update();

Texture2D GetSemanticChannelTexture(
string channelName,
out Matrix4x4 samplerMatrix,
XRCameraParams?cameraParams = null
);

Texture2D GetPackedSemanticChannelsTexture(
out Matrix4x4 samplerMatrix,
XRCameraParams?cameraParams = null
);

bool TryAcquireSemanticChannelCpuImage(
string channel,
out XRCpuImage cpuImage,
out Matrix4x4 samplerMatrix,
XRCameraParams?cameraParams = null
);

bool TryAcquirePackedSemanticChannelsCpuImage(
out XRCpuImage cpuImage,
out Matrix4x4 samplerMatrix,
XRCameraParams?cameraParams = null
);

int GetChannelIndex(string channelName);

uint GetSemantics(
int viewportX,
int viewportY,
XRCameraParams?cameraParams = null
);

リスト<int> GetChannelIndicesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
);

リスト<string> GetChannelNamesAt(
int viewportX,
int viewportY,
XRCameraParams?cameraParams = null
);

bool DoesChannelExistAt(
int viewportX,
int viewportY,
string channelName,
XRCameraParams? cameraParams = null
);

bool DoesChannelExistAt(
int viewportX,
int viewportY,
int channelIndex,
XRCameraParams?cameraParams = null
);

bool TrySetChannelConfidenceThresholds(Dictionary<string, float> channelConfidenceThresholds);

protected:
// methods

override void OnBeforeStart();
override void OnDisable();
}

詳細資料

ARSemanticSegmentationManagerはXRSemanticsSubsystemを制御し、Updateループごとにセマンティクス・テクスチャを更新する。 テクスチャとXRCpuImagesは、個々のセマンティック・セグメンテーション チャンネルの信頼度マップと、ピクセルごとに選択された信頼度の閾値を超えたセマンティック・チャンネルを示すビット配列に利用できます。 画面上にセマンティックセグメンテーションテクスチャがオーバーレイ表示されている場合は、画面上の任意の位置でセマンティックプロパティを読み取るユーティリティが表示されます。

フィールド

チャンネル名

IReadOnlyList<string> ChannelNames => _readOnlyChannelNames

現在のモデルで検出可能なセマンティックチャンネルの名前。

ChannelIndices

IReadOnlyDictionary<string, int> ChannelIndices => _readOnlyChannelNamesToIndices

現在のモデルが検出できる意味チャンネルのインデックス。

プロパティ

TargetFrameRate

uint?ターゲットフレームレート

セマンティック・セグメンテーション推論が目標とするフレームレート。

IsMetadataAvailable

bool IsMetadataAvailable

基礎となるサブシステムの初期化が終了していれば真。

MetadataInitialized

アクション<ARSemanticSegmentationModelEventArgs> MetadataInitialized

基礎となるサブシステムの初期化が終了したときに発生するイベント。

方法

OnBeforeStart

override void OnBeforeStart()

サブシステムの起動前(ただし作成後)に実行されるコールバック。

OnDisable

override void OnDisable()

マネージャが無効化されている場合にに実行されるコールバック。

更新

void Update()

マネージャーの更新中に実行されるコールバック。

GetSemanticChannelTexture

Texture2D GetSemanticChannelTexture(
string channelName,
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)

指定されたセマンティックチャンネルのセマンティックセグメンテーションテクスチャーを返します。

    **パラメーター

    channelName`` - 取得するセマンティックチャンネル。

    samplerMatrix - 最新のポーズに従ってビューポートから画像座標に変換する行列。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    もしあれば、指定されたセマンティックチャンネルのテクスチャ。 それ以外はNULL。

GetPackedSemanticsChannelsTexture

Texture2D GetPackedSemanticsChannelsTexture(
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)

各ピクセルが異なる分類に対応するビットを持つ整数として解釈できる意味データのテクスチャを取得する。

    **パラメーター

    samplerMatrix - 最新のポーズに従ってビューポートから画像座標に変換する行列。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    もしあれば、マネージャーによって所有される、パックされたセマンティクス・テクスチャー。 それ以外はNULL。

TryAcquireSemanticChannelCpuImage

bool TryAcquireSemanticChannelCpuImage(
string channel,
out XRCpuImage cpuImage,
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)

指定されたセマンティッククラスの最新のセマンティックセグメンテーション XRCpuImage の取得を試みます。 これにより、生のピクセルデータに直接アクセスできるようになります。

XRCpuImageは、リソースリークを避けるために破棄しなければなりません。

    **パラメーター

    channel`` - 取得するセマンティックチャンネル。

    cpuImage- このメソッドがtrue`` を返した場合、取得した XRCpuImage を返します。 XRCpuImageは呼び出し元が処分しなければなりません。

    samplerMatrix - 最新のポーズに従ってビューポートから画像座標に変換する行列。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    CPU画像を取得した場合は真。 False:それ以外の場合

TryAcquirePackedSemanticChannelsCpuImage

bool TryAcquirePackedSemanticChannelsCpuImage(
out XRCpuImage cpuImage,
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)

最新のパックされたセマンティックチャンネルXRCpuImageの取得を試みる。 XRCpuImageの各要素は、その画素について、どの意味チャンネルがそれぞれの検出信頼度閾値を超えたかを示すビットフィールドである。 (GetChannelIndexを参照)

ユーティリティ GetChannelNamesAt は、ビューポートの位置でセマンティックチャンネル名を読み取るために使用できます。

    **パラメーター

    cpuImage- このメソッドがtrue`` を返した場合、取得した XRCpuImage を返します。 CPUイメージは呼び出し元が処分しなければならない。

    samplerMatrix - 最新のポーズに従ってビューポートから画像座標に変換する行列。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    CPU画像を取得した場合は真。 False:それ以外の場合

GetChannelIndex

int GetChannelIndex(string channelName)

指定したセマンティッククラスのチャンネルインデックスを取得します。 これは、インデックス0を最上位ビットとして、パックされたセマンティックバッファのビット位置に相当します。

    **パラメーター

    channelName`` - 意味クラスの名前。

    **返品について

    指定されたセマンティック・クラスのインデックス、またはチャンネルが存在しない場合は-1。

GetSemantics

uint GetSemantics(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
)

画面上の指定されたピクセルのセマンティクスを返します。

    **パラメーター

    viewportX`` - ビューポート空間の水平座標。

    viewportY`` - ビューポート空間での垂直座標。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    32ビットの符号なし整数で、各ビットはクラスのバイナリインジケータであり、最上位ビットはChannelNamesリストの0番目の要素であるチャネルに対応する。

GetChannelIndicesAt

リスト<int> GetChannelIndicesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
)

画面上の指定したピクセルに存在するチャンネルインデックスの配列を返す。

このクエリーはガベージを割り当てます。

    **パラメーター

    viewportX`` - ビューポート空間の水平座標。

    viewportY`` - ビューポート空間での垂直座標。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    ピクセルに存在するチャンネルインデックスの配列。

GetChannelNamesAt

リスト<string> GetChannelNamesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
)

画面上の指定したピクセルに存在するチャンネル名の配列を返す。

このクエリーはガベージを割り当てます。

    **パラメーター

    viewportX`` - ビューポート空間の水平座標。

    viewportY`` - ビューポート空間での垂直座標。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    ピクセルに存在するチャンネル名の配列。

DoesChannelExistAt

bool DoesChannelExistAt(
int viewportX,
int viewportY,
string channelName,
XRCameraParams? cameraParams = null
)

このチャンネルに設定された信頼度の閾値に基づいて、画面空間内の指定された位置で意味クラスが検出されるかどうかをチェックする。 (TrySetChannelConfidenceThresholds を参照)。

    **パラメーター

    viewportX`` - ビューポート空間の水平座標。

    viewportY`` - ビューポート空間での垂直座標。

    channelName`` - 探すセマンティッククラスの名前。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    指定された座標に意味クラスが存在すれば真。

DoesChannelExistAt

bool DoesChannelExistAt(
int viewportX,
int viewportY,
int channelIndex,
XRCameraParams? cameraParams = null
)

このチャンネルに設定された信頼度の閾値に基づいて、画面空間内の指定された位置で意味クラスが検出されるかどうかをチェックする。 (TrySetChannelConfidenceThresholds を参照)。

    **パラメーター

    viewportX`` - ビューポート空間の水平座標。

    viewportY`` - ビューポート空間での垂直座標。

    channelIndex - ChannelNamesリストで探すセマンティッククラスのインデックス。

    cameraParams - サンプリングするビューポートのパラメータ。 NULLの場合、デフォルトは現在の画面寸法。

    **返品について

    指定された座標に意味クラスが存在すれば真。

TrySetChannelConfidenceThresholds

bool TrySetChannelConfidenceThresholds(Dictionary<string, float> channelConfidenceThresholds)

パックされたセマンティックチャンネルバッファに、指定したセマンティックチャンネルを含めるための信頼度しきい値を設定します。

各意味チャネルは、ARセッション中にこの関数によって新しい値が設定されるまで、モデルによって選択されたデフォルトのしきい値を使用します。

    **パラメーター

    channelConfidenceThresholds - 必要なセマンティクスチャネルの名前を指定するキーと、プラットフォームが指定されたチャネルをパックされたセマンティクスバッファに含めるしきい値を設定する0から1までの値で構成される辞書。 キーは、TryGetChannelNamesが返すリストに存在するセマンティックチャネル名でなければなりません。

    System.NotSupportedException - 信頼度のしきい値の設定が実装によってサポートされていない場合にスローされます。

    **返品について

    閾値が設定されていれば真。 False - それ以外