创作者学院
2D/3D特效性能优化建议 一、认识性能 特效道具的「性能」是综合测试的结果,测试范围往往包括其录制帧率、内存增量、加载耗时、CPU消耗等,这些都可能导致道具在手机上表现异常。 因为性能是个统称的综合概念,所以并不是说确定加某一个东西就性能不佳,需要设计师综合考虑。 认识录制帧率 特效道具里常说的在手机上的「录制帧率」可以简单理解为:该特效在手机上每秒可显示的帧数。目前平均每秒30帧是满帧(即帧率为30),我们测试通过标准是「Android中端机型达到15帧,iOS达到8帧」,也就说我们需要让特效至少达到Android15帧、iOS8帧的帧率。如果帧率过低,主观感受就是卡顿了。 测试常遇到9帧、12帧,这些在中端机上就能明显感觉到卡顿。 注意:性能里提到的「帧率」跟软件制作动画的「帧率」并不是一个意思哦,性能里的录制帧率跟道具素材里是否有需要播放的动画,以及动画的播放速率无关。 认识内存增量 假设用户的手机未使用这个特效道具,内存为300MB,使用了之后内存变为400MB,那么该道具内存增量为100MB。 内存增量是性能的重要指标之一,如果内存增量偏高,就容易导致崩溃,而低端机型上内存增量尽量不超过100MB,如果内存增量到200MB,则线上崩溃的风险会大幅提升。 内存增量跟「图片」的分辨率有很大的关系,所以尽可能减少同时间加载的图片的分辨率,避免大量使用全屏素材。 认识加载耗时、包大小 加载耗时则是用户在使用这个特效的时候,从「点击使用」到「特效加载显示在手机屏幕上」的时间。加载耗时往往跟特效的「包大小」相关。 常说的「包大小」其实就是这个道具资源包的大小,目前道具包大小不允许超过5MB;而在 Effect Creator 内也可以通过预览窗口的右下方实时看到该道具的包大小;在保证素材清晰度的情况下,尽可能减少包大小。 * 二、如何优化性能 3D性能综合优化建议 2D性能综合优化建议 「帧率/内存不通过」优化建议 影响道具帧率的核心元素是「图片分辨率」,其次是「序列帧张数」。 降低图片分辨率 针对道具里所有图片资源,在不影响效果的情况下做到最小尺寸。 举个例子,美妆的腮红素材图片,可以降低到640*640px以下(建议压缩到512*512px)。 减少序列帧张数 2D贴纸使用序列帧的时候,在保证效果的情况下尽量减少序列帧张数。 举个例子,尽量将2D贴纸的序列帧张数,控制在20张以内,最多不要超过50张。 美妆特别优化建议 美妆合组:使用多个美妆效果的时候,将美妆效果创建在同一个组内,这样能够减少美妆的性能消耗。 注意该组内,仅能有美妆效果,请不要把其他的效果也放入该组,否则不能减少美妆的性能消耗。 眼妆合并:如果有多层眼妆,尽可能在一张图上绘制,变成一个眼妆图层。 使用性能消耗小的美妆:性能耗费情况:美瞳>眉毛>面具>白牙>眼妆。 「加载耗时优化」建议 减少加载耗时的最佳方式,就是减少包大小;而减少包大小的最佳方式,就是压缩每个素材的大小。 比如说同样是「512 * 512px」分辨率的图片,A图片大小为0.2MB,B图片大小为0.5MB,那么使用A图片的包大小就会减少; 又比如说,同一个3D模型文件,A模型是1MB,B模型是2MB,那么使用A模型的包大小就会减少; 因此建议在保证效果的情况下,尽可能压缩素材的大小。 三、3D资源规范 一个3D效果的基本组成 在了解一个3D效果组成之前,我们需要先了解一些基础的概念: 模型:通过专业的3D绘图软件制作而成的三维物体,并有其对应的格式文件; 纹理(Texture ):可简单理解为每个物体表面不同的样子(比如说木头上的木纹),通过纹理可以让模型看起来更真实; 贴图(Map):贴图不是「图」,而是一种映射技术,是把纹理通过UV坐标的映射关系,将其映射到三维物体上,最简单的形式是将一张纹理图片( PNG格式 )贴到模型的表面以表现其纹理; 材质( Material):是模型表面可视属性的组合体,能够整体表现光照对物体的影响,展示其光学特性(比如反射、折射等); 概念介绍 在绘制3D素材之前,我们需要准备相应的3D绘图软件,最常用的则为(如 Cinema 4D、Maya、3D Max、Blender等。 导入规范 模型相关 也可参考以下图例进行模型制作和导出: (以下两张图解由一位认证特效师制作提供,在此提出感谢~) 导入EC的设置可参考: 材质/贴图相关 材质Material 这是一个3D的模型文件 仅支持fbx格式(2014-2020版本); 暂不支持导入obj; 文件名不可包含空格、中文和特殊符号,可以使用"_"或者"-"; 尽量压缩fbx文件的大小,建议单个不超过10M; 模型制作 关于骨骼 每个模型的子mesh面数不得超过20000面; 仅支持三角面(Triangle); 使用某个材质球,并对该材质球的参数进行调整 不支持Shader编辑; 模型文件格式 在模型里增加骨骼,能让每根骨骼跟模型的某些顶点相关联,所以当产生运动的时候这些顶点会随骨骼姿势变化而变动,从而产生骨骼动画; 只有模型的效果,可以看见整个是灰色的,没有表面的效果 贴图源文件需为 .png 格式; 单张图长宽乘积不超过1024px*1024px; 仅支持8位图; 为了保证效果,宽高尺寸请均设置为 4 的倍数; 请在保证清晰度的情况下,压缩贴图大小; 其他 网格(Mesh)是由顶点、边和面构成的集合,网格看上去就是一个三维物体的轮廓。 或者使用材质球 常见的模型文件格式有 obj、fbx: obj 格式是静态模型文件,不包含动画、材质特性、贴图路径等信息; fbx 格式则是更为通用的模型文件,包含动画、材质特性、贴图路径、灯光、摄像机等信息; 然后给它贴上表面的纹理贴图 不支持解析模型材质,均需要在Creator调试材质; 或者直接导入纹理贴图; 将一张贴图文件贴在模型表面 (一张纹理贴图文件) fbx模型文件中可以包含骨骼动画,导入Creator后自动解析,不支持骨骼镜像; 导入Creator后,有骨骼动画的模型根结点「RootNode」不能重命名; 单个网格骨骼数量建议不得超过40个; 一个顶点最多受4根骨骼控制; 默认fps30帧,导出前需要烘焙每一帧骨骼动画信息; 绑定骨骼前需将模型移动到居中枢轴(世界坐标系中心点)、清除历史和冻结变换; 支持dynamic joint物理抖动,只需绑定骨骼,在对应entity添加动力学组件即可。 文件格式 纹理贴图文件 骨骼动画 关于网格 模型面数 特别提醒 特效性能是一个综合测试的结果,性能测试不过关并不一定是3D特效的问题,有些特效即使没有用到3D效果,但是使用太多2D效果一样会导致性能问题。 统一软边处理,统一法线制作; 制作完成的模型要居中枢轴(世界坐标系中心点)、清除历史和冻结变换; 支持所有mesh导出一个fbx文件,导入Creator会自动拆分为独立的mesh文件; 导出勾选【几何体:切线/副切线和三角化】、【动画:动画】、【变形模型:蒙皮、混合变形】; 模型的scale(缩放)参数禁止为负数; 如果需要制作3D头饰,请先下载头模:
常见问题 /

特效性能优化建议