ShaderGraph制作“红旗迎风飘扬”效果(Unity2019版)

2023-11-02

零、准备“旗面”游戏物体

  旗面是一个平面,右键创建的3D物体里是平面的,有Quad和Plan,模仿旗面“起伏”的原理是对平面的顶点,做不同程度的抬升:Quad从线框图中看,是一个长方形,只有四个顶点;Plane是10x10个长方形方格,11x11有121个顶点——所以Plan较为合适。(Quad、Plane线框图,如下Scene视图所示)在这里插入图片描述

  Unity提供的Plane里长方形方格,顶点数就121个,顶点数较少,模拟起伏,可能不够理想,如果我们想拥有更多顶点,可用工具PreBuilder自建Plane:
      先按照下面蓝色链接的讲述,导入PreBuilder工具
       【游戏开发建模】教你使用Unity ProBuilder制作基础模型,搭建场景原型( 保姆级教程 | Unity 2021最新版)
      再用PreBuilder自建Plane(20x20个长方形方格,拥有21x21,共441个顶点;Shape Tool 面板,最下有Build按钮,别忘了点击),步骤如下两图,结果如第三图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、核心1 模仿旗面的“起伏”

创建PBR Graph(下图一),
把“噪点”(Simple Noise)与“模型坐标”(选项为Object的Position)相加,连给“顶点坐标”(Vertex Position)——可以理解为,在地面上种植了一层(高度从0到1)的草(下图二),
把Shader Graph 的预览图,设置成Plane,PBR Master颜色设为红色(修改Aldobe相的颜色)观察效果,注意SaveAsset保存此Shader Graph ;或直接用此Asset里ShaderGraph,右键创建Materail,赋给我们自建的Plane(如图三)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、核心2 让旗面的“吹动”起来

原理里让噪点的UV,随时间进行偏移(Offset)——我们把噪点的Scale从500改为10,效果会变明显(也是要注意保存SaveAsset),连线及动图如下
在这里插入图片描述
请添加图片描述

三、几点改进

A、 “旗面的摆动幅度”改进01:前后对称

在这里插入图片描述
我们从顶视图观察,橘色框是原Plane的位置,加噪点后,Plane朝着单一方向进行了偏移——真实的吹动,应该是Plane前后两个方向都有偏移——我们把噪点减去0.5,让其取值范围从[0,1]变成[-0.5,0.5]
在这里插入图片描述
请添加图片描述

B、 “旗面的摆动幅度”改进02:从左往右逐渐增大

把UV节点的R分离出来,与噪点节点相乘:原理是R在预览图(Preview节点)中可以看到,它从左到右,依次由黑到白,预示着它的值从0到1——它与噪点节点的多个由0到1的区域,相乘后,结果值在0到1的范围内,从左到右依次此增大,比如左中右采样依次是0,0.27,1。
在这里插入图片描述
请添加图片描述

C、 “旗面的飘动方向”改进01:只让在X轴方向飘

在这里插入图片描述

TillingAndOffset节点的Offset选项,可以看到它是个二维向量,默认值是(0,0)
我们把Time节点连给它,此时值是(1,1)整个噪点在从右上,往左下偏移
请添加图片描述
我们只保留X值,让其在X方向偏移——把Offset项分离出来(建Vector2节点),让Vector2的X=1,Y=0
在这里插入图片描述
连上Time
在这里插入图片描述
此时,噪点的UV只在X轴上发生偏移
请添加图片描述

D、 “旗面的飘动方向”改进02:完成“”只让在X轴方向飘”后,让它从左往右飘

此时是往左飘,我们希望往右飘——给Time节点的输出,乘-1
请添加图片描述

E、 重要参数做成属性,让其在Inspector里能手动调节大小

希望飘动速度可调:在Time后的乘法节点前,再加一维向量Vector1——右键Convert To Property,并命名为Speed
在这里插入图片描述
请添加图片描述

希望起伏多少可调:在噪点节点的Scale项前,再加一维向量Vector1——右键Convert To Property,并命名为Count
在这里插入图片描述

希望振幅可调:在UV节点分出的R后,加乘法节点,让其乘一维向量Vector1——右键Convert To Property,并命名为amplitude
在这里插入图片描述
最终我调的参数及效果
在这里插入图片描述
请添加图片描述

F、 单面渲染变双面

图一是正面,图二是背面——背面看不到,也就是说它是单面渲染——我们用图三改成双面的
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

G、 改变光滑度

在这里插入图片描述

注意、修改完ShaderGraph后,点击SaveAsset,才起作用(另附总图)

在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ShaderGraph制作“红旗迎风飘扬”效果(Unity2019版) 的相关文章

  • dFdxFine 和 dFdxCoarse 之间的区别

    来自 OpenGL 文档 dFdxFine 和 dFdyFine 使用基于当前片段及其直接邻居的 p 值的局部差分来计算导数 dFdxCoarse 和 dFdyCoarse 使用基于当前片段邻居的 p 值的局部差分来计算导数 并且可能但不一
  • OpenGL 深度测试中的 Z-fight 解决方案 - 它们是如何工作的?

    描述 我在 OpenGL 中的 Z Fighting 方面遇到了重大问题 并且我花了相当多的时间来寻找该问题的解决方案 我发现的一些我理解但不喜欢的 将多边形彼此远离 如 OpenGL 中的 glPolygonOffset 根据 Z 坐标划
  • Open GL ES 3.1 计算着色器的最小工作示例

    我想使用 Open GL ES 进行通用计算 所以到目前为止我所理解的是 我需要创建一个 SSBO 并将数据传输到那里 将缓冲区绑定到着色器中的特殊点 运行着色器并取回数据 到目前为止我有3个问题 该代码无法编译 错误 未定义对 glDis
  • unity:游戏对象不可见?

    我组合了两个可以显示透明度和截止 Alpha 的着色器 它工作得很好 只有两个小问题 1 在某些特定的摄像机角度下 对象的截止区域是可见的 仅当具有相同着色器的另一个对象位于该对象后面时 2 如果我淡出一个对象 它会变得黑色而不透明 我是着
  • 使用 QGLShaderProgram 将自定义类型(结构)uniform 从 Qt 传递到 GLSL

    我定义了一个包含两个向量的光参数结构 该结构体在 C 和 GLSL 中都以类似的方式定义 注意 QVector3D封装 3floats not doubles C 主机程序 struct LightParameters QVector3D
  • OpenGL 着色器。传递浮点数数组

    在我的场景中 我有许多物体想要同时旋转但角度不同 我有一个着色器 可以计算每个对象的位置并绘制整个场景 将顶点数组传递到带有顶点数组的着色器中 uniform float uRotation mat4 mz mat4 1 0 mz 0 0
  • 来自柏林噪声的每顶点法线?

    我正在 Opengl 几何着色器中生成地形 但在计算照明法线时遇到问题 我使用几何着色器中实现的柏林噪声函数动态生成每帧地形 因为这 我需要一种有效的方法来计算每个顶点的法线基于噪声函数 没有纹理或任何东西 我可以采用 2 条边的叉积来获取
  • Three.js - 将飞机缩放至全屏

    我将一架飞机添加到场景中 如下所示 Camera this three camera new THREE PerspectiveCamera 45 window innerWidth window innerHeight 0 1 60 Pl
  • GLSL:如何执行类似 switch 的语句

    我想根据传递到着色器的数据动态调用缓动 所以用伪代码来说 var easing easings easingId var value easing point 我想知道在 GLSL 中完成此任务的最佳方法 我可以以某种方式使用 switch
  • 为 webgl 中的每个对象使用不同的顶点和片段着色器

    我在 webgl 中有一个包含多个对象的场景 对于每个对象 我想使用不同的顶点和片段着色器 我的第一个问题是 是否可以为每个对象都有一个着色器 我知道在 opengl 中这是可能的 这是与我的想法类似的伪代码 任何例子将不胜感激 glena
  • LibGDX 网格高度图法线和灯光

    我正在尝试让网格法线和灯光在 LibGDX 项目中工作 我已经有了从高度图纹理像素生成的纹理网格 问题是我无法正确点亮法线 另外 我不能 100 确定我在 TerrainChunk 类中正确设置了法线顶点 这是主类代码 package co
  • 是否可以在Unity的HDRP中创建DepthMask效果?

    我已经为此努力了一段时间 但我不知道是否有可能创建一个深度掩模着色器HDRP 如此处所述 http wiki unity3d com index php DepthMask 对于我的确切用途 我试图在应用了材质的任何形状上创建一个 洞 以显
  • 我们可以在透明窗口上应用着色器吗

    I am looking to apply a particular shader to a transparent window for example on a live desktop I want to create a trans
  • 如何在 Unity 中创建一个可以显示由许多小图像组成的纹理的着色器

    所以我想做的是从 SQL 表加载卫星图像并将它们包裹在一个球体周围以创建一个地球仪 我知道我已经加载了所涵盖的图像 我只是不确定如何使我的着色器以正确的方向显示图像 我去了 Unity 论坛并查看了这段代码 https docs unity
  • Directx 11,将多个纹理发送到着色器

    使用此代码我可以将一个纹理发送到着色器 devcon gt PSSetShaderResources 0 1 pTexture 当然 我通过以下方式制作了 pTexture D3DX11CreateShaderResourceViewFro
  • 线性光模式的 Alpha 混合层

    我正在重新创建一些 Photoshop 混合 并尝试使用线性光模式 在 Photoshop 中 您将有一个不透明度为 100 的背景图层 然后是一个不透明度为 50 的顶层 其混合模式设置为 线性光 我确实找到了有关如何进行线性光混合的信息
  • Unity3D:在 AA 解析后绘制粒子以提高性能

    我正在尝试评估 MSAA 对 Unity 中含有大量粒子的场景的影响 为此 我需要 使用 8x MSAA 绘制场景中的所有非粒子对象 使用上一个通道中解析的深度缓冲区来渲染所有 将非遮挡粒子系统转移到较小的渲染目标上 将 2 的颜色缓冲区与
  • 使用 GLSL 着色器在同一片段着色器中定义的多个子例程类型无法正常工作

    我正在开发一个使用 GLSL 着色器的程序 我编写了 2 种不同的方法来用 2 种不同的方法计算 ADS 环境光 漫反射 镜面反射 着色 为了正确完成这项工作 我使用子例程来使用一种或另一种方法来计算 ADS 着色 这是片段着色器代码的一部
  • 使用 OpenGL 着色器进行数学计算 (C++)

    我有一个矩阵 例如 100x100 尺寸 我需要对每个元素进行计算 matrix i j tt 8 5例如 我有一个巨大的矩阵 我想使用 OpenGL 着色器来实现该算法 我想使用着色器 例如 uniform float val unifo
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错

随机推荐

  • 搬砖时遇到的错误

    Unreachable code 我把下面两个写反了位置 下图是正确写法
  • Java中throw、throws和Throwable的联系与区别

    throw 意为 投掷 抛 扔 Throw Throws和Throwable三者都用于异常处理 1 Throwable Throwable在Java中是异常处理这个分支的顶级父类 其它所有异常处理的实现都依赖于Throwable 打开Jav
  • 进阶sql语句

    div class markdown views div
  • 【C语言】反序加密(非文件)

    算法集训传送门 引言 铭记于心 我唯一知道的 便是我一无所知 我们的算法之路 众所周知 作为一名合格的程序员 算法 能力 是不可获缺的 并且在算法学习的过程中我们总是能感受到算法的 魅力 短短几行代码 凝聚无数前人智慧 一个普通循环 即是解
  • 挂载nfs报错合集

    问题一 报错 VFS Unable to mount root fs via NFS trying floppy 83 929713 random fast init done 100 366640 VFS Unable to mount
  • LOL代练检测——2019腾讯游戏安全技术竞赛初赛记录

    因为想要去腾讯实习 所以参加了今年的腾讯游戏安全技术竞赛 这个比赛赢了会有一个实习的绿色通道 选了数据分析方向里面的机器学习 初赛题目很有趣 关于LOL 英雄联盟 的代练检测 Moba游戏常见的5v5模式 玩家将与其余9名玩家共同组成对局
  • python 群发邮件 亲测可用

    1 先开通邮件的POP3 SMTP IMAP 拿到授权密码 注意 不是邮箱密码 2 相关代码 里面涉及到的数据库和邮件 都是相对路径下的 可根据代码自行创建和维护 pip install PyEmail import smtplib smt
  • 瑞芯微RGMII的配置

    主要配置项 除去复位等信号 我们主要关注两大块的配置 时钟配置 MAC 采用125M时钟 PHY采用25M时钟 主要配置时钟源 这个和具体硬件连线强相关 例如125M时钟可以来源于soc内部的PLL 也可以由对端PHY 提供 由对端PHY
  • 暴力解法破解PTA L1-006 连续因子 (20分)

    L1 006 连续因子 20分 一个正整数 N 的因子中可能存在若干连续的数字 例如 630 可以分解为 3 5 6 7 其中 5 6 7 就是 3 个连续的数字 给定任一正整数 N 要求编写程序求出最长连续因子的个数 并输出最小的连续因子
  • JetBrains使用Edu邮箱免费注册

    参考 https blog csdn net qq 22070551 article details 88864870 主要需要注意的是下面的问题 有一种情况无法激活就是 提示 jetbrains account connection er
  • 将类的非静态成员函数作为函数指针传递

    项目场景 QT C C 混合编程 将类的成员函数作为函数指针传递 问题描述 无法将类的成员函数作为函数指针传递给C语言的结构体 协议由C语言开发 结构体如下所示 DLT645 环境结构体 typedef struct dlt645 uint
  • pandas dataframe 一列数据变多列

    一 问题描述 希望把dataframe 中的一列数据分割为多列追加到dataframes上 分割前示意图 分割后效果图 二 代码实现 提取出分割列的名称 或者可以自己定义分割后的列名称 feature name data columns 1
  • ChatGPT是否可以生成虚拟角色?

    ChatGPT可以生成虚拟角色 作为一种基于人工智能的自然语言处理技术 ChatGPT具有广泛的应用领域 其中包括虚拟角色生成 虚拟角色是指在虚拟世界中代表和扮演特定角色的程序或实体 可以通过软件 硬件等方式进行构造和操作 虚拟角色通常包括
  • Quoit Design ————分治与归并(平面分治模板)

    Have you ever played quoit in a playground Quoit is a game in which flat rings are pitched at some toys with all the toy
  • muduo(一):C++多线程系统编程

    目录 第1章 线程安全的对象生命期管理 对象的创建很简单 销毁太难 线程安全的Observer有多难 再论shared ptr的线程安全 shared ptr技术与陷阱 对象池 弱回调 第2章 线程同步精要 互斥器 只使用非递归的mutex
  • angular 基础命令

    运行项目 ng serve ng serve host x x x x 指定host 编译 ng build 创建模块 module ng generate module
  • 【bug】ImportError: cannot import name ‘_update_worker_pids‘

    安装对应版本 pip install torch 0 4 0 f https download pytorch org whl torch stable html pip install i https pypi tuna tsinghua
  • JAVA将ResultSet结果集遍历到List中

    原文地址 JAVA将ResultSet结果集遍历到List中 作者 我不学习没人爱 今天在使用jstl标签展示查询结果时遇到一个小问题 即如何将ResultSet对象传递给前台页面 在默认情况中我们在使用数据库查询时 Class forNa
  • Go实现简单IPC框架

    简单IPC封装通信报的编码细节 使用channel来实现模块间数据传递 这里使用json数据包 server端 package ipc import encoding json fmt type Request struct Method
  • ShaderGraph制作“红旗迎风飘扬”效果(Unity2019版)

    文章目录 零 准备 旗面 游戏物体 一 核心1 模仿旗面的 起伏 二 核心2 让旗面的 吹动 起来 三 几点改进 A 旗面的摆动幅度 改进01 前后对称 B 旗面的摆动幅度 改进02 从左往右逐渐增大 C 旗面的飘动方向 改进01 只让在X