已归档 - 英特尔® 实感™ SDK 原生映像在 Unity* 的副本

已发布:12/23/2015   最后更新时间:02/23/2016

英特尔® 实感™ SDK 已停产。 不再继续提供支持或更新。

下载代码示例

该示例使用原生 Unity* 插件,通过绕开 SDK 的 C# 层,显著提高显示英特尔® 实感™ SDK 映像数据的性能。 映像数据通过图形 API 直接上传至 GPU。

该示例支持 Direct3D* 9、Direct3D* 11 和 OpenGL*,但通过调整后可以支持其他 API。 该插件基于 Unity 提供的原生插件示例。 如欲了解有关该示例以及原生 Unity 插件的更多信息,请访问此处

Screenshot from the sample running in Unity*

图 1. 在 Unity* 中运行的示例快照。

示例内容

该示例包括:

  • 插件源代码
  • 使用该插件的示例 Unity 项目

工作原理

Unity 中的原生纹理副本的工作流程如下所示:

  1. 应用从英特尔® 实感™ SDK 中获取一个 PXCMImage 对象,并使用 QueryNativePointer 函数获取原生 PXCImage 指示器。
  2. PXCImage 指示器和目标 Unity Texture2D 指示器均传递至原生插件。
  3. 该原生插件的回调被 Unity 的渲染器线程调用时,PXCImage 映像的数据将通过相应的图形 API 拷贝至原生纹理。

要求

  • 推荐使用英特尔® 实感™ SDK R5 或更高版本。 可以使用之前的 SDK,但开发人员需要调整 PXCCLR 项目,以支持 QueryNativePointer 函数。
  • 推荐使用 Unity 5.2 或更高版本。 原生插件没有经过之前版本的测试。
  • Visual Studio* 2013 或更高版本。 之前的版本可以使用,但没有经过配置。

运行示例

该示例包含一个名为 "SampleProject" 的 Unity 项目,展示了如何使用插件显示英特尔® 实感™ 摄像头的色彩流。

请按照以下步骤运行该示例:

  1. 下载英特尔® 实感™ SDK 版本 – 必须是英特尔® 实感™ SDK R5 或更高版本。
  2. 更新 SampleProject 的 SDK DLL - 运行 SampleProject 文件夹中的 UpdateSDKDlls.bat,将所需的托管 DLL 从 SDK 拷贝至 SampleProject。
  3. 构建原生插件 – 打开并构建位于 src 文件夹中的 NativeRSTextureCopy.sln。 后期构建步骤将把插件拷贝至 SampleProject 文件夹。
  4. 在 Unity 中打开并运行 SampleProject。

集成插件

请按照下列步骤将原生插件集成至当前正在使用英特尔® 实感™ SDK 的 Unity 应用:

  1. 构建原生插件 – 该插件必须针对应用正在使用的 SDK 重新构建。 打开 Visual Studio 解决方案,面向目标架构构建 Release 配置。
  2. 将 UseTexturePlugin.cs 添加至项目 – 将 UseTexturePlugin.cs 脚本从 SampleProject 文件夹拷贝至您的项目,并将其连接至场景中的持续游戏对象。 该脚本负责发送原生渲染器回调事件,并为原生插件功能提供界面。
  3. 将 PXCMImages 传递至插件 – 将应用中对 PXCMImage.ToTexture2D 的调用替换成对 UseTexturePlugin.CopyPXCImageToTexture 的调用。
  4. 处理 API 特定格式 – 根据图形 API 的不同,纹理可能以垂直翻转的形式显示,或者以反转的颜色显示。 NativeRGBImage.shader 文件展示了如何处理这种格式问题。
  5. 通知关闭 - 在关闭英特尔® 实感™ SDK Sense Manager 之前调用 UseTexturePlugin.RealSenseShutdown 函数。

重要提示

  • 由于该原生插件链接至特定版本的英特尔® 实感™ SDK,因此切换至不同 SDK 版本时必须重新编译该插件。 另外,请务必面向您打算支持的所有 CPU 架构编译该插件。
  • QueryNativePointer 函数已添加至 R5 版本的 C# API 之中,以支持访问托管 SDK 对象的底层原生对象。 该示例还适用于之前的 SDK,但需要将 QueryNativePointer 功能添加至已安装的 SDK 中的 PXCCLR 项目。

产品和性能信息

1

英特尔的编译器针对非英特尔微处理器的优化程度可能与英特尔微处理器相同(或不同)。这些优化包括 SSE2、SSE3 和 SSSE3 指令集和其他优化。对于在非英特尔制造的微处理器上进行的优化,英特尔不对相应的可用性、功能或有效性提供担保。该产品中依赖于微处理器的优化仅适用于英特尔微处理器。某些非特定于英特尔微架构的优化保留用于英特尔微处理器。关于此通知涵盖的特定指令集的更多信息,请参阅适用产品的用户指南和参考指南。

通知版本 #20110804