点群

深度バッファをワールドスペース点群に変換する。

概要

この機能は、 DepthBuffer を受け取り、 ComputeBuffer を使用してワールドスペース点群に変換することで、Unityシーンで使用できるようになります。

以下の例は、1フレーム分の点群データをデバッグ用に視覚化したものです。パフォーマンス上の理由から、このデモでは点群のすべての点がレンダリングされるわけではなく、外観が分かる程度に視覚化されています。

../../../_images/PointCloud.jpeg

点群を有効にする

ARの設定で IsDepthEnabled の値をtrueに設定し、ARWorldTrackingConfiguration` の``IsDepthPointCloudEnabled`` プロパティをtrueに設定して点群生成を有効にします。これにより、点群は値が Depth の任意の ARFrame で利用できます。また、 ARFrameDepthPointCloud プロパティからアクセスすることができます。

using Niantic.ARDK.AR.Configuration;

private void RunWithPointCloud(IARSession arSession)
{
  var configuration = ARWorldTrackingConfigurationFactory.Create();
  configuration.IsDepthEnabled = true;
  configuration.DepthTargetFrameRate = 20;
  configuration.IsDepthPointCloudEnabled = true;

  arSession.Run(configuration);
  arSession.FrameUpdated += OnFrameUpdated;
}

private void OnFrameUpdated(FrameUpdatedArgs args)
{
  var frame = args.Frame;
  if (frame.Depth != null)
  {
    // You can now access the depth point cloud data
    var depthFeaturePoints = frame.DepthPointCloud;

    // insert your code for usage of the point cloud
  }
}

注釈

この機能を使用するには、 ARSession の構成で深度も有効にする必要があります。これは、点群が深度データを使用して構築されることが理由です。