你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于 .NET 的 Azure Object Anchors 客户端库 - 版本 0.3.0-beta.6
使用 Azure Object Anchors,应用程序可以使用 3D 模型在物理世界中检测对象,并估计其 6-DoF 姿态。 此包支持将现有 3D 资产转换为可由 Object Anchors 运行时用来检测物理对象的窗体。
入门
安装包
使用 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" />
先决条件
- 必须具有 Azure 订阅。
- 必须具有 Azure Object Anchors 帐户。
验证客户端
混合现实服务支持几种不同类型的身份验证:
- 帐户密钥身份验证
- 使用帐户密钥可以快速开始使用混合现实服务。 但是,在将应用程序部署到生产环境之前,我们建议你将应用更新为使用 Azure AD 身份验证。
- Azure Active Directory (AD) 令牌身份验证
- 如果你正在生成企业应用程序,并且你的公司使用 Azure AD 作为其标识系统,则你可以在应用中使用基于用户的 Azure AD 身份验证。 然后,使用现有的 Azure AD 安全组授予对 Object Anchors 帐户的访问权限。 还可以直接向组织中的用户授予访问权限。
- 否则,我们建议从支持你的应用的 Web 服务获取 Azure AD 令牌。 建议将此方法用于生产应用程序,因为这样可以避免在客户端应用程序中嵌入用于访问 Object Anchors 资产转换服务的凭据。
有关详细说明和信息,请参阅 此处 。
关键概念
ObjectAnchorsConversionClient
ObjectAnchorsConversionClient
是用于访问 Object Anchors 资产转换服务的客户端库。 在此处,将提供存储上传 URI,供用户上传其资产以转换为 Object Anchors 运行时可以使用的格式。
上传到从客户端获取的 Microsoft 托管 URI 的资产将保留 48 小时。
Microsoft 托管存储中最终转换的模型将保留 48 小时。
示例
上传用于对象定位点资产转换的资产
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);
}
故障排除
后续步骤
- 阅读 产品文档
贡献
本项目欢迎贡献和建议。 大多数贡献要求你同意贡献者许可协议 (CLA),并声明你有权(并且确实有权)授予我们使用你的贡献的权利。 有关详细信息,请访问 https://cla.microsoft.com 。
提交拉取请求时,CLA 机器人将自动确定你是否需要提供 CLA,并相应地修饰 PR(例如标签、注释)。 直接按机器人提供的说明操作。 只需使用 CLA 对所有存储库执行一次这样的操作。
此项目采用了 Microsoft 开放源代码行为准则。 有关详细信息,请参阅行为准则常见问题解答,或如果有任何其他问题或意见,请与 联系。