UE4 材质学习笔记06(布料着色器/体积冰着色器)

一.布料着色器

要编写一个着色器首先是看一些参考图片,我们需要找出一些布料特有的特征,下面是一个棉织物,可以看到布料边缘的纤维可以捕捉光线使得边缘看起来更亮

下面是缎子和丝绸的图片,与棉织物有几乎相反的效果,表面面对相机或者光源的时候比边缘更亮。所以我们要模仿两种现象,一种是边缘比中间亮,另一种是直视表面比边缘亮

这个技术在一次SIGGRAPH会议上被提出。下面是要用到的公式,这也是我们今天要模拟的东西。

通过着色器模仿布料的外观,但是并不能模拟布料的物理性质。

首先需要一个菲涅尔项,菲涅尔项是用来计算观察向量和表面法线之间的点积,虽然有现成的节点可以给我们使用,但是我们还是选择自己去实现它,因为我们想对它进行更多的自定义。

首先找到Camera Vector和Pixel NormalWS节点,进行点积之后连接到BaseColor,可以看到中间是亮的,然后到边缘逐渐变暗

然后我们可以用1-x节点,就会变成中间是黑的,到边缘逐渐变亮,这样我就可以让边缘变亮或者是中间变亮。

 但是还需要添加一个power节点来调整效果的应用程度。这样颜色衰减就快很多了。通过指数就可以调整颜色衰减的快慢了,同时可以在加一个乘法节点用来调整亮度。

然后我们只需要复制上面的节点,但是不要1-x节点,就可以得到中间亮边缘暗的效果,然后把这二者相加,这样边缘和中间都亮了,但是这样做的好处是可以通过四个参数创建各种不同的布料效果。可以制作缎子,丝绸,牛仔布等等。

例如下面是分别模仿棉织物和丝绸的效果,只需要修改下面的四个参数

二.体积冰着色器

当我们的相机向量移动时,表面下的纹理也随之移动,所以看起来就像是有某种体积

也就是像下面的这种效果,我们要做的就是得到紫色的向量,也就是透射向量,然后可以把它加紧UV坐标里,并且让UV在相机向量移动时,于表面下滑动

连接接待你以后看起来就像是,我在透过一块立方体玻璃往后看,但是现在看起来纹理离我的表面太远了,并且发生的偏移明显太强了

解决办法就是增加节点用来控制深度以及偏移量,下图中的100就是将控制我想要使用的深度,然后取分辨率的倒数控制偏移量

现在看起来纹理就在表面之下,旋转物体时,噪波纹理会在立方体的下面(或者说里面)产生

但是我们知道冰并不是光滑的,所以要用法线贴图替换原来的(0,0,1),然后因为我们不想要每个像素有均匀的偏移,所以可以用一个纹理控制偏移,现在的效果看起来就非常棒了

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

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

相关文章

Docker 容器 数据卷 使用

目录 常用 命令 什么是数据卷以及特点 如何挂载数据卷 数据卷容器 数据覆盖问题 修改已经建立的数据卷关系 博主wx:yuanlai45_csdn 博主qq:2777137742 想要 深入学习 5GC IMS 等通信知识(加入 51学通信),或者想要 cpp 方向修改简历&…

Linux——用户/用户组

创建用户组groupadd groupadd 用户组 删除用户组groupdel groupdel 用户组 创建用户useradd useradd 用户名 - g 用户组 useradd 用户名 -d HOME路径 删除用户userdel userdel 用户 userdel -r 用户 (删除用户的 HOME 目录,不使用 -r &#xff0…

java项目之纺织品企业财务管理系统源码(springboot+vue+mysql)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的纺织品企业财务管理系统。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于spring boot…

西门子网络程序传输,无需开通网络驱动器直接接入底层,支持各类数控 如发那科、三菱 、新代、海德汉、广数、精雕、马扎克等等

有关西门子的程序传输问题,大家一般是通过文件共享、ftp、网络驱动器等方式,其中828D还需要授权开通网络启动器 下面介绍一种方式直接进入西门子Linux底层系统实现和NCK的文件交互功能 软件截图如下 功能表如下 机床程序上载至电脑 电脑程序下传…

什么是 Spring 引导的执行器?

大家好,我是锋哥。今天分享关于【什么是 Spring 引导的执行器?】面试题?希望对大家有帮助; 什么是 Spring 引导的执行器? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Spring Boot 的执行器(…

Unity 从零开始搭建一套简单易用的UGUI小框架 基础分析篇

一套UGUI的小框架用一篇文章显然是不够的,因为会很长很长大约有上万字,想必读者也没有那个耐心一点点读完(主要是我也懒),所以我就将其分为三个部分 基础分析篇 功能撰写与优化篇 扩展与总结篇 我将其都放在了同一个专…

抓取指定网站上的所有图片的Python脚本

引言 在当今信息爆炸的时代,互联网上的数据量呈现出指数级的增长。对于开发者、数据分析师以及研究人员而言,从网页中提取有价值的信息是一项至关重要的技能。其中,抓取网站上的图片资源不仅能够丰富我们的数据集,还能为各种应用…

Linux操作系统分析实验-文件操作,实验三

一、实验目的 1、 理解Linux中虚拟文件系统的内容 2、 学习编写内核模块的方法 3、 在虚拟文件系统/proc中实现文件操作算法 二、实验内容 编写一个内核模块,在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的…

推荐给前端同学的自动化测试库

对于前端开发而言,自动化测试不仅能够提高开发效率,还能确保应用的稳定性和可靠性。而Python提供了多种适用于前端自动化测试的库。这些库能够帮助前端开发者轻松实现UI测试、API测试和性能测试等多种需求。本文将介绍几个Python中常用的前端自动化测试库…

YOLO11改进-模块-引入Histogram Transformer Block(HTB)解决恶劣天气(雨雾雪)

本篇文章将介绍一个新的改进机制——HTB,并阐述如何将其应用于YOLOv11中,显著提升模型性能。在现代计算机视觉任务中,尤其是在目标检测领域,YOLO系列模型因其快速和准确的检测性能而备受关注。随着YOLOv11的提出,我们迎…

CTF(二)

导言: 本文主要讲述在CTF竞赛中,web类反序列化题目unseping。。 靶场链接:攻防世界 (xctf.org.cn) 反序列化漏洞:反序列化漏洞(二)_fst反序列化 rocksdb 字段值错误-CSDN博客 打开后可以看到&#xff1…

涂鸦智能落地 Koupleless 合并部署,实现云服务降本增效

文|八幡、朵拉 杭州涂鸦智能技术专家 主要研究微服务与可观测、消息引擎、任务调度、数据层中间件等领域。 本文 5389 字 阅读 15 分钟 当前涂鸦通过 Koupleless 的静态合并部署能力,很好地解决了资源浪费问题。 为了进一步提升研发效率,涂鸦…

MYSQL 拼接函数

目录 1、CONCAT 2、CONCAT_WS 1、CONCAT 解释:用于拼接两个或多个字符串成一个字符串。如果任何一个参数为 NULL,则 CONCAT 函数的结果也会是 NULL。 语法格式:SELECT concat(column_name1,column_name2,...) FROM table_name 中文注释&…

关于Docker

文章目录 DockerWSLWMWare虚拟机CentOS7安装dockerdocker基础命令docker数据卷挂载本地目录或文件 Docker Docker是一个快速构建、运行、管理应用的工具。 能够快速部署项目、项目依赖的组件、项目运行的环境。 项目传统的部署方式缺点: 各类环境、组件命令太多&…

具体应用案例:树莓集团助力传统制造业数字化转型

以一家传统制造业企业为例,在树莓集团的支持下,该企业逐步完成了数字化转型: 1. 生产智能化: 通过树莓集团提供的物联网和智能制造解决方案,企业的生产线实现了全面数字化,实时监控设备状态,进行…

CasADi库C++用法整理学习---以NMPC代码为例

参考几个使用方法博客 1 官方文档写的很清楚 对SM,DM,XM数据类型疑惑。什么时候使用什么样的类型,还是都可以? x MX.sym(“x”) 这将创建一个 11 矩阵,即一个包含名为 x 的符号基元的标量。这只是显示名称&#xff…

关键词提取技术:TF-IDF 详解

1. 什么是TF-IDF? TF-IDF(Term Frequency-Inverse Document Frequency) 是一种统计方法,用于评估单词在文档集或语料库中的重要性。它是自然语言处理和信息检索中的核心技术之一。 TF-IDF主要基于以下两个概念: TF&a…

书籍推荐:《从零构建大型语言模型》附免费PDF下载

通过从头开始构建一个大型语言模型,了解如何创建、训练和调整大型语言模型 (LLMs)! 一、构建大型语言模型(从头开始) 在《构建大型语言模型(从头开始)》中,你将了解如何…

C++ —— 关于继承(inheritance)

目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承的定义格式 1.3 继承基类成员访问方式的变化 1.4 类模板的继承 2.基类与派生类的转换 3. 继承中的作用域 3.1 隐藏规则 4. 派⽣类的默认成员函数 4.1 4个常见默认成员函数 4.2 实现⼀个不能被继承的类 5. 继承与友元…

webpack 学习入门

webpack 1. 简介1.1 webpack 是什么1.2 webpack 五个核心概念1.2.1 入口 - Entry1.2.2 出口 - Output1.2.3 Loader1.2.4 插件 - Plugins1.2.6 模式 - Mode 2. webpack 初体验2.1 初始化配置2.1.1. 准备2.1.2. 写代码2.1.3 编译打包应用 3. webpack 开发环境的基本配置3.1 打包样…