unity 关于UV坐标算点 和 PerlinNoise(柏林噪声)

news2024/11/19 0:25:16

 生成相关效果代码如下:

    public int w = 100;
    public int h = 100;

    public Texture2D texture;

    public Image image;

    public Color tu = Color.yellow;
    public Color cao = Color.green;
    
    // Start is called before the first frame update
    void Start()
    {
        texture = new Texture2D(w, h);
        VertexHelper vh = new VertexHelper();
        for (int x = 0; x < w; x++)
        {
            for (int z = 0; z < h; z++)
            {
                float y = Mathf.PerlinNoise(x * 0.1f, z * 0.1f);
                
                float uvx=(float)x/(float)(w-1);
                float uvy=(float)z/(float)(h-1);

                Color color = Color.Lerp(tu,cao,y);
                texture.SetPixel(x,z,color);
                vh.AddVert(new Vector3(x,y*10,z),Color.white,new Vector2(uvx,uvy));
                if (x!=w-1&&z!=h-1)
                {
                    vh.AddTriangle(x*h+z,x*h+z+1,(x+1)*h+z+1);
                    vh.AddTriangle(x*h+z,(x+1)*h+z+1,(x+1)*h+z);
                }
            }
        }
        
        texture.Apply();
        Mesh mesh = new Mesh();
        vh.FillMesh(mesh);
        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshCollider>().sharedMesh = mesh;

        Material material = new Material(Shader.Find("Unlit/Transparent"));
        material.mainTexture = texture;
        GetComponent<MeshRenderer>().material = material;

        image.material = material;
    }

本文重点说的是这里:

                float uvx=(float)x/(float)(w-1);
                float uvy=(float)z/(float)(h-1);

                Color color = Color.Lerp(tu,cao,y);
                texture.SetPixel(x,z,color);
                vh.AddVert(new Vector3(x,y*10,z),Color.white,new Vector2(uvx,uvy));
                if (x!=w-1&&z!=h-1)
                {
                    vh.AddTriangle(x*h+z,x*h+z+1,(x+1)*h+z+1);
                    vh.AddTriangle(x*h+z,(x+1)*h+z+1,(x+1)*h+z);
                }

它批量渲染uv的一个思路,请对照基础介绍进行观看本文:里面官方示例简单的渲染了一个面

(48条消息) shader基础入门(2)(VertexHelper)_作孽就得先起床的博客-CSDN博客

最开始是这样渲染uv点位的

 然后代码是这样

            vh.AddTriangle(0, 1, 2);
            vh.AddTriangle(2, 3, 0);

但是在真正使用中顺序实际上是这样的

 然后结合一下上面的代码看

-------------------------------------------------------------

至于uv因它的数值为(0~1)范围(不准确这个说法,在最下方有说明),所以用边的比值最为合适,这样永远都会在这个合理的数值范围内,这样就能获得这个uv的x和y了,这样uv的部分基本结束

uv的基础知识,指路大佬链接:

uv纹理坐标设定与贴图规则 - bigwhiteshark(云飞扬) - 博客园 (cnblogs.com)

------------------------------------------------------------柏林噪声(PerlinNoise)--------------

关于这个函数(根据官网资料整理)

特点:伪随机数,在两个数值见逐步的往复

取得一个y值,线实际上是由规律的点组成的,太密了就成线了(图示大致效果如下)

 

柏林噪声是跨 2D 平面生成的浮点值的伪随机模式(尽管 该技术确实可以推广到三个或更多维度,这在 Unity 中没有实现)。 噪声在每个点上不包含完全随机的值,而是包含 的“波浪”,其值在整个模式中逐渐增加和减少。噪音可以 用作纹理效果的基础,也用作动画的基础,生成地形高度图 以及许多其他事情。

注意:返回值可能略小于 0.0f 或略高于 1.0f。您可能需要夹紧回程 值,如果 0.0 到 1.0 范围对您很重要。

返回的值它有可能比0.0还要小,可能会是负数,也有可能会稍微大于1.0

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

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

相关文章

剑指 Offer II 007. 数组中和为 0 的三个数

题目链接 剑指 Offer II 007. 数组中和为 0 的三个数 mid 题目描述 给你一个整数数组 nums&#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]]满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0。 请你返回所有和为 0 且不重复的三…

软件测试岗位会消失么

只要互联网还在发展&#xff0c;软件测试岗位就一直被需要&#xff01; 软件测试已经不再只是点点点了&#xff0c;如果只停留在点点点&#xff0c;那么有可能会消失&#xff0c;但是现在测试已经向自动化测试方向发展了 人生如逆水行舟&#xff0c;不进则退。于其浪费时间的…

Golang GC垃圾回收机制理解记录

一、概念对不再使用的是内存资源进行自动回收的功能就叫垃圾回收&#xff08;GC: Garbage Collection&#xff09;二、为什么要有垃圾回收&#xff1f;编程语言需要对内存手动释放&#xff0c;操作繁琐&#xff0c;处理不好会出现内存泄漏&#xff0c;垃圾回收出现使的开发者能…

入门力扣自学笔记234 C++ (题目编号:2325)

2325. 解密消息 题目&#xff1a; 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。 将替换表与普通英文字母表对齐&#xff0c…

ESP32设备驱动-PCF8591数据采集驱动

PCF8591数据采集驱动 1、PCF8591介绍 PCF8591 是一款单片集成、独立电源、低功耗、8 位 CMOS 数据采集设备。 PCF8591 具有四个模拟输入、一个模拟输出和一个串行 I2C 总线接口。 PCF8591 的三个地址引脚 A0、A1 和 A2 可用于硬件地址编程 8 PCF8591 器件允许访问相同的 I2C…

dig命令命令常见用法

dig命令命令常见用法域名结构dig命令命令常见用法安装dig查看本机使用的dns地址使用dot或doh查询域名解析查询A记录查询dns所有记录值any从ip地址反查询域名dig -x检查txt记录是否生效查看DNS是否开启AXFR协议全量区传输功能dig诊断DNS污染只显示域名的解析ip递归解析dig trace…

全球13台 DNS 根服务器,居然没有一台属于中国!

域名系统是最重要的互联网服务之一&#xff0c;没有它&#xff0c;我们将无法访问在线内容&#xff0c;甚至无法发送电子邮件。每当我们尝试连接到其他网站或在线服务时&#xff0c;根 DNS 服务器都会帮助我们的计算机找到并到达我们想要的地址。 DNS 根服务器是所有 DNS 的组…

MySQL-JDBC反序列化分析

0x01 前言 听师傅们说这条链子用的比较广泛&#xff0c;所以最近学一学&#xff0c;本来是想配合着 tabby 或是 codeql 一起看的&#xff0c;但是 tabby 的环境搭建一直有问题&#xff0c;耽误了很久时间&#xff0c;所以就直接看了 0x02 JDBC 的基础 本来不太想写这点基础的…

LaTeX使用enumitem包切换enumerate标签样式

一、直接使用enumerate 源码&#xff1a; \documentclass{article} \begin{document} \section{LaTeX Style Sample} There is nothing to show, thank you for reading. \begin{enumerate}\item Apple is a kind of fruit.\item Cat is a kind of animal.\item Butterfly is …

git commit之后,回退撤销commit

在commit之后&#xff0c;发现有不需要提交的文件被提交上去了&#xff0c;好在还没有push到远端&#xff0c;需要撤回重新提交。如果是用的是Sourcetree的话,打开Sourcetree操作如下&#xff1a;找到提交之前的版本的记录右键这条提交记录&#xff0c;点击 将xxx重置到这次提交…

Ventoy安装deepin系统(windows和deepin双系统)

目录电脑安装虚拟机安装双系统安装&#xff08;windows和deepin&#xff09;美化deepin系统引导页其他链接电脑安装 我们先制作好Ventoy启动盘&#xff0c;然后插入电脑使用U盘启动 deepin系统镜像下载地址 windows系统镜像下载地址 windows激活软件 ,密码:ev5k windows镜像下载…

Maven实战-1.maven命令

前言 持续更新中… Maven命令 1.mvn help:system 打印出java所有的系统属性和环境变量。 2.mvn clean compile clean告诉Maven清理输出目录target/&#xff0c;compile告诉Maven编译项目的主代码&#xff08;src/main/java目录下&#xff09;。 不要问为什么只是编译了项…

Hive的Rank排名(rank函数,dense_rank函数,row_numer函数)

一、区别&#xff1a;三者通常都会配合窗口函数over()&#xff0c;并结合partition by order by xxx来分组排序&#xff0c;即形式使用&#xff1a;function_name over(partition by xxx order by xxx)。首先三者都是产生一个自增序列&#xff0c;不同的是row_number() 排序的字…

2023年SAT、ACT、AP、Alevel、IB考试时间表

2023年已经来临&#xff01;以下是2023年SAT、ACT、AP、A-Level、IB考试时间安排&#xff0c;早规划早备考&#xff0c;建议大家收藏&#xff01;2023 SAT从2023年开始&#xff0c;美国以外的所有SAT考试都将转为机考&#xff0c;美国SAT考试将在2024年全面转为机考。2023年一共…

前端Vue中实现超炫酷动态背景(全屏背景+自定义banner+登录/注册页)

一、文章引导 #mermaid-svg-9sKRaMRBkdCcbAh2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-9sKRaMRBkdCcbAh2 .error-icon{fill:#552222;}#mermaid-svg-9sKRaMRBkdCcbAh2 .error-text{fill:#552222;stroke:#55222…

29相似矩阵和若尔当型

一、知识概要 本节从正定矩阵的回顾谈起&#xff0c;介绍了相似矩阵和若尔当型。但是没有进行深入介绍&#xff0c;主要目的是让我们对这些变换方式有所了解。 二、正定矩阵补充 在上一节学习的正定矩阵的基础上&#xff0c;我们给出以下问题&#xff1a; &#xff08;1&…

2023年2月北京/广州/西安/深圳DAMA-CDGA/CDGP数据治理认证招生简章

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

uniapp:常用跨端业务组件

插件内组件包含以下功能&#xff1a; 自定义状态栏组件(ZoNavBar)上拉加载状态组件(ZoLoading)弹窗组件(ZoPopup)搜索组件(ZoSearchBar)空数据组件(ZoEmpty)tab标签组件(ZoTabs)tab下拉筛选组件(ZoSelectTabs)底部导航组件(ZoTabBar)cell导航组件(ZoCell) 10.标题内容组件(ZoT…

复试--数据结构篇[1-4章]

目录第一章 绪论第二章 线性表1-线性表的顺序表示&#xff08;顺序表&#xff09;2-线性表的链式表示&#xff08;链表&#xff09;&#xff08;1&#xff09;单链表&#xff08;2&#xff09;循环链表&#xff08;3&#xff09;双向链表3-顺序表和链表的比较4-线性表的应用第三…

Hyper-V中的虚拟机双网卡配置

Hyper-V中的虚拟机双网卡配置 在虚拟机交换管中 存在三种虚拟交换机分别是外部、内部和专用 内部网络&#xff1a;虚拟机与虚拟机访问宿主机&#xff0c;虚拟机可以访问物理网络 外部网络&#xff1a;虚拟机与虚拟机之间&#xff0c;虚拟机与宿主机之间&#xff0c;虚拟机或宿…