class ARSemanticSegmentationManager
(Niantic.Lightship.AR.Semantics.ARSemanticSegmentationManager)
概要
ARSemanticSegmentationManagerはXRSemanticsSubsystemを制御し、Updateループごとにセマンティック・テクスチャを更新する。 テクスチャとXRCpuImagesは、個々のセマンティック セグメンテーション チャンネルの信頼度マップと、ピクセルごとに選択された信頼度の閾値を超えたセマンティック・チャンネルを示すビット配列に利用できます。 画面上にセマンティック セグメンテーション テクスチャがオーバーレイ表示されている場合は、画面上の任意の位置でセマンティックプロパティを読み取るユーティリティが表示されます。
class ARSemanticSegmentationManager: SubsystemLifecycleManager< XRSemanticsSubsystem, XRSemanticsSubsystemDescriptor, XRSemanticsSubsystem.Provider > {
public:
// フィールド
IReadOnlyList<string> ChannelNames => _readOnlyChannelNames;
IReadOnlyDictionary<string, int> ChannelIndices => _readOnlyChannelNamesToIndices;
// プロパティ
uint??? TargetFrameRate;
bool IsMetadataAvailable;
Action<ARSemanticSegmentationModelEventArgs> MetadataInitialized;
// イベント
event FrameReceived();
// メソッド
void Update();
Texture2D GetSemanticChannelTexture(
string channelName,
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
);
Texture2D GetPackedSemanticsChannelsTexture(
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
);
Texture2D GetSuppressionMaskTexture(
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
);
bool TryAcquireSuppressionMaskCpuImage(
out XRCpuImage cpuImage,
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
);
int GetChannelIndex(string channelName);
uint GetSemantics(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
);
List<int> GetChannelIndicesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
);
List<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:
// メソッド
override void OnBeforeStart();
override void OnDisable();
};
詳細なドキュメント
ARSemanticSegmentationManagerはXRSemanticsSubsystemを制御し、Updateループごとにセマンティック・テクスチャを更新します。 テクスチャとXRCpuImagesは、個々のセマンティック セグメンテーション チャンネルの信頼度マップと、ピクセルごとに選択された信頼度の閾値を超えたセマンティック・チャンネルを示すビット配列に利用できます。 画面上にセマンティック セグメンテーション テクスチャがオーバーレイ表示されている場合は、画面上の任意の位置でセマンティックプロパティを読み取るユーティリティが表示されます。
フィールド
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
)
指定されたセマンティックチャンネルのセマンティック セグメンテーション テクスチャーを返します。
パラメーター:
channelName
- 取得するセマンティックチャンネル。
samplerMatrix
- 最新のポーズに従ってビューポートから画像座標に変換する行列。
cameraParams
- サンプリングするビューポートのパラメータ。 nullの場合、デフォルトは現在の画面寸法。
戻り値:
もしあれば、指定されたセマンティックチャンネルのテクスチャ。 それ以外の場合、null。
GetPackedSemanticsChannelsTexture
Texture2D GetPackedSemanticsChannelsTexture(
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)
各ピクセルが異なる分類に対応するビットを持つ整数として解釈できる意味データのテクス チャを取得する。
パラメーター:
samplerMatrix
- 最新のポーズに従ってビューポートから画像座標に変換する行列。
cameraParams
- サンプリングするビューポートのパラメータ。 nullの場合、デフォルトは現在の画面寸法。
戻り値:
もしあれば、マネージャーによって所有される、パックされたセマンティック・テクスチャー。 それ以外の場合、null。
GetSuppressionMaskTexture
Texture2D GetSuppressionMaskTexture(
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)
抑制マスクテクスチャを取得します。このテクスチャの各ピクセルには、シーンの予測された深度と遠方の深度の間を補間するために使用できるuintが含まれます。 これにより、スムーズなオクルージョン抑制が可能になります。
パラメーター:
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画像を取得した場合はTrue。 それ以外の場合、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画像を取得した場合はTrue。 それ以外の場合、false。
TryAcquireSuppressionMaskCpuImage
bool TryAcquireSuppressionMaskCpuImage(
out XRCpuImage cpuImage,
out Matrix4x4 samplerMatrix,
XRCameraParams? cameraParams = null
)
最新の抑制マスクXRCpuImageの取得を試みます。 XRCpuImageの各要素はuint32の値で、直近の深度と遠方の深度を補間するために使用できます。
パラメーター:
cpuImage
- このメソッドが true
を返した場合、取得した XRCpuImage を返します。 CPUイメージは呼び出し元が処分しなければなりません。
samplerMatrix
- 最新のポーズに従ってビューポートから画像座標に変換する行列。
cameraParams
- サンプリングするビューポ ートのパラメータ。 nullの場合、デフォルトは現在の画面寸法。
戻り値:
CPU画像を取得した場合はTrue。 それ以外の場合、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
List<int> GetChannelIndicesAt(
int viewportX,
int viewportY,
XRCameraParams? cameraParams = null
)
画面上の指定したピクセルに存在するチャンネルインデックスの配列を返す。
このクエリーはガベージ(不要なデータ)を生成します。
パラメーター:
viewportX
- ビューポート空間の水平座標。
viewportY
- ビューポート空間での垂直座標。
cameraParams
- サンプリングするビューポートのパラメータ。 nullの場合、デフォルトは現在の画面寸法。
戻り値:
ピクセルに存在するチャンネルインデックスの配列。
GetChannelNamesAt
List<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の場合、デフォルトは現在の画面寸法。
戻り値:
指定された座標にセマンティッククラスが存在すればTrue。
DoesChannelExistAt
bool DoesChannelExistAt(
int viewportX,
int viewportY,
int channelIndex,
XRCameraParams? cameraParams = null
)
このチャンネルに設定された信頼度の閾値 に基づいて、画面空間内の指定された位置でセマンティッククラスが検出されるかどうかをチェックする。 (TrySetChannelConfidenceThresholds を参照)
パラメーター:
viewportX
- ビューポート空間の水平座標。
viewportY
- ビューポート空間での垂直座標。
channelIndex
- ChannelNamesリストで探すセマンティッククラスのインデックス。
cameraParams
- サンプリングするビューポートのパラメータ。 nullの場合、デフォルトは現在の画面寸法。
戻り値:
指定された座標にセマンティッククラスが存在すればTrue。
TrySetChannelConfidenceThresholds
bool TrySetChannelConfidenceThresholds(Dictionary<string, float> channelConfidenceThresholds)
パックされたセマンティックチャンネルバッファに、指定したセマンティックチャンネルを含めるための信頼度しきい値を設定します。
各セマンティック・チャンネルは、ARセッション中にこの関数によって新しい値が設定されるまで、モデルによって選択されたデフォルトの閾値を使用します。 セマンティック セグメンテーションの閾値の変更を取り消すには、サブシステムを再起動するか、TryResetChannelConfidenceThresholdsを呼び出します。
パラメーター:
channelConfidenceThresholds
- 必要とされるセマンティック・チャンネルの名前を指定するキーと、プラットフォームが指定された チャネルをパックされたセマンティックバッファに含める閾値を設定する0から1までの値で構成される辞書。 キーは、TryGetChannelNamesが返すリストに存在するセマンティックチャネル名でなければなりません。
System.NotSupportedException
- 信頼度のしきい値の設定が実装によってサポートされていない場合にスローされます。
戻り値:
閾値が設定された場合はtrueが返ります。 それ以外の場合、false。
TryResetChannelConfidenceThresholds
bool TryResetChannelConfidenceThresholds()
すべてのセマンティック・チャンネルの信頼度閾値を、現在のモデルのデフォルト値にリセットします。
これにより、TrySetChannelConfidenceThresholdsで行った変更はすべて元に戻ります。
パラメーター:
System.NotSupportedException
- 信頼度閾値のリセットが実装でサポートされていない場合にスローされます。
戻り値:
閾値がリセットされた場合はtrueが返ります。 それ以外の場合、false。