美术资源规范

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

在有的项目中,一个人物模型几万个面、一个建筑模型就几十万个面,贴图也不规范,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数据等等,检测内容包括资源属性,内容,变体分析等。它还具有例子特效性能检测功能,特别好用。除此之外还有场景检测,代码扫描等功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!

文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT…

在 Ubuntu 上安装 Redis 并为其设置登录密码

在 Ubuntu 上安装 Redis 并为其设置密码 在 Ubuntu 上安装 Redis 并为其设置密码1. 更新包索引2. 安装 Redis3. 配置 Redis 密码4. 配置 Redis 以使用 systemd5. 启动 Redis 服务6. 检查 Redis 状态7. 测试 Redis8. 配置防火墙(可选)完成 在 Ubuntu 上安…

微积分复习笔记 Calculus Volume 1 - 4.10 Antiderivatives

4.10 Antiderivatives - Calculus Volume 1 | OpenStax

echarts设置tooltip宽高

ECharts容器: 1,ECharts容器设置宽度width,值可以是百分比或者是像素,当设置为百分比时,要检查父元素是否设置了宽度。注意:容器宽度设置不要用min-width,不然会发现tooltip的宽度等于min-widt…

kafka生产消费问题

一、kafka生产问题 1.漏发 生产者发送时候 有可能节点突然挂掉,send返回future,get(),同步发送,还可以在pro设置重试次数来容错,可以在失败时候,存储到哪里,另一个线程补发,不影响主流程 2.broker数据同步 broker里也可能出现问题,acks设置all,保证所有副本也收到消息 二、…

O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈

O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈 O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈O-RAN前端O-RAN 前传平面C-Plane(控制平面):控制平面消息定义数据传输、波束形成等所需的调度、协调。U-Plane(用户平面)&#…

Git 入门篇(三)

前言 Git 入门篇(一) Git 入门篇(二) Git 入门篇(三) 目录 更新代码到远程仓库 git add git commit git push git status git log git rm git reset 更新代码到远程仓库 git add 用于将文件的更改&…

PADS操作技巧

CTRL左键单击:结束布线 过孔:信号换层、散热 F2布线,然后右键添加过孔。 切换过孔大小

给初学者的 Jupyter Notebook 教程

目录 一、什么是Jupyter Notebook? 1. 简介 2. 组成部分 ① 网页应用 ② 文档 3. Jupyter Notebook的主要特点 二、安装Jupyter Notebook 0. 先试用,再决定 1. 安装 ① 安装前提 ② 使用Anaconda安装 ③ 使用pip命令安装 三、运行Jupyter No…

网络协议都有哪些?

网络协议是为计算机网络中进行数据交换而建立的规则、标准或约定的集合。以下是一些常见的网络协议: TCP/IP协议:传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础。由网络层的…

window下安装rust 及 vscode配置

安装 安装mingw64 (c语言环境 选择posix-ucrt) ucrt:通用c运行时库配置mingw64/bin的路径到环境变量中在cmd窗口中输入命令 "gcc -v" 4. 下载Rust安装程序 安装 Rust - Rust 程序设计语言 5. 配置rustup和cargo目录 (cargo是包管…

RHCE的学习(13)

第十章openEuler简介 概述 openEuler的前身是运行在华为公司通用服务器上的操作系统EulerOS。 EulerOS是一款基于Linux内核的开源操作系统,支持X86和ARM等多种处理器架构,伴随着华为公司鲲鹏芯片的研发,EulerOS 理所当然地成为与鲲鹏芯片配…

基于OpenCV的实时年龄与性别识别(支持CPU和GPU)

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现mnist手写数字识别】…

ElasticSearch 添加IK分词器

ElasticSearch 添加IK分词器 前言一、IK分词器的算法二、Ik分词器的下载安装(Winows 版本)三、Ik分词器的下载安装(Linux 版本)四、验证测试(postman工具)测试 ik_smart 分词算法测试 ik_max_word 分词算法…

被复线远传节点机JR-IPAM-1600

产品描述 JR-IPAM-1600J是一款被复线远传节点机,通过传统双绞线电缆(被复线\网线\对数电缆\矿用电缆等),用户就可以快速组成一个高速的传输网、局域网。它具有传输速率高、运行稳定、快速安装部署的特点,设备特有的AU…

window中借助nginx配置vite+vue项目的反向代理步骤

在官网下载好nginx的安装包后,解压后 CMD打开 start nginx 是启动命令 nginx -s stop 停止服务 nginx -s reload 如果重写了nginx.conf文件,要执行这条命令 正常情况下 成功启动和成功停止服务长这样 错误情况&解决 如果nginx -s stop失败 ngi…

什么是网络安全?

今天看到网络安全这个话题,来跟大家分享一下什么是网络安全,已经我经历的网络安全事件。 首先来分享一下什么是网络安全,网络安全是指通过采取必要措施,防范对网络的攻击、侵入、干扰、破坏和非法使用以及意外事故,使…

移动取证和 Android 安全

当今的数字时代已经产生了许多技术进步,无论是智能手机还是虚拟现实、人工智能和物联网 (IoT) 等下一代基础技术。 智能手机已不再只是奢侈品,而是我们生存所必需的东西。根据各种统计数据,如今全球有超过 50% 的人使用手机。 由于数据存储…

图神经网络(GNN)入门笔记(1)——图信号处理与图傅里叶变换

一、信号处理:时域与频域 时域(Time Domain)是我们生活中常见的信号表示方式,以横轴为时间,纵轴为信号该时刻的强度(幅度),就可以得到一张时域图。打个比方,通过每时每刻…

网络--应用层协议--HTTP

1、HTTP协议特性 1、HTTP协议(超文本传输协议):定义了客户端(如浏览器)与服务器之间的通信方式,以交换或传输超文本(超文本:视频、音频、文字等) 2、HTTP协议是客户端与服务器通信基础:客户端通过HTTP协议向服务器发送请求,服务器处理后返回响应。 3、HTTP协议是无连接…