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

3D角色PBR入门简述

3D角色 PBR入门简述

目录:

PBR简述

PBR知识架构概括

PBR材质模型

第一节:PBR简述

什么是PBR

PBR全称Physicallly-BasedRendering;是一种着色和渲染技术,用于更精确的描述光如何与物体表面交互。简单点说,就是在我们给游戏或电影的物体添加光照影响时,我们希望有一套合理的范式去向计算机描述如何给我们的物体计算光照,并且绘制出合理的图像;

光照模型组成三要素:光照,着色,感光

PBR就是未来模拟真实的光照效果,对三个要素进行研究的。

光源和暴露在光源下的模型在3D引擎下被放置时,当光线照射在物体的表面,如何表现物体表面被照射时我们看到的颜色,如何表现阴影,PBR技术给出了这一问题的解决方案。

PBR涉及的基础理论

(一)涉及到的核心理论与渲染原理有:

图片.png

为理解后继BRDF方程,我们需要对使用到的理论做简要的学习:

  1. 微平面理论

  2. 能量守恒

  3. 菲涅尔反射

PBR Workflow

PBR制作材质工作流目前主要分为两种,一种是基于金属的工作流,一种是基于镜面反射的工作流,它们都遵循着PBR的核心原理,最大的区别是如何识别反射与漫反射;

这里简单介绍一下基于金属的工作流是如何作用的:

当我们希望给一个模型赋予材质,我们需要准备六张贴图

图片.png

除了传统材质需要的三张贴图(AO,法线,高度图),基于金属的工作流还需要一下三张贴图:

  1. albedo map(反射率贴图)

  2. Metalness map(金属贴图)

  3. Rougnness map(粗糙度贴图)

反射率贴图:保留了物体的固有色

金属贴图:区分物体表面是金属还是非金属,金属导电,这就意味着绝大多数光子(光)会在其表面发生反射,而其余的光子则会被吸收而不是发生漫发射,所以金属没有漫发射的概念。相反绝缘体则会反射一小部分光(大约4%),而**大部分的光则是发生漫反射或在物体表面弹射从而形成均与分布的颜色。**需要更多3D建模资料点击👉🏼加入👈🏼 获取3D游戏建模福利

粗糙度贴图:同时包含了diffuse和reflectivity的信息

第二节:PBR知识架构

  1. 设计的架构图

图片.png

本章仅作为入门介绍:

第三节:UE4 Shader演示

直观理解材质模型,现在分析官方提供的木板材质来对PBR材质制作有一个更具体的认识

一.引擎渲染效果

图片.png

  1. 该材质的UE4 Shader 节点组成图片.png

我们从图中了解,最基本的输入有

漫反射Diffuse组,当中包含了固有色贴图

Roughness粗糙度贴图,

Specular镜面反射贴图,

Normals法线贴图,

AmbientOcclusion AO图(环境光遮蔽图)

还有一个Metallic为0的金属度(因为木材质为非金属材质,故输入为0)

但是我们可以看到没有使用Height map

高度贴图(也称为视差贴图)与法线贴图是一个类似的概念,但是这种技术更复杂——因此也更昂贵。高度贴图通常与法线贴图一起使用,通常它们被用来给纹理贴图负责渲染大凸起的表面提供额外的定义。

最后简要说一下各个节点中包含的content,对制作一张基础材质需要的素材有一个更形象的认知:

UV伸缩控制:控制贴图应用在世界时的大小比例,将会链接在所有的map中

图片.png

Diffuse:

图片.png

List:

一张jpg贴图,

一个带alpha通道的表示颜色的四维向量,

一个乘法节点,我们通过修改woodcolor中的值,可以使得我们的固有色加上不同的RGB颜色与透明度,比如,让地板变成红色。

Roughness

图片.png

Lerp的作用是,将该贴图作为蒙版应用在材质上,

根据该贴图的Alpha值(0,1)

使得该帖图的应用效果在Lerp中A,B两个数(折算成百分率)的范围内显示。

只是用一个通道可以用于降低材质的计算量,增加优化

Normal

图片.png

AO:

屏幕空间环境光遮挡(SSAO)是一种近似计算因遮蔽而造成的光线衰减的效果。通常是在标准全局光照的基础上增添细微效果,例如让角落、裂缝或其他生物变暗,以形成一种更加自然真实的视觉效果。

图片.png

相关文章:

  • java毕业设计开题报告javaweb敬老院管理系统的设计和实现|养老院
  • 为什么电脑一用wps就卡住了?
  • Dubbo - 远程debug
  • Vue3+Vite+TS:多入口项目搭建(简单版)
  • 通用操作系统服务(一)、argparse模块
  • 安装MinGW win安装gcc
  • 从任正非的内部信,看系统开发公司如何度过寒冬
  • 面向智慧文博的知识图谱构建综述
  • 技术分享 | Bug定位方法
  • Web3的流支付代表Zebec,熊市布局的价值逻辑
  • ZFS文件系统预研资料
  • 不同时代下的中秋之美--python学习应用心得
  • Dropout和BN为什么不能共同使用?
  • Java 线程池原理及最佳实践(1.5W字,面试必问)
  • 【图解HTTP】HTTP请求报文和响应报文
  • 【笔记】你不知道的JS读书笔记——Promise
  • angular2开源库收集
  • C++入门教程(10):for 语句
  • Java基本数据类型之Number
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS专题之继承
  • Laravel 中的一个后期静态绑定
  • npx命令介绍
  • Redis字符串类型内部编码剖析
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue中实现单选
  • Vultr 教程目录
  • 闭包,sync使用细节
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 思否第一天
  • 阿里云ACE认证之理解CDN技术
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​业务双活的数据切换思路设计(下)
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #HarmonyOS:软件安装window和mac预览Hello World
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (03)光刻——半导体电路的绘制
  • (C语言)字符分类函数
  • (LeetCode) T14. Longest Common Prefix
  • (第二周)效能测试
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (译)2019年前端性能优化清单 — 下篇
  • (转)关于多人操作数据的处理策略
  • *** 2003
  • .bat文件调用java类的main方法
  • .NET DataGridView数据绑定说明
  • .net web项目 调用webService
  • ::
  • @Transactional类内部访问失效原因详解
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ IO.File ] FileSystemWatcher
  • [.NET]桃源网络硬盘 v7.4
  • [20161214]如何确定dbid.txt