按分类 3D贴图优化指南
16 分
ㅣ✔️ 遵守pot(2的幂)规范 建议使用2的幂分辨率 为了优化硬件加速,建议平台内的所有纹理资产的水平和垂直分辨率均满足2的幂规格(256×256或512×512)。 建议尽量避免使用 npot 若使用非2的幂(npot)尺寸的图像,gpu会在内部将其转换为最接近的2的幂尺寸后复制到内存中,这可能导致内存占用量翻倍。 ㅣ✔️ 纹理密度的一致性及 uv 布局 均匀的分辨率分布 必须防止角色穿戴服装时,特定部位 的 画质异常破裂或模糊。为此,请确保 整个资源的“纹理像素密度(texel density) ”保持 均匀 。只有当3d模型的实际面积与uv贴图中的尺寸比例保持一致时,才能在游戏中避免任何部位出现变形,并保持均匀清晰的画质。 应用视觉优先级 对于需要高分辨率的细节区域,请分配较大的uv空间;而对于曝光频率较低的底部或内衬部位,请缩小uv空间以进行优化。 ㅣ✔️ 每类纹理各可使用1张 💡 指南中明确的“1张纹理”标准并不意味着限制为仅使用1张 base color,您可以分别使用 diffuse、normal、channel map 等。zepeto的纹理审核标准不是张数,而是 “总容量1mb以下(1mb = 1024kb)” ,因此如果在1mb容量以内,您可以调整分辨率并组合使用多张纹理。同样,toon shader 的辅助贴图(normal map、shadow threshold、mask、emission 等)如果包含在整体的1mb容量限制内,也可以使用。 1张纹理的最大尺寸为512x512。建议尽量避免使用1024。 纹理的尺寸按横向和纵向的面积(像素数)计算。 512 × 512 = 262,144 像素 1024 × 1024 = 1,048,576 像素(恰好是 512 的 4 倍 ) 虽然数字看起来只是2倍,但3d引擎和智能手机显存(vram)需要处理 的数据流量和容量 却激增至4倍 之多 。即使经过 压缩插件处理,内存占用率的4倍差异依然存在。 最高512的分辨率通过最大化数据传输效率,使网络环境不佳的用户也能流畅地享受游戏。 智能手机屏幕相比电脑显示器或电视要小得多。在小屏幕上,我的虚拟角色所穿的上衣或下装所占用的实际屏幕像素面积并不大。 如果担心画质下降,与其增加纹理大小,不如利用 “纹素密度(texel density) ”。 通过“视觉优先级分配”——大胆缩减内衬或衣物下摆等不可见区域的uv空间,并将uv空间集中分配给徽标或纽扣等细节区域——即使在512分辨率下,也能制作出足够清晰且高质量的服装。 ㅣ✔️ dr(整套服装)类别的例外 允许使用2张纹理 仅限“整套服装(dr)”类别, 最多 可使用 2张512×512分辨率的纹理 。 ㅣ✔️ 着色器与材质优化 (shader & material) 材质数量限制 建议提交的每个类别 asset 最多使用 1 个 material。对于最多可使用 2 张纹理的 dr(套装)类别,最多可以使用 2 个 material。建议默认使用 1 个 material,并且 只有在使用 transparent、fur 等不同属性的 shader 时,才请追加使用。 建议尽量避免按材质分别使用 material 建议尽量避免按材质分别使用 material。对于属性相同的多种材质(如透明、毛绒等),请使用通道蒙版贴图来表现纹理。请使用表现金属度(metallic)、光滑度(smoothness)和环境光遮蔽(ambient occlusion)的rgba通道贴图。 channel packed data description red metallic 数值越接近1(white),表示金属;越接近0(black),表示非金属 green ambient occlusion (ao) 表现结构性阴影及角落处的固定阴影 blue x x alpha smoothness 控制曲面的平滑程度 ㅣ ⚠️ 建议遵守优化指南的原因 在本地环境中测试单个 asset 时,微小的 blendshape 数据或超出指南的 texture 分辨率对系统性能的影响可能看似微乎其微。但是,还请共同考虑到 zepeto 是一个众多用户同时参与虚拟空间的“实时多平台环境”。 3d资源运算负载的累积增加 数据复制及多重加载负载: 假设单个世界中有30名玩家进入,且每个虚拟角色平均装备5 6个部件(服装、发型、配饰等),那么一个画面中需要实时处理的独立资源数据将达到数百个。 开销的累积: 一位创作者为追求细节而做出的微小超规格设计,在经过众多玩家后 会放大数百倍,从而给应用程序运行中的系统带来负担。 系统阈值超载与硬件瓶颈 整体性能下降 :原本微不足道的渲染调用(draw call)增加、因纹理像素密度不平衡导致的vram浪费、复杂的像素着色器运算等,一旦在同一空间内累积,就会瞬间超过移动设备的临界点。 过度的运算会导致移动设备 严重发热和电池 消耗,并引发对zepeto整体而言致命的帧卡顿。 因 oom(内存不足)导致应用强制关闭 致命的系统崩溃: 在系统资源中,内存(ram/vram)溢出不仅会导致画面变慢和帧率下降。 一旦超过可用内存,移动操作系统(ios/android)为了保护设备,会强制完全 终止(崩溃)zepeto应用的进程。这是破坏服务可靠性和用户体验的最致命故障原因。 优化是构建虚拟生态系统共生关系的技術準則。 zepeto studio提出的各类别数据限制规范,并非旨在限制创作者的艺术表达。这是为了构建一个能够覆盖包括低配置移动设备用户在内的所有用户的舒适运行环境,并确保创作者的高质量资源能在游戏中稳定运行,不出现失真或故障,保持其原本品质的 最低限度技术 安全保障。 参考)用于商品优化的各类别数据 所有数据 均以上限(maximum limit) 为基准。 除dr(套装)外的所有类别均以1张贴图为基准。 max triangle count (tris) 推荐 / max max texture resolution (map size) 推荐 / max max material (允许按属性添加额外着色器) dr one piece outfit 10,000 512x512 (2 images) 4(推荐) top top 6,000 512x512 3(推荐) otr outerwear 6,000 512x512 3(推荐) btm pants, skirts 5,000 512x512 3(推荐) sox socks 3,500 / 4500 256x256 / 512x512 3(推荐) sh shoes 4,000 256x256 / 512x512 3(推荐) f hair women's hair 10,000 256x256 / 512x512 3(推荐) m hair men's hair 10,000 256x256 / 512x512 3(推荐) headwear headwear 4,000 256x256 / 512x512 3(推荐) shoulder shoulder 5,000 512x512 3(推荐) glasses glasses 2,000 256x256 / 512x512 3(推荐) bracelet bracelet 2,000 256x256 / 512x512 3(推荐) necklace necklace 2,000 256x256 / 512x512 3(推荐) earring earrings 2,000 256x256 / 512x512 3(推荐) bag bag 4,500 256x256 / 512x512 3(推荐) glove glove 4,500 256x256 / 512x512 3(推荐) ring ring 2,000 256x256 / 512x512 3(推荐) nail nail art 1,500 / 2000 256x256 / 512x512 3(推荐) eyemask mask 3,000 512x512 3(推荐) wing wing 4,000 512x512 3(推荐) mask special face shapes 5,000 512x512 3(推荐) body special body types 10,000 512x512 3(推荐) tail tail 2,000 / 3000 256x256 / 512x512 3(推荐)
