.NET 用 Azure Object Anchors クライアント ライブラリ - バージョン 0.3.0-beta.6

Azure Object Anchors を使用すると、アプリケーションで 3D モデルを使用して現実世界のオブジェクトを検出し、その 6-DoF 姿勢を推定することができます。 このパッケージは、既存の 3D アセットを、Object Anchors ランタイムが物理オブジェクトを検出するために使用できるフォームへの変換をサポートします。

ソースコード | パッケージ (NuGet)

作業の開始

パッケージをインストールする

NuGet を使用して .NET 用の Azure Object Anchors クライアント ライブラリをインストールします。

dotnet add package Azure.MixedReality.ObjectAnchors.Conversion --prerelease

パッケージ参照を追加します。

<PackageReference Include="Azure.MixedReality.ObjectAnchors.Conversion" Version="0.1.0-beta.0" />

前提条件

クライアントを認証する

Mixed Reality サービスでは、いくつかの異なる形式の認証がサポートされています。

  • アカウント キー認証
    • アカウント キーを使用すると、Mixed Reality サービスの使用をすばやく開始できます。 ただし、アプリケーションを運用環境にデプロイする前に、Azure AD 認証を使用するようにアプリを更新することをお勧めします。
  • Azure Active Directory (AD) トークン認証
    • エンタープライズ アプリケーションをビルドしていて、会社の ID システムとして Azure AD を使用している場合は、アプリ内でユーザーベースの Azure AD 認証を使用できます。 その後、既存の Azure AD セキュリティ グループを使用して、Object Anchors アカウントへのアクセス権を付与します。 組織内のユーザーに直接アクセス権を付与することもできます。
    • それ以外の場合は、アプリをサポートしている Web サービスから Azure AD トークンを取得することをお勧めします。 運用アプリケーションでは、Object Anchors アセット変換サービスにアクセスするための資格情報をクライアント アプリケーションに埋め込むのを回避できるため、この方法をお勧めします。

詳細な手順と情報については、 こちらを 参照してください。

主要な概念

ObjectAnchorsConversionClient

ObjectAnchorsConversionClientは、Object Anchors アセット変換サービスにアクセスするために使用されるクライアント ライブラリです。 そこから、オブジェクト アンカー ランタイムで使用できる形式に変換するために、ユーザーが資産をアップロードするためのストレージ アップロード URI が提供されます。

クライアントから取得した Microsoft がホストする URI にアップロードされた資産は 、48 時間保持されます。

Microsoft ホスト型ストレージの最終的な変換されたモデルは 、48 時間保持されます。

Object Anchors アセット変換用のアセットをアップロードする

AzureKeyCredential credential = new AzureKeyCredential(accountKey);

ObjectAnchorsConversionClient client = new ObjectAnchorsConversionClient(accountId, accountDomain, credential);

AssetUploadUriResult uploadUriResult = await client.GetAssetUploadUriAsync();

Uri uploadedInputAssetUri = uploadUriResult.UploadUri;

BlobClient blobClient = new BlobClient(uploadedInputAssetUri);

using (FileStream fs = File.OpenRead(localFilePath))
{
  await blobClient.UploadAsync(fs);
}

3D アセットの変換を開始する

AssetConversionOptions assetConversionOptions = new AssetConversionOptions(uploadedInputAssetUri, AssetFileType.FromFilePath(localFilePath), assetGravity, scale);

// Or you can pass in an optional parameter DisableDetectScaleUnits if you are converting a FBX, specifying whether or not you want to disable automatic detection of the embedded scale units. 
// The detection is enabled by default.
AssetConversionOptions assetConversionOptions = new AssetConversionOptions(uploadedInputAssetUri, AssetFileType.FromFilePath(localFilePath), assetGravity, scale, disableDetectScaleUnits: true);

AssetConversionOperation operation = await client.StartAssetConversionAsync(assetConversionOptions);

Guid jobId = new Guid(operation.Id);

完了するまで既存の ObjectAnchors アセット変換をポーリングし、結果をダウンロードする

AssetConversionOperation operation = new AssetConversionOperation(assetConversionJobId, client);

await operation.WaitForCompletionAsync();

if (!operation.HasCompletedSuccessfully)
{
  throw new Exception("The asset conversion operation completed with an unsuccessful status");
}

BlobClient blobClient = new BlobClient(operation.Value.OutputModelUri);

BlobDownloadInfo downloadInfo = await blobClient.DownloadAsync();

using (FileStream file = File.OpenWrite(localFileDownloadPath))
{
    await downloadInfo.Content.CopyToAsync(file);
    FileInfo fileInfo = new FileInfo(localFileDownloadPath);
}

トラブルシューティング

  • 「Azure.Identity の エラー処理 」を参照してください。
  • 「Azure.Identity の ログ記録 」を参照してください。

次のステップ

共同作成

このプロジェクトでは、共同作成と提案を歓迎しています。 ほとんどの共同作成では、共同作成者使用許諾契約書 (CLA) にご同意いただき、ご自身の共同作成内容を使用する権利を Microsoft に供与する権利をお持ちであり、かつ実際に供与することを宣言していただく必要があります。 詳細については、 https://cla.microsoft.com を参照してください。

pull request を送信すると、CLA を提供して PR (ラベル、コメントなど) を適宜装飾する必要があるかどうかを CLA ボットが自動的に決定します。 ボットによって提供される手順にそのまま従ってください。 この操作は、Microsoft の CLA を使用するすべてのリポジトリについて、1 回だけ行う必要があります。

このプロジェクトでは、Microsoft オープン ソースの倫理規定を採用しています。 詳しくは、「Code of Conduct FAQ (倫理規定についてよくある質問)」を参照するか、opencode@microsoft.com 宛てに質問またはコメントをお送りください。