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

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);
bool TryResetChannelConfidenceThresholds();

protected:
// methods

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

詳細資料

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

Fields

ChannelNames

IReadOnlyList<string> ChannelNames => _readOnlyChannelNames

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

ChannelIndices

IReadOnlyDictionary<string, int> ChannelIndices => _readOnlyChannelNamesToIndices

現在のモデルが検出できるセマンティックチャンネルのインデックス。

プロパティ

TargetFrameRate

uint??? TargetFrameRate

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

IsMetadataAvailable

bool IsMetadataAvailable

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

MetadataInitialized

Action<ARSemanticSegmentationModelEventArgs> MetadataInitialized

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

メソッド

OnBeforeStart

override void OnBeforeStart()

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

OnDisable

override void OnDisable()

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

Update

void Update()

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

GetSemanticChannelTexture

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

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

    Parameters:

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

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

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

    戻り値:

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

GetPackedSemanticsChannelsTexture

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

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

    Parameters:

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

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

    戻り値:

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

TryAcquireSemanticChannelCpuImage

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

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

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

    Parameters:

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

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

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

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

    戻り値:

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

TryAcquirePackedSemanticChannelsCpuImage

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

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

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

    Parameters:

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

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

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

    戻り値:

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

GetChannelIndex

int GetChannelIndex(string channelName)

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

    Parameters:

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

    戻り値:

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

GetSemantics

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

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

    Parameters:

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

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

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

    戻り値:

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

GetChannelIndicesAt

List<int> GetChannelIndicesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
)

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

このクエリーはガベージ(不要なデータ)を生成します。

    Parameters:

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

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

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

    戻り値:

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

GetChannelNamesAt

List<string> GetChannelNamesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
)

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

このクエリーはガベージ(不要なデータ)を生成します。

    Parameters:

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

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

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

    戻り値:

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

DoesChannelExistAt

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

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

    Parameters:

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

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

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

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

    戻り値:

    指定された座標にセマンティッククラスが存在すればTrue。

DoesChannelExistAt

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

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

    Parameters:

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

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

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

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

    戻り値:

    指定された座標にセマンティッククラスが存在すればTrue。

TrySetChannelConfidenceThresholds

bool TrySetChannelConfidenceThresholds(Dictionary<string, float> channelConfidenceThresholds)

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

各セマンティックチャネルは、ARセッション中にこの関数によって新しい値が設定されるまで、モデルによって選択されたデフォルトの閾値を使用します。 セマンティック・セグメンテーションのしきい値の変更は、サブシステムを再起動するか、TryResetChannelConfidenceThresholds を呼び出すことで取り消されます。

    Parameters:

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

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

    戻り値:

    しきい値が設定されていれば真。 それ以外の場合False。

TryResetChannelConfidenceThresholds

ブール TryResetChannelConfidenceThresholds()

すべてのセマンティック・チャンネルの信頼しきい値を、現在のモデルのデフォルト値にリセットする。

これは、TrySetChannelConfidenceThresholdsで行った変更をすべて元に戻します。

    Parameters:

    System.NotSupportedException - 信頼度のしきい値のリセットが実装でサポートされていない場合にスローされます。

    戻り値

    閾値がリセットされた場合は真。 それ以外の場合False。