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

文章目录

    • 零、准备“旗面”游戏物体
    • 一、核心1 模仿旗面的“起伏”
    • 二、核心2 让旗面的“吹动”起来
    • 三、几点改进
        • A、 “旗面的摆动幅度”改进01:前后对称
        • B、 “旗面的摆动幅度”改进02:从左往右逐渐增大
        • C、 “旗面的飘动方向”改进01:只让在X轴方向飘
        • D、 “旗面的飘动方向”改进02:完成“”只让在X轴方向飘”后,让它从左往右飘
        • E、 重要参数做成属性,让其在Inspector里能手动调节大小
        • F、 单面渲染变双面
        • E、 改变光滑度
    • 注意、修改完ShaderGraph后,点击SaveAsset,才起作用(另附总图)

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

  旗面是一个平面,右键创建的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、 单面渲染变双面

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

E、 改变光滑度

在这里插入图片描述

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

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

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

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

相关文章

webassembly简单Demo——hello world

参考官网 Emscripten Tutorial 一、创建C/C文件 hello.c #include <stdio.h>int main() {printf("hello, world!\n");return 0; } 二、编译成html 命令行切到hello.c目录下&#xff0c;执行如下命令(注意需要em的环境变量&#xff0c;参考&#xff1a;emsr…

CVE-2023-34541 LangChain 任意命令执行

漏洞简介 LangChain是一个用于开发由语言模型驱动的应用程序的框架。 在LangChain受影响版本中&#xff0c;由于load_prompt函数加载提示文件时未对加载内容进行安全过滤&#xff0c;攻击者可通过构造包含恶意命令的提示文件&#xff0c;诱导用户加载该文件&#xff0c;即可造成…

续篇-docker篇: 优势与安装方式 及基础指令整合

目录 1. 前言简介: 1.1 docker的优势: 1.2 docker的简易理解 2. 指令安装 2.1 安装yum的插件 ps: 提示没权限加上sudo即可 root用户不用 2.2 设置yum仓库地址 ps: 设置多个镜像仓库, 不设置可能会下载变慢 ps: 如图所示 2.3 更新缓存 2.4 安装docker 2.5 查看do…

Learn Mongodb DB功能命令索引等搜索 ⑤

作者 : SYFStrive 博客首页 : HomePage &#x1f4dc;&#xff1a; PHP MYSQL &#x1f4cc;&#xff1a;个人社区&#xff08;欢迎大佬们加入&#xff09; &#x1f449;&#xff1a;社区链接&#x1f517; &#x1f4cc;&#xff1a;觉得文章不错可以点点关注 &#x1f44…

JAVA 初识序列化与反序列化

JAVA 初识序列化与反序列化 目录 JAVA 初识序列化与反序列化初识序列化与反序列化1 概述2 特点/应用场景3 涉及到的流对象4 代码实现序列化与反序列化4.1 步骤1&#xff1a;创建学生类Student4.2 步骤2&#xff1a;创建序列化测试类 5 测试报错NotSerializableException:6 测试…

leetcode 26.删除有序数组中的重复项

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;删除有序数组中的重复项 代码&#xff1a; /*思路&#xff1a;双指针问题[1,1,2]src-> [ 1 , 1 , 2 ]destnums[src] nums[dest] > src;src-> [ 1 , 1 , 2 ]destnums[src]…

计算机视觉:多相机硬件同步拍摄

计算机视觉&#xff1a;多相机硬件同步拍摄 传感器同步硬件同步信号FSYNC信号STROBE信号 硬件接线硬件设备接线步骤&#xff1a; 软件驱动参考文献 传感器同步 目前主要有两种方法来同步不同传感器的信息&#xff08;帧、IMU数据包、ToF等&#xff09;&#xff1a; 硬件同步&…

7.用python写网络爬虫,验证码处理

前言 验证码&#xff08;CAPTCHA&#xff09;的全称为全自动区分计算机和人类的公开图灵测试&#xff08;Completely Automated Public Turing testtotellComputersand Humans Apart&#xff09;从其全称可以看出&#xff0c;验证码用 于测试用户是否为真实人类。一个典型的验证…

基于Web的小学学科数字教学资源管理系统

摘要 小学学科数字教学资源管理是一个典型的学习项目&#xff0c;从教学资源、教材信息的统计和分析&#xff0c;在过程中会产生大量的、各种各样的数据。本文以小学学科数字教学资源管理系统为目标&#xff0c;采用B/S模式&#xff0c;以Springboot为开发框架&#xff0c;java…

STM32单片机(五)第二节:EXTI外部中断练习2(旋转编码器计次)

❤️ 专栏简介&#xff1a;本专栏记录了从零学习单片机的过程&#xff0c;其中包括51单片机和STM32单片机两部分&#xff1b;建议先学习51单片机&#xff0c;其是STM32等高级单片机的基础&#xff1b;这样再学习STM32时才能融会贯通。 ☀️ 专栏适用人群 &#xff1a;适用于想要…

Git常用命令

个人学习笔记&#xff0c;记录已经使用过的相关命名 1. 分支管理 2. 回退提交 2.1. 相关命令 2.2. 应用 回退后可以通过git log查看当前处于哪一版本 2.3. 撤销回退 先使用git reflog&#xff0c;找到需要回退的版本号&#xff0c;例如这里撤销回退之前提交测试文件的版本…

计算机网络的89个核心概念

主机&#xff1a;计算机网络上任何一种能够连接网络的设备都被称为主机或者说端系统&#xff0c;比如手机、平板电脑、电视、游戏机、汽车等&#xff0c;随着 5G 的到来&#xff0c;将会有越来越多的终端设备接入网络。 通信链路&#xff1a;通信链路是由物理链路&#xff08;…