3D角色PBR入门简述

简介: **目录:****PBR简述****PBR知识架构概括****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

相关文章
|
3月前
|
前端开发 数据安全/隐私保护
若依框架---权限控制角色设计
若依框架---权限控制角色设计
222 0
|
14天前
|
安全 API Android开发
Android应用开发中实现动态权限请求的实践指南
【4月更文挑战第5天】 在现代安卓应用开发中,用户隐私和安全日益受到重视。自Android 6.0(API级别23)起,系统引入了动态权限模型,要求应用在运行时而非安装时请求特定权限。这一变化迫使开发者调整权限请求策略,以增强用户信任并确保应用的正常运行。本文将深入探讨如何在Android应用中有效实施动态权限请求,提供一套详细的实践流程,并通过代码示例阐释关键步骤。我们将讨论如何判断权限的必要性、向用户发起请求的最佳时机以及如何处理用户的授权结果。
|
9月前
|
数据库 Nacos
【项目实战典型案例】08.用户成为设计者的正例
【项目实战典型案例】08.用户成为设计者的正例
|
9月前
项目实战8—用户成为设计者
项目实战8—用户成为设计者
39 0
|
9月前
|
NoSQL Java Redis
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
|
Scala 开发者
控制抽象介绍和快速入门 | 学习笔记
快速学习控制抽象介绍和快速入门
69 0
|
数据采集 监控 数据可视化
功能介绍补充|学习笔记
快速学习功能介绍补充
65 0
功能介绍补充|学习笔记
|
程序员 Linux Go
程序的基本概念|学习笔记
快速学习程序的基本概念
89 0
程序的基本概念|学习笔记
|
关系型数据库 网络安全 定位技术
常见概念和使用场景|学习笔记
快速学习常见概念和使用场景
269 0
常见概念和使用场景|学习笔记
|
安全 API 数据库
系统权限设计 - 基本概念和思路
权限系统的设计几乎是每个系统都必需的模块,最近对系统的权限设计有一些心得体会。遇到过一些坑,也有一些思考,所以想写下来分享给大家。 本文的目的是帮助大家理清楚权限设计中的一些基本概念,提供常用的权限系统设计思路。
447 0