当前位置: 首页 > news >正文

美术资源规范

很多项目都没有重视资源规范,而是不断追求更高的运行效率。然而资源规范在项目中是非常重要的,资源规范才是高效运行的前提。

在有的项目中,一个人物模型几万个面、一个建筑模型就几十万个面,贴图也不规范,1024、2048像素的贴图一大堆,动画骨骼甚至多到百来个,资源没有规范很容易导致加载过慢、画面卡顿、渲染压力过大、骨骼数量过多导致CPU消耗过大。

对于美术资源来说,模型面数并不是越多越好,而是应该在一定数量的限制下尽量最大的努力做到最好的美化。贴图也是要在一定大小的限制下做到最大限度的不是真。

那么如何确定美术资源规范?

在不同平台下对于美术资源规范会有所不同,需要有一定经验后才会积累一些关于某个平台的资源规范经验。

例如在手机游戏中,人物角色模型一般不应该超过5000面,贴图大小不应超过512像素。但是开始一个新的项目针对不同的需求固有的经验可能无法套用那么应该如何确定?

根据运用场景来确定

汤姆猫游戏,强调单一主角的场景,由于主要资源全部服务于主角,因此对主角精细化是很有必要的。即使做到10000面也不为过,同意骨骼也可以很精细,骨骼数量可以多达70个,贴图也可以2048*2048.

卡牌策略类型游戏的核心是静态的3D人物场景和人物角色自动攻击,由于场景是固定的,视角不移动,因此场景模型和人物模型面数和材质上可以稍微宽松一些,人物模型可以在7000面左右,骨骼可以40个,贴图102481024,因为模型数量在视角下并不太多。

第三人称视角RPG,由于视角是第三人称的自由视角,同时看到场景范围会更多一些,视角下下的模型数量也会比较多,因此角色模型的面数要控制在3000面一下,骨骼数量控制在30个一下,建筑模型面数因大小差异可以分为大型建筑7000面以下,中型建筑5000面以下,小型建筑3000面以下,小部件控制在1000面以下。贴图也需要更多的限制,最好为512*512像素角色和中大型贴图512*512,副贴图为256*256,小型和小部件控制在128*128。

战争塔防类游戏,例《如部落冲突》是俯视的视角,能看到整个游戏的内容,模型数量特别多。这时需要将人物角色的模型限制在2500面以内,建筑则限制在5000面、3000面、2000面,其他小部件则限制在750面以内,贴图基本上256*256为主,副贴图为128*128,材质球数量不能超过2个。

如果是《塞尔达传输》《和平精英》这种超大型的游戏,则需要从高空俯瞰整个场景,渲染压力比较大,除了制定美术规范之外,还需要借用其他方法,如LOD技术。

使用反推计算来得出规范

对于模型物体大小差异比较的,无法统一模型与贴图面数的,可以使用全场景总面数来控制。

假设场景中,同屏面数需要控制在40万面左右,下面就以这个40万面的标准开始部署。首先需要计算一个极限值,,假如同屏要达到100个角色,50个建筑,先出去地表模型大概3万面,剩下的数量为37万面,平均每个物体2500面,我们不要平均,而是需要拆分以下等级,小物件为1极,小建筑为2级,中型建筑为3级,大型建筑为4级,人物角色通过为3级,因此这100个角色可以有3000面,剩下的50个建筑,大型建筑5个,中型建筑20,小型10个,小物件10个,可以分配剩下的7万面,小件模型500面以下,小型建筑1000左右,中型2000左右,大型3000左右。

贴图大小同样也可以按照这种方法进行规范,先设定一个总体内存,假设不超过500MB内存,通常内存中包括资源内存,业务逻辑内存,引擎逻辑内存,第三方插件内存,

假设

  • 资源内存270MB
  • 业务逻辑内存+引擎内存150MB
  • 第三方插件内存80MB

其中我们最关心的是资源内存,资源内存包括3D模型,贴图,UI图集,材质球,Prefab数据等等,其中模型和贴图占大头,通常占用80%左右,大约为220MB,这个空间中UI图集通常也会占用比较大的比例,一般在30%-50%,所以留个3D贴图的空间不超过130MB。下面就以130MB的空间来计算场景内的贴图规范。

假设 场景中有100中不同类型的模型,采用的是不用中类的贴图,小型模型有30种,中型50种,大型20种,那么小型模型的贴图不得超过0.6MB,中型不得超过1.25MB,大型贴图不得超过2.75MB。1024*1024像素在RGBA32不压缩的情况下为4MB,通常我们使用的压缩算法的压缩比率为15%-50%,从而可以预计出小模型不能超过2张贴图,且大小不得超过256*256,中型也不能超过2张,大小不得超过512*512,大模型不能超过3张。

除了通过占用内存的大小来制定规范外,也可以使用总张数和总尺寸大小来进行规范。例如,设定场景的总统贴图大小为不超过20张1024*1024像素,那么小模型30种,中型模型平均20中,大型模型平均10种的情况下,就可以规定为小型模型贴图大小为256*256,中型大小512*512,大型模型贴图大小为1024*1024像素以下。

规范的自动检测

无论采用什么方法,都需要不断的检测资源,项目一直在向前推进,资源不断的得到修改和增进,我们需要有一套检测系统来检测资源的问题。如果可以在项目进行前加入实际的压力测试环节,或者在项目进行中加入渲染压力测试环节,则会更有利于对美术资源的规范。

在实际项目中,常有让程序员或美术设计师以人工的方式去寻找美术资源规范的情况,这种方法无论多么严谨,都会有很多遗漏,不能形成系统化的流程与规范,而且会浪费大量的精力和人力。

我们需要编写一个美术资源规范的检测程序,可以设定2-3个小时运行一次,运行后提醒我们有多少资源存在不规范的情况,分别是哪些资源,并罗列出来,甚至可以细化到最近一次是谁提交的。

UWA本地资源检测工具

是一个很好用的检测工具,让我们不用重复造轮子,可以节省很多时间,它对静态资源的检测,包括网格数据,纹理贴图,音频格式,材质设置,Animation数据,着色器,视频格式,prefab数据等等,检测内容包括资源属性,内容,变体分析等。它还具有例子特效性能检测功能,特别好用。除此之外还有场景检测,代码扫描等功能。

相关文章:

美术资源规范

很多项目都没有重视资源规范,而是不断追求更高的运行效率。然而资源规范在项目中是非常重要的,资源规范才是高效运行的前提。 在有的项目中,一个人物模型几万个面、一个建筑模型就几十万个面,贴图也不规范,1024、2048…...

UE5.4 PCG 获取地形Layer

使用AttributeFilter:属性过滤器 节点 设置地形Layer名称和权重 效果:...

用 cURL 控制 OpenSIPS3.4

opensips-cli -x mi reload_routes,重读脚本路由opensips-cli -x mi ds_list,就是 dispatcher list 的缩写,简单明了opensips-cli -x mi ds_reload,修改 OpenSIPS 数据库的 dispatcher 表之后,用此命令读到内存opensip…...

【LuatOS】基于WebSocket的同步请求框架

0x00 缘起 由于使用LuatOS PC模拟器发起快速且海量HTTP请求(1000 次/秒)时,会耗尽PC的TCP连接资源,而无法进行继续进行访问请求。故使用WebSocket搭建类似于HTTP的“同步请求相应”的通信框架,以实现与HTTP类似的功能…...

架构师考试系列(8)论文专题:信息系统安全设计

摘要 2021年4月,我公司承接了一款健康养老系统项目,旨在提供以健康养老为核心的管理平台。本文探讨了如何在系统开发中贯彻安全优先原则,保障系统的安全性和保密性。系统包括健康档案、照护计划、服务审计、健康状况跟踪、费用管理等功能模块。我作为系统架构设计师,负责了…...

浙大一附院就医:分享给大家工作久了关节疼的就医经验,腱鞘炎

症状描述:日常生活不影响,但左手手腕往前或者往后扭曲力度过大时会有痛感。 医嘱详情:腱鞘炎,可能是工作键盘打字久了导致,开了三盒药贴,一盒三片,一共9片,另外再买一个比较硬的护腕…...

如何降低 PCIe RTT?

以下是一些降低 PCIe RTT(往返时间)的方法: 硬件方面4: 优化主板设计与布局: 合理分配 PCIe 通道:确保不同的 PCIe 设备被分配到独立的、互不干扰的 PCIe 通道上。例如,如果主板上有多个 PCIe 插…...

数据结构之二叉树--前序,中序,后序详解(含源码)

二叉树 二叉树不能轻易用断言,因为树一定有空 二叉树链式结构的实现 在学习二叉树的基本操作前,需先要创建一棵二叉树,然后才能学习其相关的基本操作。 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType _data;struct B…...

红黑树及MySQL 基础架构

红黑树简介及左旋、右旋、变色 红黑树(Red Black Tree)是一种自平衡二叉搜索树(二叉查找树),是一种特殊的二叉搜索树,在进行插入和删除时通过特定操作保持二叉树自身的平衡,从而获得较高的查找性能。 红黑树的平衡操作通过左旋、右旋和变色来…...

大数据-212 数据挖掘 机器学习理论 - 无监督学习算法 KMeans 基本原理 簇内误差平方和

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

QJson-趟过的各种坑(先坑后用法)

QJson-趟过的各种坑【先坑后用法】 Chapter1 QJson-趟过的各种坑【先坑后用法】一、不能处理大数据量,如果你的数据量有百兆左右(特别是有的小伙伴还喜欢json格式化输出的),不要用Qjson,否则会报错 DocumentTooLarge二、json格式化输出1.构建…...

基于STM32的hx711称重模块使用

欢迎入群共同学习交流 时间记录:2024/11/9 一、知识点记录 1、hx711 1)HX711是一款高精度压力传感器专用的24位模数转换芯片,主要功能是将测得的微小电压信号放大到可以被微控制器读取的范围 2)工作电压2.6-5.5V 3)引…...

Nginx独立项目相关配置说明

配置前说明 1. 部署环境为https环境的,除华为云表态托管等都需要此配置,如cloud。 2. 部署环境为https环境的,可以使用api.js直接访问后端服务,无需此配置。 3. 转发的后台服务接口需要和后台人员沟通确认一致。详细配置说明 **…...

Nuxt3之使用lighthouse性能测试及性能优化实操

lighthouse性能测试工具 什么是 LightHouse 呢 Lighthouse 是一个开源的自动化工具,用于提高网页的质量。可以通过浏览器的开发者工具运行,也可以作为命令行工具或 Node.js 模块集成到持续集成系统中。Lighthouse 可以帮助开发者: 性能优化…...

‌webdriver.Chrome()参数简介

webdriver.Chrome()参数‌如下: ‌executable_path‌:指定ChromeDriver的路径,若未设置且系统环境变量中已配置,则会自动寻找。‌options‌:通过webdriver.ChromeOptions()创建,用于设定浏览器的启动选项&…...

Ubuntu如何更换环境中的Python版本

Ubuntu Python 版本迁移指南 卸载 Python 3.8 # 移除 Python 3.8 sudo apt remove python3.8# 清理依赖 sudo apt autoremove# 清理缓存 sudo apt clean安装 Python 3.10 # 更新软件包列表 sudo apt update# 安装软件源管理工具 sudo apt install software-properties-commo…...

python-字符串中大写字母转小写,小写字母转大写

平时我们进行大小写转换基本都是使用upper和lower函数,使用方法: s Hello,Python123#大写转小写 s.lower() -->hello,python123#小写转大写 s.upper() -->HELLO,PYTHON123但是如果想把字符串中的大写字母转成小写,小写字母转成大写&a…...

前端学习之ES6+

1.ES6是什么 ES6,全称是ECMAScript 6,是JavaScript语言的下一代标准,由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015,从这个版本开始,ECMA组织决定每年发布一个新的ECMAScript版本,以使J…...

yolov10的几种权重文件

1.官方提供的几种模型权重文件 YOLOv10官网提供的权重文件是训练好的网络各层的权值,这些权值是通过训练集训练出来的。‌一旦网络训练完成,应用时只需加载这些权值,而不再需要原始的训练集。这意味着,如果你已经配置好了环境&am…...

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...