Materials - 角色分层材质规范

news2024/11/18 7:35:10
之前编写的解释性文档,归档发布;

在传统贴图中,以BaseColor贴图为例,我们将几乎所有纹理信息都集中到一张贴图上,比如下图中,就有金属、皮革和布料等各种质感的纹理信息:

即使是4K的贴图,这些纹理均摊在不同的部件上,最终体现出来的像素精度还是不甚理想:

远看大效果还可,但如近距离观看就会发现其比较粗糙;

其它的NormalMap等同理,比如一些细节Normal纹理,在一张贴图中均摊在大量部件上,其像素精度也并不会很高:

那么,新的分层材质流程中,会用以下方式来最大化贴图的精度(分层材质主要是在身体的衣服装备上使用,暂不用在其它部分);

首先,利用Mask把身体上各个不同的材质分开,比如金属部分的Mask(注意不同的金属也视为不同材质):

其它皮革、布料同理,利用RGB/A通道合成为一张Mask(也就是说一张Mask可以区分4种不同材质):

以这些不同的Mask为ID,在材质中编写逻辑,让其去一一对应不同的分层材质纹理;这里的所谓分层材质,是一个个完全由四方连续的Tiling贴图所组成的单一高精度材质,一般被封装为Material Function来方便使用:

这样,就可以归纳出重复材质、单独的制作不同的高精度金属、布料和皮革等等并单独维护;材质制作也由以前传统的重复制作相同材质转为“拼装”不同的分层材质;

具体来说,以角色身体装备为例,除了以上最重要的“ID Map”,还有需要单独独立出来交代基本光影遮罩关系的AO Map

注意,这张AO以及没有细节纹理的AO信息了,只有大的结构关系;同样,NormalMap也同理,再不需要上文中所展示的Normal Map中的纹理Detail:

由于材质属性被分在了具体的不同分层材质中,那么只需要各个部分的刮痕、磨损信息Mask,以上图中皮革、布料部分的磨损为例,会用以下Mask表示:

注意不同材质的磨损等信息是可以画在一起的,因为可以使用ID Map来区分;

同理也可以把各种刮痕、磨损Mask按RGB/A通道合成为一张Mask(Damage Mask):

以上的信息,再叠加到单独制作好的,如皮革的分层材质:

最终会达成即有高精度,又有相关独特信息(破损、Normal等独有信息)的效果:

综上所述,我们把角色装备服装的材质分为两大部分,一部分是角色的独有信息ID Map、AO Map、NormalMap以及Damage Mask),另一部分是各种归纳好的、不同材质的分层材质


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

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

相关文章

在Win10下装VMware17后,[ 安装VMware Tools ]选项灰色的解决办法

一、说明 菜单【虚拟机】【安装VMware Tools】按钮为灰色,无法实现【安装VMware Tools】的功能,如何解决,使这个功能可以实现?本文介绍此过程。 二、问题发现 在Win10下安装Vmware17后,生成ubuntu18的虚拟机&#xff…

基于java(springboot+mybatis)汽车信息管理系统设计和实现以及文档

基于java(springbootmybatis)汽车信息管理系统设计和实现以及文档 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

行业分享:光伏行业如何利用视觉检测系统降本增效?

导语:机器视觉检测已在光伏产品生产的各个环节中,为产品产量与质量提供可靠保障。维视智造作为光伏组件视觉检测系统领先者,为企业提供专业、系统、稳定的光伏组件视觉检测解决方案,可保证0漏检,全面提升生产效率。一、…

C++:C++编译过程:看完还不懂C++编译过程来捶我

1:先看图 2:一个C源文件从文本到可执行文件经历的过程: gcc Hello.cpp 预处理阶段:gcc -E hello.c -o hello.i 对源代码文件中包含关系(头文件),预编译语句(宏定义&#xff09…

React中如何拆分组件

基于自己工作中的体会,还有在做的过程中翻阅的资料,看的资料没有收藏起来,很想指出具体的出处,但是很多都是从各个地方看到的。不过都是在掘金、公众号前端开发、还有知乎上看到的。 😫 前言 随着web业务越来越复杂&a…

Elasticsearch(一)--Elasticsearch概述

一、前言 从本章开始,我将进入elasticSearch(后面简称es)的学习,同样也是通过书籍自学,并且会通过自己归纳和拓展将我觉得比较值得记录的知识点分享出来,如果大家觉得有用的话可以和我一起学习。我打算在总…

Kotlin

目录 一、Kotlin 基础语法 1、方法函数 2、常量 val 和变量 var 3、${} 字符串模板 4、null 处理 !!. 不能为空 ?.为空不处理 ?:为空处理成 5、is 类型转换 相当于 instanceof 6、Any 相当于 Java的 Object 二、Kotlin 基本数据类型 1、基本数据类型&#xf…

AMD出招,英特尔最不想看到的对手来了

前段时间的CES上,AMD正式发布Ryzen 7000的3D缓存版,对于游戏玩家来说,Ryzen 7000 3D缓存版算是今年最期待的CPU。上一代的Ryzen7 5800X3D凭借超强的游戏性能和性价比,在德国最大的PC硬件零售商的统计中,甚至成为2022年…

高并发系统设计 -- 大文件业务

上传 分片断点秒传(判断文件哈希值) 前端不断的发送请求,如果用户暂停上传的话,那么就是前端停止发送请求就可以了。我分片了,而且记录了分片的相关信息,所以实现了断点功能。 前端把文件进行分片&#…

ftp vsftp 登录

打开windows资管管理器(文件夹)输入目标路径,如:ftp://192.168.1.1输入账号密码。 删除用户已保存的密码(仅密码,名称记录还在) 两种方法都可以试试,适用不同情况 情况-方法一&am…

Set、Map、类数组,傻傻区分不清楚?

前言 大家都知道,数组和对象是两种不同的数据结构,虽说在js数据类型中都属于Object,但是还是有一定的区别,通过字面量以及isArray、instanceof等方法,我们很好区分这两者。由于使用场景的原因js中衍生了很多类似的数据…

基于java(springboot+mybatis)网上音乐商城设计和实现以及论文报告

基于java(springbootmybatis)网上音乐商城设计和实现以及论文报告 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

Spring Boot 热部署

Spring Boot 热部署一、添加热部署框架支持二、Settings 开启项目自动编译三、开启运行中热部署四、使用 Debug 启动 (非 Run)一、添加热部署框架支持 或者右击鼠标添加依赖: 或者使用插件: 二、Settings 开启项目自动编译 三、开启运行中热部署 老版…

【数据库概论】第一章 绪论

第一章 绪论 1.1 数据库系统概述 数据库的四个基本概念 1.数据 数据是数据库中存储的基本对象,一般数据是描述事物的符号记录,这种符号记录可以输数字,也可以是文字、徒刑、音频等。 2.数据库 数据库是长期存储在计算机内有组织的&…

Leetcode动态规划题解

第一题 509. 斐波那契数 题目描述:斐波那契数(通常用 F(n) 表示)形成的序列称为斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) …

【计算机网络】计算机网络基础

计算机是人类社会不可或缺的工具,而单独的一台计算机的功能也是有限的,计算机需要和其它的设备相互连接通信形成的计算机网络才能对人类发展带来巨大的影响。 目录 计算机网络 通信协议 网络结构 网络边缘 接入网 网络核心 时延和吞吐量 时延 吞…

.Net Core6.0项目发布在IIS上访问404的问题

ASP.Net Core6.0项目发布在IIS上访问404的问题 进入线程池画面,将当前程序的线程池设为“无托管代码” 修改配置文件 Web.config,以下缺一不可 需要引用架包:Swashbuckle.AspNetCore.SwaggerUI.NetCore 6.0 自带集成了Swagger , 在发布项目时…

C++模板(函数模板、类模板)

目录 一、泛型编程 二、函数模板 函数模板概念 函数模板格式 函数模板的原理 函数模板的实例化 模板参数的匹配原则 三、类模板 类模板的定义格式 类模板的实例化 四、扩展 函数模板一定是推演?类模板一定是指定? 模板的分离编译 一…

MySQL高级【行级锁】

1:行级锁1.1:介绍行级锁,每次操作锁住对应的行数据。锁定粒度最小,发生锁冲突的概率最低,并发度最高。应用在 InnoDB存储引擎中。 InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的&a…

WPF中Binding数据校验、并捕获异常信息的三种方式

Binding数据校验、并捕获异常信息的三种方式 WPF在使用Binding时,经常需要进行数据校验,如果校验失败需要捕获失败的原因,并加以展示,本文主要介绍数据校验异常并捕获的三种方式。 依赖属性异常捕获 先定义一个依赖属性 publi…