已归档 - 使用支持 TouchDesigner* 的英特尔® 实感™ 摄像头: 第 1 部分

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

下载演示文件 ZIP 35KB

TouchDesigner* 由 Derivative*创建,是一个全球广泛使用的平台/程序,用于现场表演期间的交互和实时动画,以及渲染三维动画序列、建筑制图、安装和最近的 VR 工作。 TouchDesigner* 中的英特尔® 实感™ 摄像头支持使其成为一款用途更广、功能更强大的工具。 还有一个实用功能就是使用 .fbx 文件将对象和动画从其他 3D 文件包导入到 TouchDesigner* 中,以及接收渲染的动画和图像。

在这篇包含两个部分的文章中,我将解释英特尔® 实感™ 摄像头如何集成到 TouchDesigner* 中并在 TouchDesigner 中使用。 第 1 部分的演示使用英特尔® 实感™ 摄像头 TOP 节点。 第 2 部分的演示使用 CHOP 节点。 在第 2 部分中,我将解释如何结合英特尔® 实感™ 摄像头创建 VR 和球幕序列。 我将展示 TouchDesigner* 的 Oculus Rift 节点如何与英特尔® 实感™ 摄像头一起使用。 第 1 部分和第 2 部分包含动画和可下载的 TouchDesigner* 文件、.toe 文件,可用于参考。 若要获取 TouchDesigner* (.toe) 文件,请点击文章顶部的按钮。 此外,我们还提供免费非商业版本的 TouchDesigner*,这一版本提供完善的功能(除了最高分辨率限定为 1280 x 1280 之外)。

注:目前有两种类型的英特尔® 实感™ 摄像头:短距离的 F200和较长距离的 R200。小尺寸的 R200 适用于需要隐藏摄像头的现场表演和装置。 与较大的 F200 型号不同,R200 没有手指/手跟踪功能,不支持“标记跟踪”。 TouchDesigner* 支持 F200 和 R200 英特尔® 实感™ 摄像头。

引自 TouchDesigner* 网页:"TouchDesigner* 是一款革命性的软件平台,支持艺术家和设计师在一个开放、自由的环境中联系其媒体。 TouchDesigner* 为以无限可定制的方式混合这些元素提供了一个高性能平台,适合于使用视频、音频、3D、控制器输入、互联网和数据库数据、DMX 照明、环境传感器或者您能够想象的一切的交互式多媒体项目。

在使用支持 TouchDesigner 的英特尔® 实感™ 摄像头* 方面,Derivative 公司的高级开发人员 Malcolm Bechard 这样评价:

“通过使用 TouchDesigner* 基于节点的程序架构,英特尔® 实感™ 摄像头数据可立即导入、可视化并连接到其他节点,无需花费任何时间进行编码。 创意可通过即时反馈循环快速创建原型和开发。作为 TouchDesigner* 中的本地节点意味着无需为每次开发迭代关闭/重新编译应用。英特尔® 实感™ 摄像头增强了 TouchDesigner* 功能,为用户提供了大量预置模块,如手势、手势跟踪、人脸跟踪和图像(深度)数据,用户可以利用这些数据构建交互。 用户无需通过分析低级手势数据来推断手势等方面;它已为用户完成了这些工作。”

在 TouchDesigner* 中使用英特尔® 实感™ 摄像头

TouchDesigner* 是一个基于节点的平台/程序,使用 Python* 作为其主要的脚本语言。 有 5 种执行不同操作和功能的节点类型: TOP 节点(纹理)、SOP 节点(几何)、CHOP 节点(动画/音频数据)、DAT 节点(表格和文本)和 COMP 节点(3D 几何节点和构建二维控制面板的节点),以及 MAT 节点(材料)。 咨询英特尔® 编程人员的 TouchDesigner* 编程人员设计了两个特殊节点:英特尔® 实感™ 摄像头 TOP 节点和英特尔® 实感™ 摄像头 CHOP 节点,以便将英特尔® 实感™ 摄像头整合到程序中。

注:这篇文章面向熟悉 TouchDesigner* 及其接口的用户。 如果您不熟悉 TouchDesigner*,打算按照本文章逐步操作,那么我推荐您先看看此处的一些文档和视频:

学习 TouchDesigner*

注:使用英特尔® 实感™ 摄像头时,注意其范围以获得最佳效果是很重要的。 在这个英特尔® 网页上,您可以看到每个摄像头的范围和使用摄像头的最佳操作实践。

英特尔® 实感™ 摄像头 TOP 节点

TouchDesigner* 中的 TOP 节点执行的许多操作与传统合成项目相同。 英特尔® 实感™ 摄像头 TOP 节点利用英特尔® 实感™ 摄像头传输的 2D 和 3D 数据提要,增强了这些功能。 英特尔® 实感™ 摄像头 TOP 节点有许多设置来获得不同形式的数据。

  • Color. The video from the Intel® RealSense™ camera color sensor.
  • Depth. A calculation of the depth of each pixel. 0 means the pixel is 0 meters from the camera, and 1 means the pixel is the maximum distance or more from the camera.
  • 色彩。 来自英特尔® 实感™ 摄像头色彩传感器的视频。
  • 深度。 计算每个像素的深度。 0 表示像素距离摄像头 0 米,1 表示像素与摄像头之间为最大距离或更远。
  • 原始深度。 数值直接取自英特尔® 实感™ SDK。 再强调一次,0 表示距离摄像头 1 米远,1 表示与摄像头之间为最大距离或更远。
  • 可视化深度。 来自英特尔® 实感™ SDK 的灰度图像,可帮助您显示深度。 它不能用于实际确定像素与摄像头的精确距离。
  • 深度转彩色 UV 贴图。 32 位浮点 RG 纹理的 UV 值(注意,没有蓝色),需要用来重新映射深度图像,以符合彩色图像。 您可以使用“重新映射 TOP 节点”来调整图像,以确保一致。
  • 彩色转深度 UV 贴图。 32 位浮点 RG 纹理的 UV 值(注意,没有蓝色),需要用来重新映射彩色图像,以符合深度图像。 您可以使用“重新映射 TOP 节点”来协调这两者。
  • 红外线: 来自英特尔® 实感™ 摄像头红外传感器的原始视频。
  • 点云。 3D 空间中的点云(x、y 和 z 坐标)或英特尔® 实感™ 摄像头的扫描器所创建的点云。
  • 点云彩色 UV。 可用于从彩色图像流中获取每个点的颜色。

注:您可以下载 RealSensePointCloudForArticle.toe 这个 toe 文件,作为从英特尔® 实感™ 摄像头的数据创建 3D 动画几何图形的简单开始模板。 这个文件可以在许多方面进行修改和更改。 英特尔® 实感™ 摄像头的三个 TOP 节点(点云、颜色和点云彩色 UV)可创建一个由点(颗粒)组成的 3D 几何图形和映射到几何图形上的彩色图像。 这会带来许多令人激动的可能。


点云几何图形这是一个使用英特尔® 实感™ 摄像头制作的动画几何图形。 这一技术非常适合在现场表演中使用。 还可以添加人物说话的声音。 TouchDesigner* 还可以使用音频中的数据创建实时动画。

英特尔实感摄像头 CHOP 节点

注:还有一个控制 3D 跟踪/位置数据的英特尔® 实感™ 摄像头 CHOP 节点,我们将在本文的第 2 部分讨论。

演示 1: 使用英特尔® 实感™ 摄像头 TOP 节点

点击文章顶部的按钮,获取第一个 TOP 演示: settingUpRealNode2b_FINAL.toe

演示 1,第 1 部分: 您将学习如何设置英特尔® 实感™ 摄像头 TOP 节点并将其连接到其他 TOP 节点。

  1. 打开添加运算符/OP 创建对话框。
  2. 在 TOP 部分下,点击“实感”。
  3. 在英特尔® 实感™ 摄像头 TOP 节点的 “设置” 参数页面,针对图像,从下拉菜单中选择“颜色” 。 在英特尔® 实感™ 摄像头 TOP 节点中,摄像头指向内容的图像将显示,就像摄像机中一样。
  4. 将英特尔® 实感™ 摄像头的分辨率设为 1920 x 1080。
     


    英特尔® 实感™ 摄像头 TOP 节点设置起来非常简单。

  5. 创建一个水平 TOP 节点并将其连接到英特尔® 实感™ 摄像头 TOP 节点。
  6. 在水平 TOP 节点的预参数页面,选择“反转”并将滑块滑动到 1。
  7. 将水平 TOP 节点连接到 HSV 转 RGB TOP 节点,然后将其连接到空 TOP 节点。


英特尔® 实感™ 摄像头 TOP 节点可连接到其他 TOP 节点,以创造不同的外观和效果。

接下来,我们会将这个创建的图像纳入 Phong MAT(材料),以便我们绘制图像的纹理几何图形。

使用英特尔® 实感™ 摄像头数据为几何图形创建纹理

演示 1,第 2 部分: 本练习将为您展示如何使用英特尔® 实感™ 摄像头 TOP 节点创建纹理,以及如何将这些纹理添加到随后可分配到项目几何图形的 MAT 节点。

  1. 将几何图形(地区)COMP 节点添加到您的场景中。
  2. 添加 Phong MAT 节点。
  3. 将空 TOP 节点拖动到 Phong MAT 节点的颜色贴图参数中。
     


    使用面向其颜色贴图参数的英特尔® 实感™ 摄像头数据的 Phong MAT。

  4. 在地区 COMP 的渲染参数页上,针对材料参数,添加 phong1类型,使其将 phong1 节点作为其材料。
     


    使用面向其颜色贴图参数的英特尔® 实感™ 摄像头数据的 Phong MAT 添加到地区 COMP 节点的渲染/材料参数。

创建 Box SOP 并通过刚刚创建的 Phong Shader 绘制纹理

演示 1,第 3 部分: 您将学习如何使用英特尔® 实感™ 摄像头数据,将您创建的 Phong MAT 着色器分配到方框几何图形 SOP。

  1. 进入 geo1 节点的子级 (/project1/geo1)。
  2. 创建一个方框 SOP 节点,一个纹理 SOP 节点和一个材料 SOP 节点。
  3. 删除环形 SOP 节点并将 box1 节点连接到 texture1 节点和 material1 节点。
  4. material1 节点的材料参数中,输入: ../phong1,这会将它引用到您在父级中创建的 phong1 MAT 节点。
  5. 若要在方框的每个面上放置纹理,在 texture1 节点的参数中,即纹理/纹理类型中,放置并设置纹理/偏移投入 .5 .5 .5
     


    在geo1 COMP 节点的子级,方框 SOP 节点、纹理 SOP 节点和材料 SOP 节点是相连的。 材料 SOP 正在从phong1 MAT 节点获取其纹理。 ( …/phong1).

为方框几何图形创建动画和实例

演示 1,第 4 部分: 您将学习如何使用变换 SOP 节点和简单表达式旋转几何图形 SOP。 然后您将学习如何为方框几何图形创建实例。 最后我们将获得一个这样的界面:界面上布满了旋转方框,方框中包含来自英特尔® 实感™ 摄像头 TOP 节点的纹理。

  1. 若要为 X 轴上旋转的方框创建动画,在纹理 SOP 节点后插入一个变换 SAP 节点。
  2. transform1 SOP 节点的旋转参数的 x 组件(第一个字段)中插入一个表达式。 这个表达式不依赖于帧,当时间轴上的帧用完时,表达式将继续运行,不开始重复。 我乘以 10,以增加速度: absTime.seconds*10
     


    在这里您可以看到立方体是如何旋转的。

  3. 为了制造方框,回到父级 (/project1),在 geo1 COMP 节点的“实例” 页参数中 ,将实例更改为“开启”。
  4. 将网格 SOP 节点和 SOP 添加至 DAT 节点。
  5. 将网格参数设置为 10 行和 10 列,大小设为 2020
  6. 在 SOP 转 DAT 节点参数中,对于 SOP,放置 grid1 并确保“提取” 用于设置
  7. geo1 COMP的实例页参数中,对于 CHOP/DAT 实例,输入: sopto1
  8. 分别用 P(0)、P(1) 和 P(2) 填充 TX、TY 和 TZ 参数,指定实例位置将使用 sopto1 节点中的哪些列。
     


    点击文章顶部的按钮下载 TOP_Demo1_forArticle.toe,查看我们在第一个英特尔® 实感™ 摄像头 TOP 演示中所做的工作。

  9. 如果您希望在未过滤的英特尔® 实感™ 摄像头中查看图像,断开或绕过水平 TOP 节点和 HSV 转 RGB TOP 节点。
     

现场渲染或执行动画

演示 1,第 5 部分: 您将学习如何建立一个要现场执行或作为电影文件呈现的场景。

  1. 若要渲染项目,添加一个摄像头 COMP 节点、光 COMP 节点和一个渲染 TOP 节点。 默认情况下,摄像头将渲染场景中的所有几何图形组件。
  2. 回到 Z 轴,将摄像头平移约 20 个单位。 将光留在默认设置上。
  3. 将渲染分辨率设为 1920x1080。 默认情况下,渲染背景是透明的(alpha 为 0)。
  4. 为了使背景在正方形后面成为不透明的黑色,添加一个常量 TOP 节点并将颜色更改为 0,0,0,以便将其更改为黑色,并将 Alpha 留为 1。 您也可以选择另一种颜色。
  5. 添加一个 Over TOP 节点并将渲染 TOP 节点连接到第一个连接,将常量 TOP 节点连接到第二个连接。 这样便可以设置渲染的背景像素(0, 0, 0, 1),这一背景现在已不再透明。

将 TOP 的 alpha 更改为 1 的另一个方法是使用重新排序 TOP,并将其输出 Alpha 参数设为 Input 11


显示渲染后的场景,其背景为不透明的黑色。


在这里您可以看到,整个屏幕已经布满了纹理旋转立方体。

如果您想要呈现出动画,而不是在表演中实时播放动画,您必须在 TouchDesigner 程序顶部栏的文件下选择导出电影对话方框。 在 TOP 视频的参数中,为这一特定示例输入 null2。 否则,输入您要渲染的任何 TOP 节点。


此处是“导出电影”面板,null2 已被拖入。 如果我有一个配套的音频 CHOP,我会在放置 null2 的位置下面直接将其拖入或放入CHOP 音频插槽。

演示 1,第 6 部分: 使 TouchDesigner* 成为特殊平台的一个因素是您可以利用它制作实时性能动画。 与英特尔® 实感™摄像头配合使用时,这一功能特别有用。

  1. 添加一个窗口 COMP 节点,在操作员参数中,输入 null2 TOP 节点。
  2. 将分辨率设为 1920 x 1080。
  3. 位置参数中选择您想要的显示器。 借助窗口 COMP 节点,您可以对投射到您所选显示器的整个动画进行实时执行。 使用窗口 COMP 节点,您可以指定您希望播放表演的显示器或投影机。
     


    您可以根据自己的需要创建任意数量的窗口 COMP 节点,以便将输出引导到其他显示器。

演示 2: 使用英特尔® 实感™ 摄像头 TOP 节点深度数据

英特尔® 实感™ 摄像头 TOP 节点拥有许多对于创建纹理和动画有用的其他设置。

在演示 2 中,我们使用深度数据,在基于摄像头深度数据的图像上应用模糊。 点击文章顶部的按钮,获取下面这个文件: RealSenseDepthBlur.toe

首先创建一个英特尔® 实感™ 摄像头 TOP 并将其图像参数设为深度。 如果距离摄像头近,深度图像的像素为 0(黑色),如果距离摄像头远,像素则为 1(白色)。 像素值的范围由仪表中指定的最大深度参数控制。 默认情况下,像素值为 5,表示像素 5 或距离摄像头更远将为白色。 如果像素值为 0.5,则表示距离摄像头 2.5 米。 根据摄像头与您的距离,缩小这一数值或许有好处。 在本例中,我们将其更改为 1.5 米。

接下来,我们想要处理一下深度,使用阈值 TOP,移除我们关注范围之外的对象。

  1. 创建一个阈值 TOP 并将其连接到 realsense1 节点。 我们想要剔除超过与摄像头特定距离的像素,将比较参数设为更大,将阈值参数设为 0.8。 这使得大于 0.8 的像素(如果我们将英特尔® 实感™ 摄像头 TOP 中的最大深度设为 1.5,则为 1.2 米或更远)变为 0,所有其他像素变为 1。
     

  2. 创建乘法 TOP 并将 realsense1 节点连接到 第一个输入,将 thresh1 节点连接到第二个输入。 用我们需要的像素乘以 1 将让它们保持原样,乘以 0 会让它们归零。 对于您想要控制模糊度的部分图像,multiply1 节点现在只有大于 0 的像素。
  3. 在 TOP 中创建一个电影文件,为其文件参数选择一个新图像。 在本例中,我们从 TouchDesigner* Samples/Map 目录中选择 Metter2.jpg。
  4. 创建一个 Luma Blur TOP 并将moviefilein1 连接到 lumablur1 的第一个输入,将 multiply1 连接到 lumablur1 的第二个输入。
  5. lumablur1 的参数中,将白度值设为 0.4,黑色过滤器宽度设为 20,白色过滤器宽度设为 1。 这使第一个输入为 0 的像素拥有 20 的模糊过滤器宽度,数值为 0.4 或更大的像素拥有 1 的模糊宽度。
     


    整个布局。

最后您将获得一个用户所在位置的像素不模糊、其他像素模糊的图像。


通过显示 Luma Blur TOP,背景将显示图像的模糊方式。

演示 3: 通过重新映射 TOP 节点使用英特尔® 实感™ 摄像头 TOP 节点深度数据

点击文章顶部的按钮,获取下面这个文件: RealSenseRemap.toe

注:英特尔® 实感™ 摄像头 TOP 节点的深度和彩色摄像头位于全球的不同地方,因此它们生成的默认图像不会对齐。 例如,如果您的手被放置在彩色图像的中间,它将不会位于深度图像的中间,而会稍微偏左或偏右一些。 通过改变周围的像素,VU 重新贴图修复了这一问题,以便它们彼此对齐。 注意对齐和未对齐 TOP 之间的区别。


通过使用深度转彩色 UV 数据,重新映射 TOP 将英特尔® 实感™ 摄像头 TOP 的深度数据与英特尔® 实感™ 摄像头 TOP 的彩色数据进行了对齐,将它们放置在同一个空间。

演示 4: 在英特尔® 实感™ 摄像头 TOP 节点中使用点云

点击文章顶部的按钮,获取下面这个文件: PointCloudLimitEx.toe

在这个练习中,您将学习如何使用英特尔® 实感™ 摄像头 TOP 节点点云设置和限制 SOP 节点,创建动画几何图形。 注意,这种方法与本文开始时展示的点云示例文件不同。 之前的示例使用能够生成更多点的 GLSL 着色器,但操作起来更加复杂,并且不在本文的范围之内。

  1. 创建实感™ TOP 节点并将参数图像设为点云
  2. 创建一个 TOP 转 CHOP 节点并将其连接到选定 CHOP 节点。
  3. 将选定 CHOP 节点连接到数学 CHOP 节点。
  4. topto1 CHOP 节点参数 TOP 中,输入: realsense1
  5. 在选定 CHOP 节点参数“通道名称”中,输入 r g b,在字母之间留一个空格。
  6. 在 “乘法” 参数的 math1 CHOP 节点中,输入: 4.2
  7. 范围参数页上,To Range, 输入: 1 和 7。
  8. 创建一个限制 SOP 节点。

引自 www.derivative.ca 在线维基页面上的信息,“限制 SOP 从通过CHOP 提供给它的示例创建几何图形。 它在示例中的每个点上创建几何图形。 使用通道页面上的输出类型参数可创建不同类型的几何图形。"

  1. limit1 CHOP 通道参数页面上,在 X 通道中输入 r,Y 通道中输入 g,Z 通道中输入 b。
     

    注:将 r g 和 b 切换到不同的 X Y 或 Z 通道可更改正在生成的几何图形。 所以您可能希望以后试试这个: 在输出参数页,针对输出类型,从下拉列表中选择每个点上的球。 创建一个 SOP 转 DAT 节点。 在参数页面上,针对 SOP,放入 limit1 或将您的 limit1 CHOP 拖入参数中。 保留“提取”参数中的默认点设置。 创建一个渲染 TOP 节点,一个摄像头 COMP 节点和一个光 COMP 节点。 创建一个重新排序 TOP 并将输出 Alpha 设为 Input 11 并将其连接到渲染 TOP。


    由于英特尔® 实感™ 摄像头中的图像发生变化,几何图形也会发生变化。 这是最终布局。


    Over TOP CHOP 节点中的最终图像。 通过更改限制 TOP 参数中的通道的顺序,您可以更改基于点云的几何图形。

在本文的第 2 部分,我们将讨论英特尔® 实感™ 摄像头 CHOP 以及如何为表演、球幕表演和 VR 创建渲染内容和实时内容。 我们还将展示如何使用 Oculus Rift CHOP 节点。 我们将讨论手势跟踪、面部跟踪和标记跟踪。

关于作者

Audri Phillips 是洛杉矶的一位视觉论者/3D 动画师,在 Sony*、Rhythm and Hues*、Digital Domain*、Disney* 和 Dreamworks* 动画电影等工作室从事超过 25 年的视效/娱乐业工作,拥有丰富的经验。 她起初是一位画家,后来被基于时间的艺术所吸引。 她一直热衷于使用新工具,在将计算机动画/艺术用于实验电影作品(包括沉浸式表演)方面是行业先驱。 现在,她已将自身才能用于 VR 创作。 最近,三星* 已将其作品融入到了新的 Gear Indie Milk VR 渠道之中。

她最新的沉浸式作品/动画包括: 洛杉矶剧院中心 2015“内爆舞蹈节 (Implosion a Dance Festival)”的多媒体动画、Vortex Immersion 圆顶的 3 场球幕音乐会,其中一场由著名作曲家/音乐家史提夫•洛奇 (Steve Roach) 指挥。 她的第四场球幕音乐会“无情的宇宙”将于 2015 年 11 月 7 日上演。 她还为 2014 年动漫大会上展出的电视连续剧“君士坦丁(Constantine)*”创作了面向圆顶演出的动画内容。 她的几部球幕作品“迁移 (Migrations)”和“无情的美丽 (Relentless Beauty)”已被推荐参加 "Currents"(圣达菲国际新媒体艺术节)和德国的耶拿球幕节。 她在洛杉矶的 Young Projects 美术馆展示自己的作品。

她为英特尔撰写在线内容和博客。 Audri 是伍德伯里大学的兼职教授、洛杉矶抽象电影集团的创始成员和领导者、Hybrid Reality Studio(专注于创作 VR 内容)的创始者、IOTA 中心的董事会成员以及洛杉矶艺术实验室的展示成员。 2011 年,Audri 成为了 Vortex Immersion Media 和 c3: CreateLAB 的驻留艺术家。

Para obter informações mais completas sobre otimizações do compilador, consulte nosso aviso de otimização.