Unity 中的水
How do I import models from my 3D app?

艺术资源最佳实践指南

Unity 支持来自各种程序或来源的纹理化 3D 模型。本简短指南由 Unity 游戏美术师和开发人员汇总而成,旨在帮助您在 Unity 项目中创建更好用、更高效的资源。

比例和单位

按比例工作对于光照和物理模拟都很重要。

  • 将您的系统单位和项目单位设置为公制 (Metric),从而使您的软件与 Unity 保持一致。
    • 请注意,不同的系统使用不同的单位;例如,Max 的系统单位默认值为英寸,而 Maya 中的系统单位默认值为厘米。
    • Unity has different scaling for FBX and 3D application files on import. Make sure you check the FBX import scale setting in Inspector. See documentation on Importing models for more information.
    • For example, if you want to achieve Scale Factor = 1, File Scale = 1 and Object Transform Scale = 1, use the 3D application-native file formats, listed in Importing Objects.
    • 如果有疑问,请用场景导出“米立方体”以便在 Unity 中匹配。
  • 动画帧率默认值可能在不同的包中不同。因此,最好在整个工作流程中设置一致的值(例如,设置为 30fps)。

文件和对象

  • 为场景中的对象提供合理唯一的名称。这种做法有助于您找到项目中的特定网格并对其进行故障排除。
  • 避免使用特殊字符,如 *()?"#$
  • 为对象和文件使用简单但具有描述性的名称,以方便以后进行复制。
  • 保持层级视图尽可能简单。
  • 对于 3D 应用程序中的大项目,请考虑在 Unity 项目的目录外部存放工作文件。这样通常可以节省运行更新和导入不必要数据的时间。
合理命名对象有助于快速定位
合理命名对象有助于快速定位

网格

  • 使用高效的拓扑进行构建。仅必要时才使用多边形。
  • 如果几何体的多边形太多,请对几何体进行优化。许多角色模型需要由美术师进行智能优化甚至重建,特别是如果模型来自或基于:
    • 3D 捕获数据
    • Poser
    • Zbrush
    • 专为渲染而设计的其他高密度 NURBS 样条曲线模型
  • 成本允许的情况下,在建筑物、景观和大型结构中使用均匀分布的多边形将有助于分散光照并避免尴尬的扭结。
  • 避免十分狭长的三角形。
阶梯帧率优化
阶梯帧率优化

用于构造对象的方法会对多边形的数量产生巨大影响,尤其是在未进行优化的情况下。在上图中,相同形状的网格在右侧有 156 个三角形,在左侧有 726 个三角形。726 个可能听起来不像是很多的多边形,但如果在一个关卡中使用 40 次,您将真正看到性能节省有多大。根据经验法则,通常应一切从简,仅在需要时添加细节。添加多边形总是比移除多边形更容易。

纹理

如果将纹理固定为 2 的幂(例如,512x512 或 256x1024),纹理将更有效,并且在构建时不需要重新缩放。您可以使用高达 4096x4096 像素,但 2048x2048 是许多显卡和平台上支持的最高像素。

您可以在线搜索有关创建合理纹理的专家建议,但本指南中的一些准则可帮助您从项目中获得最有效的结果:

  • 在 Unity 项目外部处理高分辨率源文件(例如 .psd 或 Gimp 文件)。始终可以从源文件缩小尺寸,但反过来却不行。
  • 使用场景中所需的纹理分辨率输出(保存副本,例如 256x256 优化的 .png 或 .tga 文件)。您可以根据纹理的显示位置和贴图位置做出判断。
  • 将输出纹理文件存储在 Unity 项目中(例如,在 \Assets\textures 中)。
  • 确保 3D 工作文件引用相同的纹理,从而在保存或导出时保持一致性。
  • 充分利用纹理中的可用空间,但请注意不同材质需要使用相同纹理的不同部分。因此最终可多次使用或加载该纹理。
  • 对于可能需要不同着色器的 Alpha 和元素,请使用不同的纹理。例如,下面左侧的单个纹理已替换为下面右侧的三个较小纹理。
一个纹理(左)与三个纹理(右)
一个纹理(左)与三个纹理(右)
  • 利用无缝重复的平铺纹理。这样就能使用空间中重复的更高分辨率。
  • 从位图中删除容易引人注意的重复元素,并注意对比度。若要添加细节,请使用贴花和对象来分解重复元素。
平铺纹理
平铺纹理
  • Unity 负责处理用于输出平台的压缩,因此除非您的源文件已经是正确分辨率的 .jpg,否则最好为纹理使用无损格式。
  • 基于照片创建纹理页面时,将页面缩小为可重复的单个模块化部分。例如,不需要 12 个相同的窗户完全占据纹理空间。这意味着可为这一个窗户提供更多像素细节。
对于窗户而言,简单就是美
对于窗户而言,简单就是美

材质

  • 组织并命名场景中的材质。这样就能在导入材质后在 Unity 中更轻松地查找和编辑材质。
  • 可选择在 Unity 中通过以下任一方式创建材质:
    • <模块名称> - <材质名称> 或
    • <纹理名称> 确保您知道自己想要哪一种方式。
  • 本机资源包中的材质的设置不会全部导入 Unity:
    • 通常支持 Diffuse ColourDiffuse TextureNames
    • 无法识别或导入着色器模型、镜面反射、法线、其他次要纹理和物质材质设置。

导入和导出

Unity can use two types of files: Saved 3D application files, and Exported 3D formats. Which you decide to use can be quite important.

Saved application files

Unity can import, through conversion, Max, Maya, Blender, Cinema4D, Modo, Lightwave and Cheetah3D files, e.g. .MAX, .MB, .MA etc. See more in Importing Objects.

优点:

  • Quick iteration process (save and Unity updates)
  • Simple initially

缺点:

  • A licensed copy of that software must be installed on all machines using the Unity project
  • Files can become bloated with unnecessary data
  • Big files can slow Unity updates
  • Less Validation and harder to troubleshoot problems

Exported 3D formats

Unity can also read FBX, OBJ, 3DS, DAE and DXF files. For a general export guide, you can refer to the FBX export guide.

优点:

  • Only export the data you need
  • Verify your data (re-import into 3D package) before Unity
  • Generally smaller files
  • Encourages a modular approach

缺点

  • Can be slower pipeline or prototyping and iterations
  • Easier to lose track of versions between source (working file) and game data (exported FBX)
Unity 中的水
How do I import models from my 3D app?