美文网首页
ue4---1,pbr概述,数据运算,uv运算

ue4---1,pbr概述,数据运算,uv运算

作者: 大熊阿佐格 | 来源:发表于2020-12-25 22:34 被阅读0次

这是关于ben  cloward虚幻引擎材质教学的笔记

pbr材质简述

物体表,表面的入射光种类可以简单概括为两类,直接光(直接接受光源发射出的光线)和间接光(周围环境反射所产生的光)。反射光也是,高光(很多光线在一个方向进行传输)和漫射光 引擎为了便于计算,将这四种光单独计算再合成为一个整体。 平时我们所见到的图片一般都有光照和阴影,这张照片是用仪器测量出的物质表面颜色 实际测量所得的各种物质的基础颜色 法线贴图上的每一个像素的rgb值,都代表它的这个像素点所对应切线空间的xyz矢量值。所谓切线空间,就是以像素点垂直方向为z轴,uv上的u为x轴,为y轴。 粗糙度,更像是微观层面的法线贴图 当金属通道输入为1,高光输入不再影响材质,影响反射的就是输入的basecolor,又因为金属的反射是60-100%,所以给与basecolor的值不能太低

数据运算

1,一维数据,适合用于调整金属度,粗糙组,高光。

这几个数据都是使用一维浮点数作为输入。

在这里,将一维数据到连接主节点的三维数据口,可以发现主节点自动补齐了剩下的两个通道数据。还是以复制的形式补齐。

2,二维数据适合用于调整uv,但是如果把二维数据给与三维接口。

主节点也是将缺失的第三通道补齐,不过,补的是零。

3,三维数据适用于基础颜色,自发光,法线。

当二维或者三维数据输入主节点的一维端口

这里使用的是一个二维数据(0,1)。

显而易见,所显示的是粗糙度为0的情况。

所以,这种情况,主节点只会使用第一个通道的值。

4,主节点可以这样对输入数据进行补齐和挑选,但其他节点之间就不太一样

一维数据可以和其它维度运算,二维不能与三维或四维运算。

除了一维数据和主节点,其它节点间的运算都需要数据类型相同。

uv运算

1,texcoord节点的含义

因为ben在课程中讲解的并不是很清楚,这段关于uv的部分都是我自己思考猜出来的。

这个是将texcoord节点的rg两个通道传递给主材质节点基础颜色,因为这个节点只有两个通道,直接传递不影响结果 其实texcoord节点就是这两个方向布置的两张灰度图

上图uv两个通道合起来的样子,下面把两个通道单独显示,将texcoord的两个通道拆出来

这个是u方向,显示有些问题,但是能看出来u方向从黑到白,即从0到1 v方向

texcoord节点在r和g通道提供两张这样的梯度图。当我们对texcoord节点进行加减乘除时。

是对texcoord的这两张图进行一系列运算,改变r和g通道上的灰度分布,再将其传递给texture sample节点的uvs端口。

texture sample节点会检查每个点,读取这个点传递进来时对应rg通道的灰度信息,再调用原uv的r和g灰度值所对应位置的贴图信息。

举个例子,texture sample节点中,传递进来一个点,它的rg通道灰度值分别为(0.3,0.21),但它在传进来时,在那张图绝对位置是(0.8,0.9),此时它会调用原uv(0.3,0.21)处的贴图数据,虽然它在传递给texture sample时的绝对位置是(0.8,0.9)。

再举个例子,如果将两个数字输入给texture sample的uvs端口,会咋样?

如果输入0.5和0.5,就是把r和g两张灰度为0.5的图对texture sample输入,然后texture sample会将所有的点都调用原uv中(0.5,0.5)处所对应的贴图数据。

结果:

2,uv的加法

对于uv的运算,输入给texture sample,超过1的数值整数部分会被忽略,只读取其小数部分。

此处以u(x)方向为例

这是原始u方向上的图像,要对他进行加0.1的操作 对u方向加0.1,然后在u方向上就变成了0.1-1.1,又因为对于整数部分这个节点是不进行计算的,所以他的真实反映是0.1-1,然后是0-0.1

表现在贴图上就是贴图左移了10%。

实例:

没对u位移之前 给u方向加0.1,贴图左移10%

其实我们的计算主要是对u和v的黑白贴图进行变化,然后调用原uv数据和省去整数这部分都是texture sample这个节点在进行。所以我们可以像编辑贴图那样对输入texture sample的图像进行编辑。

3,uv的乘法

清楚了加法,乘法的道理也是一样

这是原始状态,从左到右是0-1,正好是将uv平铺一次 将u方向乘以3

从左到右就是从0到3

因为会忽略整数,所以就是将0-1重复三次,贴图在u方向平铺三次。

4,世界绝对位置下的uv变化

ben在案例中大量使用了世界坐标,是因为世界坐标可以随着物体改变而发生改变。

作用到材质上,结果就是,只需要制作很少的贴图,把他们摆在不同的位置,就有不同的材质表现。

当使用绝对世界位置时,这些贴图会平铺很多次,究其原因,也是因为传递给texture sample的图中,数值从0到很大,去除整数,实现了多次0到1。

现在,将世界坐标乘以较小的一个数,得到下面这张图

乘完后,确实变小了,方向却不对,看一下为啥 将r通道分离出来,可以从中间看出来有一个从0到1的过程,符合uv中的u方向 再看b(z)方向,他中间有一段从0到1,可以确定它的方向是从下到上逐渐变大。和uv分布中的v方向相反,所以所得结果也相反

相关文章

  • ue4---1,pbr概述,数据运算,uv运算

    这是关于ben cloward虚幻引擎材质教学的笔记 pbr材质简述 数据运算 1,一维数据,适合用于调整金属度,...

  • Python中的运算符

    1.1 概述 python语言支持以下的运算符: 算数运算符 比较运算符 赋值运算符 逻辑(关系)运算符 位运算符...

  • java中的位运算

    1.概述 1.1 存储单位的基本换算公式 1.2 支持的数据类型 1.3 数据存储方式 2.位运算 位运算符 2....

  • JS基础

    JavaScript概述 、 JavaScript基础语法 、 变量和常量 、 数据类型 数据类型转换 、 运算符...

  • Java的内存模型和内存

    一、概述 计算机所有的运算任务都不可能只靠处理器计算就能完成,至少与内存的交互,如读取运算数据、存储运算结果等,就...

  • JS运算符

    算术运算符 概述 JavaScript共提供10个算术运算符,用来完成基本的算术运算。 加法运算符:x + y 减...

  • Chapter3 Java运算符

    Lecture1 运算符概述 表达式:由运算符和操作数组成 运算符:算术运算符赋值运算符关系运算符逻辑运算符条件运...

  • Python基础教程:运算符以及数据类型解析

    运算符 一.算数运算: 二.比较运算: 三.赋值运算 四.逻辑运算 五.成员运算 基本数据类型 一.Number(...

  • JavaScript快速入门-04-运算符

    4 运算符 4.1 算术运算符 4.1.1 概述     JavaScript 提供的算术运算符如下所示: 类型符...

  • (三)Python基本数据类型

    一、运算符 1、算数运算: 2、比较运算: 3、赋值运算: 4、逻辑运算: 5、成员运算: 二、基本数据类型 1、...

网友评论

      本文标题:ue4---1,pbr概述,数据运算,uv运算

      本文链接:https://www.haomeiwen.com/subject/vujinktx.html