index
title: class ARSemanticSegmentationManager toc_max_heading_level: 4
class ARSemanticSegmentationManager
(Niantic.Lightship.AR.Semantics.ARSemanticSegmentationManager)
概要
ARSemanticSegmentationManager XRSemanticsSubsystemを制御し、Updateループごとにセマンティクステクスチャを更新する。 テクスチャとXRCpuImagesは、個々のセマンティック・セグメンテーション チャンネルの信頼度マップと、ピクセルごとに選択された信頼度の閾値値を超えたセマンティック・チャンネルを示すビット配列に利用できます。 画面上にセマンティックセグメンテーションテクスチャがオーバーレイ表示されている場合は、画面上の任意の位置でセマンティックプロパティを読み取るユーティリティが表示されます。
class 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 GetPackedSemanticsChannelsTexture(
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
);
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);
protected:
// メソッド
override void OnBeforeStart();
override void OnDisable();
};
詳細なドキュメント
ARSemanticSegmentationManager XRSemanticsSubsystemを制御し、Updateループごとにセマンティクステクスチャを更新する。 テクスチャとXRCpuImagesは、個々のセマンティック・セグメンテーション チャンネルの信頼度マップと、ピクセルごとに選択された信頼度の閾値を超えたセマンティック・チャンネルを示すビット配列に利用できます。 画面上にセマンティックセグメンテーションテクスチャがオーバーレイ表示されている場合は、画面上の任意の位置でセマンティックプロパティを読み取るユーティリティが表示されます。
フィールド
チャンネル名
IReadOnlyList<string> ChannelNames => _readOnlyChannelNames
現在のモデルで検出可能なセマンティックチャンネルの名前。
チャンネル指数
IReadOnlyDictionary<string, int> ChannelIndices => _readOnlyChannelNamesToIndices
現在のモデルが検出できる意味チャンネルのインデックス。
プロパティ
ターゲットフレームレート
uint??? TargetFrameRate
セマンティック・セグメンテーション推論が目標とするフレームレート。
IsMetadataAvailable
bool IsMetadataAvailable
基礎となるサブシステムの初期化が終了していれば真。
メタデータ初期化
アクション<ARSemanticSegmentationModelEventArgs> MetadataInitialized
基礎となるサ ブシステムの初期化が終了したときに発生するイベント。
メソッド
OnBeforeStart
override void OnBeforeStart()
サブシステムの起動前(ただし作成後)に実行されるコー ルバック。
OnDisable
override void OnDisable()
マネージャが無効化されている場合にに実行されるコールバック。
Update
void Update()
マネージャーの更新中に実行されるコールバック。
GetSemanticChannelテクスチャ
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 は、ビューポートの位置でセマンティックチャンネル名を読み取るために使用できます。