美术资源规范
很多项目都没有重视资源规范,而是不断追求更高的运行效率。然而资源规范在项目中是非常重要的,资源规范才是高效运行的前提。
在有的项目中,一个人物模型几万个面、一个建筑模型就几十万个面,贴图也不规范,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 发送和接收处理…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...

Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...