为Meta Spark准备3D模型
有许多工具可以帮助你为 Meta Spark Studio 创建 3D 对象,包括 Cinema4D、Blender 和 3ds Max。你还可以使用 Meta Spark Toolkit 优化 Blender 对象。
在本指南中,我们将介绍正确的设置,以便你可以成功地为 Meta Spark Studio 准备对象,并确保它们在你的体验中更有效地工作。
1、缩放和定位
以下是在缩放和定位对象以进行导出时需要牢记的要求列表。导入后,你还可以启用 Meta Spark Studio 真实世界比例设置。
- 以米为单位导出你的模型。Meta Spark Studio 假设模型以米为单位上传。
- 使用内置的 3D 测量工具检查对象的尺寸,并根据需要放大和缩小对象以匹配对象的真实尺寸或所需尺寸。
- 保持所有 3D 对象不小于 1 厘米且不大于 5 米。用户可能无法与超出这些尺寸的对象进行交互。
- 将对象的原点设置为其几何体的中心。
- 正确定位和缩放对象后,不要忘记将对象的新变换值设置为默认值。在导出对象之前执行此操作。
左侧的图像是导入的鸟类对象,但比例不正确。右侧的图像显示了一只正确缩放的鸟。
2、网格
3D 对象网格中的三角形数量或“三角形数量”会影响性能。最好将三角形数量保持在尽可能低的水平。每个对象的最大三角形数量应低于 50,000。将效果中所有对象的总三角形数量保持在 150,000 以下。
以下是减少三角形数量的一些技巧:
- 如果不需要可见,请从网格中删除任何内部几何图形:如果你的对象是戴帽子的角色,请删除隐藏在视图之外的头部部分。
- 修复几何图形:尝试删除松散的几何图形、三角形和顶点,制作平面,删除重叠的面并合并重叠的顶点。这将减少三角形数量和产生伪影(意外像素化和其他图形效果)的可能性,尤其是在使用 3D 扫描时。如果你在 Blender 中工作,Meta Spark Toolkit 将为你清理网格。
- 将网格中高度详细的部分转换为纹理:如果你正在制作花冠并且花朵不会聚焦,请将它们映射到低多边形凹盘上,而不是导入带有每个花瓣和所有柱头的整个 3D 花朵。你可以在不需要太多细节的选定区域中设置较低的网格密度。
在下图的右侧,可以删除构成短裤下方角色臀部和腿部的几何图形,因为用户看不到它们。
你还可以通过以下方式优化网格:
- 尽可能将网格合并在一起。这将减少效果中的对象数量,并通常提高性能。
- 将多边形保持在三角形和四边形中以避免伪影。
3、UV 贴图
UV 贴图是 3D 对象表面的 2D 表示。要获得最佳纹理效果,UV 贴图过程必须成功。要优化该过程:
- 手动生成 UV 贴图,而不是自动生成。
- 将 UV 外壳保持在最低限度,不要重叠,否则会出现伪影。
- 在外壳之间留出填充。例如,1K 纹理的外壳之间应有 8 像素的填充。
- 仅对 3D 对象使用一个 UV 贴图。
左侧的图像显示了具有重叠 UV 的 UV 贴图。右侧图像是组织良好的 UV 贴图。
4、材质
创建材料时:
- 优先考虑标准和平面着色器,而不是 PBR 着色器,以获得更高的性能。
- 对于需要它的逼真 3D 模型,使用基于物理的材料 (PBR) 和环境纹理。
- 尽可能少使用材料。
- 尽可能合并材料以提高性能。
- 使用着色器时,简单是最好的。加、乘、减函数比其他函数(pow、exp、log、cos、sin、tan)占用的资源更少。
5、纹理
GPU 内存是一种宝贵的资源,因此高效思考会让你的内容和其他内容的帧速率受益。要实现有趣而高效的纹理结果:
- 在 sRGB 空间中使用纹理,最大分辨率为 1024 x 1024 像素,并且只使用你需要的大小。
- 为了获得更好的性能,请以 2 的幂(64x64、128x128、256x256、512x512、1024x1024)制作纹理。
- 对于简单对象,请尝试使用顶点颜色和平面着色以减少对纹理内存的依赖。你可以使用顶点颜色在 Spark 中为视觉交互性制作动画。
- 尽可能利用纹理图集:将多个纹理组合成一个图像,以减少纹理和绘制调用的总数。更突出的英雄对象应该在你的图集中占用更多空间。
- 可以更进一步,使用颜色通道打包来节省空间:将纹理信息编码到图像的各个颜色通道中,以便在逻辑中使用。专业提示:你可以通过这种方式使纹理单调,并动态更改其颜色或通过在顶部乘以颜色图来更改颜色。
- 如果可能,请避免使用带有 alpha 通道的图像。这些图像比 RGB 图像消耗更多的 GPU 内存。你可以使用黑色背景和材质属性中的混合模式来实现类似的效果。
- 如果使用 Adobe® Substance Painter® 纹理软件创建纹理,请使用 Meta Spark 模板使你的纹理兼容。
- 对于具有重复图案的纹理,请导入较低分辨率的图像并使用 Meta Spark Studio 的视觉着色器和纹理平铺功能,而不是使用较大分辨率的图像。你还可以以独特的方式转换纹理以适当地重复使用它们。
- 在将纹理带入 Spark 之前对其进行压缩,以更好地控制质量和灵活性。
在 AR 效果中很难实现具有逼真灯光的纹理,并且需要大量的处理能力。为减少对性能的影响:
- 将照明直接烘焙到用于面部效果装饰的 3D 对象中,以暗示高光和阴影。
- 将照明烘焙到静态(非移动)对象(如家具和配饰)中,以获得更逼真的效果
- 使用柔和的灯光设置,不要使用强烈的高光或阴影。烘焙照明最适合光线、强度、颜色等在整个效果过程中不会发生变化的环境。
- 将 MatCap(材质捕捉)反射环境纹理与平面着色器结合使用。
- 不可以使用环境光将一个环境纹理用于所有 3D 对象,以便在场景中共享。
6、绑定和蒙皮
如果你正在构建动画 3D 对象,你将创建(装配)骨架并将网格附加(蒙皮)到骨架上,以控制对象移动时的变形方式。如果此过程未针对 Meta Spark 工作室进行优化,则动画的组件可能无法正常工作或性能不佳。
创建骨架时:
- 虽然动画对象中可以使用的骨骼数量没有上限,但我们建议使用尽可能少的骨骼以减少对性能和大小的影响。少于 20 个是一个不错的开始。
- 利用简单、直接动画的骨骼或“双骨架”装配导出到 Spark。Spark 无法理解约束和其他装配控件或高级设置。
- 对骨骼使用一致的命名约定,并为每个单独的骨骼使用单独的名称。例如,左臂为 arm_L,右臂为 arm_R。
- 使用 Z+ 向前和 Y+ 向上调整骨骼方向。
- 在所有轴上将每个骨骼的比例设置为 1。
- 以自然层次结构组织骨骼。Meta Spark Studio 将松散的骨骼视为空对象,不会将它们识别为变形器。
以下是两种可能的骨架层次结构。右侧图像是最佳实践示例。
不建议将下面的骨架层次结构用于动画 3D 骨架对象。
蒙皮过程的一些一般准则包括:
- 将装备绑定到网格时,将每个顶点的影响数限制为四个。这是 Meta Spark Studio 出于性能原因支持的最大数量。如果您的对象不符合这些准则,则可能会在动画之前和动画期间产生伪影。
- 确保骨骼处于预期位置以避免伪影。
左侧的图像是一只 3D 鸟,其骨架位置不正确。右侧图像显示了一个位置良好的骨架。
7、动画
使用 Meta Spark Studio 中的程序动画可让你实时生成动画,同时保持项目大小较小。
在 Meta Spark Studio 之外向对象添加关键帧动画是创建更复杂和更详细的动作的不错选择,但它可能会增加文件大小。如果你需要使用关键帧动画:
- 仅向标准属性(位置、比例和旋转)添加关键帧。
- 不要向不需要动画的属性添加关键帧。例如,如果不需要,请不要向比例添加关键帧。
- 请记住,自定义属性关键帧不会被导出。
- 在你使用的 3D 软件中使用 24 fps(每秒帧数)的帧速率。
向 3D 对象添加复杂动画的另一种方法是创建动画剪辑并将其分配给 Meta Spark Studio 中的对象。你可以:
- 使用 Autodesk® Maya® 中的 Game Exporter 插件等工具或 Blender 中的 NLA(非线性动画)操作来创建剪辑。
- 在导入对象之前,你还应注意Meta Spark对文件格式和功能的要求和限制。