英特尔® 实感™ 3D 扫描: 在 Blender 中将顶点颜色转化为 UV 贴图

英特尔® 实感™ F200 摄像头的最新版 软件开发套件现在包含 3D 扫描功能。 这是一个惊艳的功能,支持开发人员和数字艺术家在实际物体中进行扫描,以用于其项目。 有一个用例是在实际物体中扫描并在 Unity 中使用。 本博文将介绍如何通过原始扫描转化顶点颜色来创建 UV 纹理贴图,以便大家将扫对象导入至 Unity。 这篇帖子大部分为图片,因此无需太担心文章过长。 着手进行后,大家会发现这一流程非常简单。

整个流程涉及 4 个关键步骤。 这篇帖子将重点介绍第 3 步。 访问下列链接,查阅有关其他步骤的帖子。

  1. 使用英特尔实感软件开发工具 3D 扫描代码示例进行扫描
  2. 将 OBJ 文件格式转化为 PLY 以便在 Blender 中编辑
  3. 将顶点颜色转化为 UV 贴图并编辑 3D 网格以减少 Blender 中的顶点/多边形数量
  4. 导入以便在 Unity 中使用

您需要完成:

  1. 使用(免费)软件开发套件,在英特尔酷睿第四代处理器或更高版本处理器上运行英特尔实感摄像头
  2. 通过英特尔实感技术扫描物体并转化为 PLY 文件(通过 MeshLab,免费)
  3. Blender (免费)

流程概述:

此处主要是导入 3D 文件,并拷贝该文件。 清空副本,然后针对新的复制版本将顶点颜色绘制成 UV 贴图。

第 3 步(共 4 步)

在 Blender 中创建新项目 (Project),选择 "Import PLY" 文件格式,然后选择您要从 MeshLab 中导出的 PLY 文件。

完成导入后,纹理将会消失。


然而,如果切换到 Texture 视图,您会发现扫描的 RGB 颜色现在已绘制成 Texture 模式。

如欲查看颜色,请将视图模式准确切换至 Materials。 在右面板上选择 Materials 图标。 创建新 Material。 在面板编辑器中将 Shading 设置为 Shadeless,并在 Options 中打开 Vertex Color Paint。 这一操作能够顺利将顶点颜色设置为扫描对象的材质。

但现在还不是能够为我们所用的网格。 上面布满孔洞,表面非常粗糙,多边形数量也超出了我们所需的数量。 我们希望创建的网格版本能够清空,但以 UV 贴图形式绘制其顶点着色的纹理。 我们能将该版本导入至 Unity。

创建网格副本:

前往对象菜单 (Object Menu)。 选择 Duplicate Mesh,并点击确认。 不要移动鼠标。

前往对象菜单 (Object Menu),然后选择 Move To Layer,并选择右边的正方形。

前往资产浏览器,重新命名您的网格。 一个命名为原始网格 (Original Mesh),另一个命名为第二网格 (Second Mesh)。 这样有助于保持它们的直观状态。

选择 Second Mesh,然后选择 Layer to View,并将模式更改为 Solid 渲染。

然后选择 Tool Wrench Icon 以添加修改器。 我们要更改多边形数量并获取更清晰的网格,以处理第二网格。

从 Tools 中选择 Remesh 。 在 Remesh 工具中将 Oct Tree 设置为 7-8。 将模式 (Mode) 设置为 Smooth,然后打开 Smooth Shading。 这样您会丢失材质贴图。

单击 Apply。 现在您有一个更清晰的网格供您使用 Vertex 和 UVMap。

进入该第二网格的 Edit Mode。 在 Select Menu 下方选择 All。

创建一个新 Window 并将其设置为 UV Map Mode,以查看 UVMap。


在 3D 窗口下方进入网格菜单并选择 UV。

在 UV Map Window 中选择 NEW,以创建纹理。 关闭 Alpha。 将纹理命名为您导出的模式名称。

切换至 Object Mode。 您将看到 Black Model 和 Black UV Map。 这样就可以了。

现在使用 Shift 键打开这两个层。

在资产浏览器中选择 Original Mesh。

进入 Camera Icon。

在 Bake 区域下方打开 Select to Active。 确保 Bake to Vertex 处于关闭状态。

在 Scene 下方将 Color Management 设定为 None。

在资产菜单 (Asset Menu) 中您需要首先选择 Original Mesh。 按下 SHIFT 键,然后选择 Second Mesh。 (必须按照顺序完成此项操作)。 请注意,必须确保两个层处于视线范围内,且摄像头图标处于打开状态。

前往摄像头图标。 在 Bake 下方单击 Bake。

您现在应该已绘制了一个纹理。 如欲查看该纹理,关闭第一个层,仅查看包含第二网格的层。 选择 Texture 视图,您将看到带有纹理的网格以及您的 UV 贴图。

你将会看到神奇的一点是,网格的缺失区域布满了图像。

您可进入 Texture Paint 模式清空这些图像。 还可进入 Sculpt 模式填满缺失区域,清空或在网格中添加特征。 完成这些操作后,我们的网格就已完成,可以准备导出了。 最后需要牢记几点:

  • 务必使 UVMap 的名称和网格目录中的名称保持一致。
  • 前往 UVMap Window、Image 菜单,选择 Save As,将网格保存在目录中。
  • 然后前往文件目录 (File Menu),使用与 UV 贴图相同的名称导出 .FBX 文件。

现在您可以将3D 网格导入至 Unity

如欲了解有关使用英特尔® 实感™技术的更多信息,请查看英特尔® 实感™ 开发人员专区

有关编译器优化的更完整信息,请参阅优化通知