2.5 常规游戏中模型通用要求介绍

一、布线和理性

多星点(4个及4个以上边的交点)

如果是在中模阶段,减少使用多星点,因为会在细分是时出现凸点问题,如果要使用多星点,需要通过布线技巧把它移动至平面处,不要让他出现在倒角边缘。

更改前,更改后

更改前,更改后

在模型上挖洞,且要保证都是四边面的情况下,是必然会出现五星点,五星点不可避免,但可以优化。也有叭五星点转换为假四边的方法(模型时把这种布线叫做假四边)

对于布线的合理性,大部分情况下都是指的低模,在次时代流程中,高模只需要做出效果,布线可以随意的来,因为高模的用途只是为了一张法线贴图。

由于Maya和Max中对于三角形的预划分有时是不同的,所以如果四边形的四个点不在一个平面里时,请连接对角线,否则会出现以下情况,这个同样会影响法线烘焙。


二、UV合理性

UV的合理主要是为了提高精度,也就是在资源有限的情况下,达到更好的效果。

UV基础规范:如果使用UDIM(多象限UV),从【0,1】框开始依次摆放,正常情况下全部UV放于【0,1】框内,虽然UV是平铺的,但我们常用的软件,例如SP,绘制过程中,只能再【0,1】框中绘制。

Maya,SP

打直UV能使我们更好的利用空间,提高空间利用率,这也是为什么合理利用UV可以提高精度,能打直的打直,能横竖打直的就不要斜打直,斜打直会成为锯齿的根源。

一般在为了提高利用率的情况下UV是允许有均匀拉伸的,特别是如果后期不会出现纹理制作的情况下,均匀拉伸不会存在任何问题,在精度够的情况下,拉伸也是没有问题的,只是你制作出来的贴图最后也会是拉伸的。

我们一般是使用棋盘格来检查UV的拉伸是否合格,同样带数字的棋盘格也可以拿来检查UV的方向是否和模型方向一致,虽然正放倒放不影响贴图制作,但是行业默认能和模型一致就和模型一致展开UV。

在烘焙时,如果有公用的UV需要挪出【0,1】框,如果不挪出去烘焙时会识别不了你需要烘哪一边作为结果,导致得到的法线贴图出现错误。

硬边的地方UV必须断开,UV边界才能按正确的法线去烘焙,否则烘焙出来的法线贴在模型上必然会出现接缝(不可修复),关于硬边和光滑组在下一节有介绍。


三、光滑组

光滑组是中通过对面的定义来定义软硬边,软边就是如果点处于不同平面时,点会获得所在平面的平均法线,硬边这是拥有多个方向的法线(如图)

3Dmax中光滑组:

当平面1和平面2在一个光滑组时,此时相交边为软边

当平面2单独在另一个光滑组中时(平面1为光滑组1,平面2为光滑组2),此时相交边为硬边

值得注意的是,在三维软件中(maya,max)导出模型法线会处于锁定状态,而导入模型后解锁法线,由于maya和max定义软硬边的方式不同(maya直接对边定义软硬边,max通过定义面的光滑组定义软硬边),会导致光滑组/软硬边丢失,可以通过插件实现在保持软硬边的情况下解锁法线,也就是先记录软硬边信息再去解锁,解锁后重新赋予即可。

由于定义了软硬边,后期的烘焙过程中,烘焙时拾取的是你最后使用的模型的点的法线,如果你在烘焙结束后又去修改了软硬边信息,正常情况下软硬边信息不对等的地方法线会出现错误。


四、模型基本规范

我们制作完模型导出时请检查一下基本信息:

1.该合并的点全部合完了

2.没有非法面,N边面等不规范面的存在

3.有UV,用于贴图

4.不出现镂空面穿帮

5.场景大小设置正确

6.拥有规范命名,方便资产整理(模型一般前缀使用“SM_”,及static mesh)

7.Maya模型请检查历史清除干净没有,Max模型请塌陷编辑器

8.模型的坐标轴归零(习惯问题,否则进入引擎后你可能法线坐标轴不在你模型的周围)

9.进入引擎前最好三角面化


五、常见问题

SP导入模型时出错(可能是没有UV,UV没在(0,1)框内等等,SP的log里面一般会把报错原因直接写出来)。

Maya里制作的模型导入Max(或者反向导入),赋予软硬边缺没有效果变化(导出模型时发现会被锁定,所以请先解锁法线,再重新定义软硬边)。

Maya里制作的模型导入Max(或者反向导入),发现模型大小不一致(检查maya和max的场景单位设置是否一致)。

作业总结

-----------资源目录-----------

目录结点

说明

图例

项目最上层文件夹

项目最上层目录

里面包含项目所用到的所有资源、代码、插件等等

主干

项目主要目录,一般工作都在此处。

分支

简单理解为项目的备份,一般美术不需要关注此处,直接去主干工作即可。

美术资源文件夹

美术用到的所有资源、插件等

资源文件夹内部

可以简单分为几大块:模型、贴图、特效、材质球等。(文件夹内的文件必须用英文命名)具体需要根据项目来走。

美术工程文件夹

里面也是有可打开的项目,主要给美术测场景、特效、镜头表现等等,不涉及复杂的逻辑功能,满足美术表现需求即可

引擎资源文件夹

项目主工程目录(实际运行,打包),程序、策划日常的工作区域

表格文件夹

项目中用到的各种表格,策划日常的工作区域

声音工程文件夹

如果项目接入WWISE、FMOD等第三方音频引擎,就需要另创建一个目录

-----------美术命名规范-----------

后续具体文件名都需要用英文命名,(首字母大写)

角色模型预制体

物体

命名

说明

图例

角色非战斗预制体

xxProjectName_CharacterNamePre_Normal

Pre代表Prefab(预制体),在某些游戏中角色分为战斗与非战斗,预制体需要分开。(视项目而定,也可以只有一个预制体)

角色战斗预制体

xxProjectName_CharacterNamePre_Battle

xxProjectName视项目而定,如果公司只有一个项目,或者很少项目时不需添加,添加项目名还是为了外包收包检查,或者自身是外包人员定制的,防止各个项目的混乱。后续命名就不添加xxProjectName了.

角色模型Mesh

物体

命名

说明

图例

角色模型

CharacterNameMod

Mod代表Model(模型)

角色模型手部

CharacterNameMod_Hand

代表角色模型手部,如果是根节点下手部就不需要添加Mod了直接CharacterName_Hand

角色模型XX部分

CharacterNameMod_XX

代表角色模型XX部,依次类推

另外'_'下划线多不要怕麻烦,主要是为了后期好管理,维护。

角色模型贴图

物体

命名

说明

图例

角色身体法线贴图

CharacterNameT_Body_Normal

T代表Texture(贴图)

角色xx部分yy贴图

CharacterNameT_xx_yy

角色xx部分yy贴图,以此类推

带a通道的角色身体贴图

CharacterNameT_Body_BaseColor_Aph

Aph代表apha值

带a通道的角色xx部位yy贴图

CharacterNameT_xx_yy_Aph

依次类推

角色材质球

物体

命名

说明

图例

角色身体材质球

CharacterNameMat_Body_01

Mat代表Material(材质球)

角色xx材质球

CharacterNameMat_xx

角色xx材质球,以此类推

角色动画

角色动画可以先简单分为两种

一种是通用角色动画,例如大街上行走的NPC,他们就是用的通用的角色动画。

另一种是主角专属动画,例如原神里每个角色都有各自不同的动画表现,需要单独命名。

物体

命名

说明

图例

通用角色女待机动画01

CharacterComAnim_Female_Idle_01

Com代表Common(通用)

Anim代表Animation(动画),不要问为什么是4个字母。。个人感觉相较于Ani更好识别

通用角色男待机动画02

CharacterComAnim_Male_Idle_02

为了展现角色动画的多样性,一般都会给角色做多个动画,所以有02、03等一说

通用角色女死亡动画01

CharacterComAnim_Male_Dead_01

——

xx角色待机动画01

CharacterNameAnim_Idle

Mat代表Material(材质球)

xx角色待机动画02

CharacterNameAnim_Idle

角色xx材质球,以此类推

xx角色技能1连招动画01

CharacterNameAnim_Combo01_01

或者

CharacterNameAnim_Skill01_01

Combo代表连击、Skill代表技能,结合项目命名。

xx角色技能1连招动画02

CharacterNameAnim_Combo01_02

——

xx角色技能1连招动画03

CharacterNameAnim_Combo01_03

——

xx角色死亡动画01

CharacterNamAnime_Dead_01

——

角色特写镜头命名

特写镜头这里就简单说下,特写镜头譬如原神5星角色开大招时都会有个不受玩家控制,固定死的镜头,这就是一个角色特写镜头。

物体

命名

说明

角色特写01

CharacterNameAnim_ShowTime_01

ShowTime(展示时间)

角色特写02

CharacterNameAnim_ShowTime_02

特写02,以此类推

有了角色命名规范,就很好推出场景,特效等的命名格式了,后续如果有需要在写。

-------美术资源制作规范-------

建模阶段

规范项

说明

图例

坐标轴归0

如果模型是放在地面上那么以模型底部为坐标原点,如果模型以靠墙侧则中心点为坐标轴原点。

单位比例统一

默认Unity系统单位1等于1米,需要将DCC工具单位对应到Unity中

方向

Unity默认左手坐标系,Max则是右手坐标系。

Max中先将坐标系设置为Local,然后点击AffectPivotOnly旋转茶壶坐标轴,将其调整为Y轴朝上,Z轴朝壶嘴方向,即可。

清除新项目中的预制物体

如果是新建的项目,在建模前先将预制的物体清除(如灯光、cube、摄像机)。每种DCC不尽相同。

多星点问题

减少多星点的出现

合理的布线

出现不合理的三角面,或者多余的线,需要删除。

且低模阶段减少三角面及四边形以上多边形的出现,尽量全部是四边形。

模型优化

以Blender为例,编辑模式下全选,然后右键选择合并顶点->按距离合并,防止出现顶点重叠的情况

Mesh命名(不要出现中文命名,每个物体都要命名)

物体命名是物体唯一的标识,物体与物体下模型需要命名两次!!命名规则 如:“物件名+部件名+类别名+编号”

顶点与面数量

移动设备每个网格模型控制在300~2500个三角面会达到比较好的效果。

展UV

规范项

说明

图例

打直UV

打直UV,提高利用率,减少不均匀的拉伸,烘焙时,共用的UV移出01框(如重叠的UV),断开硬边避免接缝,接缝处的UV两边对齐,避免Tiling时出现错误

UV保证在【0,1】范围内

超过【0,1】的话,后续在SP中绘图会绘不上

断开硬边

如果硬边不断开的话,硬边处过渡时无法均匀过渡,导致烘焙时出错。

保持连续性,允许均匀的拉伸

如果模型的贴图为四方连续的,UV要保持水平平齐,允许均匀的拉伸。

UV焊接处尽量选择视线看不到的地方

选择看不到的地方,防止穿帮,比如人物的腋窝,手臂大腿内侧等。

动作(待补充)

规范项

说明

图例

模型导出

规范项

说明

图例

再次检查是否有没用到或者重叠的顶点

防止出错

再次检查是否坐标归零

防止出错

再次检查是否单位统一

防止出错

合并顶点

合并顶点,清除场景,删除没有用的一切物件

UV通道

检查是否道出了多余的UV。并且检查材质UV是否在第一通道。

导出设置

选择对应的导出项,场景、物件等一般只导出网格,带有动作的模型则把骨骼也勾选。(图例是Blender,其余DCC大体类似)

导出格式

一般来说导出的是FBX,具体看需求

贴图导出

根据需要看是否导出贴图,PBR的话一般只导出白模,然后再SP里面进行贴图绘制。

SP烘焙

规范项

说明

图例

先烘焙

导入新的模型后先烘焙一遍

贴图导出

选择对应的贴图,或者自定义导出贴图

导入Unity

导入引擎Unity

Metallic/Roughness 流程

规范项

说明

图例

Albedo贴图

勾选sRGB

MetallicSmoothness贴图

不勾选sRGB

Normal贴图

TextureType改为NormalMap

效果对比

SP

Unity

导出完模型和各种贴图后就可以导入引擎里面看效果了。

如果是外包发来的模型就需要另一步验收流程。

-------美术外包验收规范-------

规范项

说明

图例

测试环境

先将模型,角色丢到一个测试环境,测试环境中包括几张环境贴图,模拟不同场景下的光照。

原点位置

首先检查模型原点是否在正确位置。

命名规范

然后检查命名是否付个规范。

材质

检查模型上是否自带材质。

贴图检查

检查贴图是否缺少、贴图命名是否规范,有自发光和Alpha通道的是否正常。

动画

动画是否正常,命名是否规范。

顶点、面数

检查顶点、面数是否超标。

拉伸

对模型进行拉伸缩放,贴图位移、拉伸看是否正常。

是否藏东西

切换视口模式,看角色、物体内部是否正常,是否有冗余的模型。

好多地方不完善,等后面更加熟悉DCC、以及整体流程时再来补充。。

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

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

相关文章

科技提升安全,基于DETR【DEtection TRansformer】模型开发构建商超扶梯场景下行人安全行为姿态检测识别系统

在商超等人流量较为密集的场景下经常会报道出现一些行人在扶梯上摔倒、受伤等问题,随着AI技术的快速发展与不断普及,越来越多的商超、地铁等场景开始加装专用的安全检测预警系统,核心工作原理即使AI模型与摄像头图像视频流的实时计算&#xf…

深入理解Java虚拟机---Java内存模型

JMM Java内存模型主内存和工作内存volatile Java内存模型 Java内存模型是Java虚拟机规范中试图定义一种Java内存模型(JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台上都能达到一致的内存访问效果。可以理解为JMM定义一套在多线程读写共…

计算机网络简答题

面向连接和非连接的服务特点 面向连接的服务:通信双方在进行通信之前,要事先建立一个完整的可以彼此沟通的通道,在通信过程中整个连接的情况可以被实时的监控和管理 面向非链接的服务:不需要预先建立一个联络两个通信节点的连接&a…

智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于平衡优化器算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.平衡优化器算法4.实验参数设定5.算法…

每日一题:Leetcode1926.迷宫中离入口最近的出口

给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 . 表示)和墙(用 表示)。同时给你迷宫的入口 entrance ,用 entrance [entrancerow, entrancecol] 表示你一开始…

HBase 高可用集群详细图文安装部署

目录 一、HBase 安装部署 1.1 Zookeeper 正常部署 1.2 Hadoop 正常部署 1.3 HBase 安装 1.4 HBase 的配置文件 1.4.1 hbase-env.sh 1.4.2 hbase-site.xml 1.4.3 regionservers 1.4.4 创建目录 1.5 HBase 远程发送到其他节点 1.6 HBase 服务的启动 1.6.1 单点…

分类预测 | Matlab实现HPO-GRU【23年新算法】基于猎食者优化算法优化门控循环单元的数据分类预测

分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】 目录 分类预测 | Matlab实现DBO-SVM蜣螂算法优化支持向量机的数据分类预测【23年新算法】分类效果基本描述程序设计参考资料 分类效果 基本描述 1.HPO-GRU【23年新算法】基于猎食者优化算法优…

【电子取证:FTK IMAGER 篇】DD、E01系统镜像动态仿真

​ 文章目录 【电子取证:FTK Imager 篇】DD、E01系统镜像动态仿真一、DD、E01系统镜像动态仿真 (一)使用到的软件 1、FTK Imager (v4.5.0.3)2、VMware Workstation 15 Pro (v15.5.2)(二)FTK Imager 挂载镜像 1、选择 …

学习深度强化学习---第3部分----RL蒙特卡罗相关算法

文章目录 3.1节 蒙特卡罗法简介3.2节 蒙特卡罗策略评估3.3节 蒙特卡罗强化学习3.4节 异策略蒙特卡罗法 本部分视频所在地址:深度强化学习的理论与实践 3.1节 蒙特卡罗法简介 在其他学科中的蒙特卡罗法是一种抽样的方法。 如果状态转移概率是已知的,则是…

vue的computed中的getter和setter

vue的computed中的getter和setter 定义getter写法setter写法 定义 computed 中可以分成 getter(读取) 和 setter(设值),一般情况下是没有 setter 的,computed 预设只有 getter,也就是只能读取&a…

ajax和Axios快速入门

什么是ajax 概念: Asynchronous JavaScript And XML,异步的JavaScrip和XML,重点在异步。 作用: 1,数据交互,可以通过ajax给服务器发送请求,并获取服务器响应的数据。 2,异步交互&am…

基于Leaflet的Webgis经纬网格生成实践

目录 前言 一、Leaflet.Graticule 1、参数说明 二、集成使用 1、新建网页模板 2、初始化地图对象 3、运行效果 三、源码调用分析 1、参数注入 2、经纬网构建 总结 前言 众所周知,在地球仪上或地图上,经线和纬线相互交织,就构成经纬…

两线制输入馈电型隔离变送器

两线制输入馈电型隔离变送器 产品型号:JSD TA-1021系列 馈电型隔离变送器产品介绍: JSD TA-1021 为两线制输入馈电型高精度隔离变送器,是将输入与输出之间电气绝缘的模拟信号量进行变换、放大、隔离及远传的小型仪表设备,接收仪表…

nodejs项目设置全局变量(global)

文章目录 前言一、使用global二、解决type typeof globalThis has no index signature.ts问题1、新建 /types/global.d.ts文件2、或者直接在入口文件/src/index.ts定义 三、最终效果鼠标放在global上,可显示global的类型生效了~ ![在这里插入图片描述](https://img-…

C语言小游戏之三子棋(可以做期末设计作业)

哈喽大家好,今天为大家带来一个用C语言写的小游戏--三子棋,就是大家小时候用树枝和石子玩的那种游戏,这个小项目可以用于大家的C语言期末设计作业,不会很难,都是C语言基本的操作 下面是游戏截图: 完全可以…

CV计算机视觉每日开源代码Paper with code速览-2023.12.8

点击计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【显著目标检测】Texture-Semantic Collaboration Network for ORSI Salient Object Detection 论文地址:https://arxiv.org//pdf/…

Linux 定时器

文章目录 alarm() 函数实现定时功能setitimer() 函数实现定时功能 alarm() 函数实现定时功能 alarm()函数的签名如下&#xff1a; #include <unistd.h> unsigned int alarm(unsigned int seconds);参数1 是你想定时的秒数。 返回值是在你调用这个函数的时刻&#xff0…

LeetCode 123买卖股票的最佳时机-iii 188买卖股票的最佳时机-iv | 代码随想录25期训练营day50

动态规划算法8 LeetCode 123 买卖股票的最佳时机-iii 2023.12.13 题目链接代码随想录讲解[链接] int maxProfit(vector<int>& prices) {//1确定dp二维数组//dp[i][0]表示遍历到第i天时第一次持有股票的当前收入;dp[i][1]表示遍历到第i天时第一次未持有股票的当前…

uniapp用picker实现自定义三级联动(children)

数据大概得结构&#xff1a; html: <view class"invite"><u-cell title"点击选则" isLink :value"value" click"showstrue"></u-cell><u-picker :show"shows" ref"uPicker" :columns"…

【Hadoop】Hadoop基础架构的变化

1.x版本架构2.x版本架构3.x版本架构参考 1.x版本架构 NameNode&#xff1a;&#xff0c;负责文件系统的名字空间(Namespace)管理以及客户端对文 件的访问。NameNode负责文件元数据的管理和操作。是单节点。 Secondary NameNode&#xff1a;它的职责是合并NameNode的edit logs到…