NSDT工具推荐Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割

术语“3D 建模”是指使用特殊软件创建对象或表面的 3D 数字表示的过程。 3D 模型可用于各种不同的目的,包括电影、视频游戏、建筑和工程。 3D 建模也是创建虚拟现实 (VR) 和增强现实 (AR) 体验工作的重要组成部分。

我们通常通过构建或获取 3D 模型并将其导入 Unity(一个 3D 游戏引擎)来创建虚拟现实场景。 在 Unity 中构建场景时,用户查看的每个组件都具有计算机图形管道中的资源遵循的特定层次结构。 他们是:

  • 网格 - 实际的几何形状
  • 纹理 - 位图图像
  • 材质 - 表面的外观(即反光或哑光以及纹理的链接位置)。 这也是着色器应用的区域。
  • 着色器 - 实际发生的计算。 将其视为一个小程序(脚本),帮助获取所有输入项(例如纹理、网格和照明数据)并将它们输出为最终图像

为了进一步解释每个组件,让我们看一下我们为美国最大的电力公司之一创建的虚拟智能家居体验的一些示例。 在这种 VR 体验(及其配套的 AR 体验)中,消费者学习如何通过在整个家庭中进行节能改造来减少碳足迹。

我们要看到的主要模型是下图所示的餐厅。 最终渲染是所有四个组件(网格、纹理、材质和着色器)协同工作的示例。 现在让我们分解每个组件。

Unity 内的最终渲染

1、网格

首先是模型或网格。 这部分很容易理解。 3D 艺术家将在他们选择的建模程序中创建它。 我们使用 Blender,但 Maya、3DS Max 或 C4D 等其他软件也非常合适。3D 模型由众多顶点组成,这些顶点构成多边形,从而赋予 3D 模型形状。 更多的多边形可以帮助使模型更加真实,但太多也会对您正在开发的平台上的性能产生负面影响。

鉴于这是为实时应用程序创建的,多边形数量应保持尽可能低,以帮助最大限度地提高性能。 这对于桌面和移动 VR 来说尤其重要,因为在打造引人入胜的 VR 体验时保持稳定的帧速率至关重要。 这也有助于减少某些人可能经历的晕动病的感觉。

模型完成后,将对其进行 UV 处理(下一节将详细介绍)、从建模程序导出并导入到 Unity 中。

显示拓扑的模型线框

2、纹理

在我们进一步讨论之前,让我们先退后一步。 创建模型后,必须对其进行 UV 展开。 这只是获取 3D 对象表面并将其放置在 2D 空间中的过程。

Blender 内的 UV 布局

从这里,你可以将模型带入 Substance Painter 等纹理程序中来创建纹理。 使用 Substance Painter 等程序的好处是它允许你导出各种图像,这些图像稍后在 Unity 中设置材质时会很有用。 这些图像可以更轻松地遵循基于物理的渲染(或 PBR),这是一种用于创建更准确渲染的工作流程。

对于标准的 PBR 工作流程,有 4 个主要组成部分:反照率(基色)、粗糙度(光泽程度)、金属性(是否是金属物体)和法线贴图(在不添加更多几何体的情况下伪造细节)。 此外,您还可以使用其他图像,例如环境光遮挡(一种模拟对象之间阴影的方法,在角落和其他紧密区域尤其明显)、发射和高度。

PBR贴图

3、材质

回到 Unity,在我们从纹理程序导出不同的图像后,是时候将它们连接到材质上了。 这些在下面的屏幕截图中进行了说明。 此外,如果你计划在纹理中使用透明度,则可以将表面类型从不透明更改为透明。 一个很好的例子是,如果你正在为游戏制作植物。 可以简单地使用一个平面并应用具有 Alpha 或透明度的叶子纹理,而不是对单个叶子进行建模。

Unity 内部材质和 URP/lit 着色器的一些输入

4、着色器

上面的屏幕截图还显示了方程式的最后一部分 - 使用哪个着色器。 对于 Unity 中的任何材质,你可以指定要使用的着色器(即使用哪种算法或程序来生成最终图形)。 对于我们的餐厅场景,我们使用了通用渲染管道/光照,它使用上一节中描述的 PBR 管道的所有输入。

为了更进一步,你甚至可以使用 Unity 中名为 Shader Graph 的新功能创建自己的着色器! 使用 Shader Graph,用户无需知道如何编码,而是可以通过放置称为节点的预定义代码位来直观地动态构建相同的逻辑。 如果想为特定用例构建特定着色器,这会很有帮助。 下面是两个这样的例子。

  • 示例1

在清洁能源智能家居体验中,我们需要模拟在电磁炉上烹饪汉堡肉饼。对于该模块,用户的任务是将汉堡放在炉子上,以演示电磁炉的特性并展示它如何 只烹饪平底锅上的食物。 为了完成此任务,需要半个煎锅的 3D 模型,以及一个自定义着色器来模拟这种过渡。

演示在电磁炉上烹饪肉饼的着色器示例
  • 示例2

我们在清洁能源智能家居体验中加入的一个设计元素是让全息图在某些时刻淡入和淡出,以帮助说明某些概念。 为了实现这一目标,我们再次需要自定义效果。 为了简洁起见,下面的溶解效果是各种节点的组合,这些节点创建了驱动着色器的 Alpha 透明度阈值的黑白蒙版。

全息图着色器示例

我们使用模型创建、纹理和着色器的工作流程来构建清洁能源智能家居体验中的所有模块和环境。 房子里的一些模块包括:

  • 电动汽车模块,将常规内燃汽车的效果与电动汽车的优点进行比较
  • 暖通空调模块,用户可以观察房屋内空气泄漏对能源效率的影响。
  • 电磁炉模块,比较了电磁炉和传统燃气灶的成本节约和碳排放量

创建或使用 3D 模型时需要考虑和学习的东西还有很多——本文仅触及皮毛。 然而,了解网格、纹理、材质和着色器如何协同工作是开始掌握创建真实 3D 对象和表面所需内容的好方法。 就该项目而言,我们构建了一种体验,允许用户在节能的虚拟智能家居中参与学习模块。 但掌握这四个组件可以让设计师创造出数量难以想象的动态 3D 场景,让用户眼花缭乱、沉浸其中。


原文链接:The Basics of Working with 3D Models in Unity

BimAnt翻译整理,转载请标明出处