VEX —— Noise and Randomness

news2025/1/11 12:57:13

目录

Noise generators

Random number generators


Noise generators

  • 噪波生成函数,noise、wnoise、vnoise、onoise、snoise、anoise;
  • 每一个函数表示生成噪波的不同算法;

每个噪波相对成本:

  • Perlin noise(noise),1;
  • Original perlin noise(onoise),1.1;
  • worley noise(wnoise),1.8;
  • Sparse Convolution noise(snoise),2.1;
  • Alligator noise(anoise),2.3;

noise

  • 有两种Perlin噪波,此为非周期噪波,周期噪波是pnoise;
  • 取值范围0~1,中位值为0.5;发布取决于维度,更高的维度接近高斯发布;
//基于1D位置
float noise(float pos)
vector noise(float pos)
//基于2D位置
float noise(float posx, float posy)
vector noise(float posx, float posy)
//基于3D位置
float noise(vector pos)
vector noise(vector pos)
//基于4D位置
float noise(vector4 pos)
vector noise(vector4 pos)

anoise

  • 生成“alligator” 噪波(cellular noise类型),类型wnoise;
  • 当前无法使用worley函数模拟“alligator” 噪波,但可获得类似外观;
  • 取值范围0~1,仅支持3D noise;
float anoise(vector pos)
vector anoise(vector pos)

float anoise(vector pos, int turbulence, float rough, float atten)
vector anoise(vector pos, int turbulence, float rough, float atten)

float anoise(vector pos, int periodX, int periodY, int periodZ)
vector anoise(vector pos, int periodX, int periodY, int periodZ)

float anoise(vector pos, int periodX, int periodY, int periodZ, int turbulence, float rough, float atten)
vector anoise(vector pos, int periodX, int periodY, int periodZ, int turbulence, float rough, float atten)

onoise

  • 类似wnoise、vnoise(效率略低,特征不同);
  • 取值范围-1~1,仅支持3D noise;
float  onoise(vector pos)
vector  onoise(vector pos)

float  onoise(vector pos, int turbulence, float rough, float atten)
vector  onoise(vector pos, int turbulence, float rough, float atten)

float  onoise(vector pos, int periodX, int periodY, int periodZ)
vector  onoise(vector pos, int periodX, int periodY, int periodZ)

float  onoise(vector pos, int periodX, int periodY, int periodZ, int turbulence, float rough, float atten)
vector  onoise(vector pos, int periodX, int periodY, int periodZ, int turbulence, float rough, float atten)

snoise

  • 类似于wnoise,基于所有最近点的权重;
  • 取值范围-1.7~1.7,仅支持3D noise;
float snoise(vector pos)
vector snoise(vector pos)

float snoise(vector pos, int turbulence, float rough, float atten)
vector snoise(vector pos, int turbulence, float rough, float atten)

float snoise(vector pos, int periodX, int periodY, int periodZ)
vector snoise(vector pos, int periodX, int periodY, int periodZ)

float snoise(vector pos, int periodX, int periodY, int periodZ, int turbulence, float rough, float atten)
vector snoise(vector pos, int periodX, int periodY, int periodZ, int turbulence, float rough, float atten)

wnoise

  • 生成Worley(蜂窝)噪波;
//生成1D noise
void wnoise(float position, int &seed, float &f1, float &f2)
void wnoise(float position, int &seed, float &f1, float &f2, float &f3, float &f4)
//生成周期1D noise
void wnoise(float position, int &seed, float &f1, float &f2, int peiod)
void wnoise(float position, int &seed, float &f1, float &f2, float &f4, float &f4, int period)
//生成2D noise
void wnoise(float posx, float posy, int &seed, float &f1, float &f2)
void wnoise(float posx, float posy, int &seed, float &f1, float &f2, float &f3, float &f4)
//生成周期2D noise
void wnoise(float posx, float posy, int &seed, float &f1, float &f2, int periodx, int periody)
void wnoise(float posx, float posy, int &seed, float &f1, float &f2, float &f3, float &f4, int periodx, int periody)
//生成2D noise
void wnoise(vector2 position, int &seed, float &f1, float &f2)
void wnoise(vector2 position, int &seed, float &f1, float &f2, float &f3, float &f4)
//生成周期2D noise
void wnoise(vector2 position, int &seed, float &f1, float &f2, int periodx, int periody)
void wnoise(vector2 position, int &seed, float &f1, float &f2, float &f3, float &f4, int periodx, int periody)
//生成3D noise
void wnoise(vector position, int &seed, float &f1, float &f2)
void wnoise(vector position, int &seed, float &f1, float &f2, float &f3, float &f4)
//生成周期3D noise
void wnoise(vector position, int &seed, float &f1, float &f2, int periodx, int periody, int periodx)
void wnoise(vector position, int &seed, float &f1, float &f2, float &f3, float &f4, int periodx, int periody, int periodz)
//生成4D noise
void wnoise(vector4 position, int &seed, float &f1, float &f2)
void wnoise(vector4 position, int &seed, float &f1, float &f2, float &f3, float &f4)
//生成周期4D noise
void wnoise(vector4 position, int &seed, float &f1, float &f2, int periodx, int periody, int periodz, int periodw)
void wnoise(vector4 position, int &seed, float &f1, float &f2, float &f3, float &f4, int periodx, int periody, int periodz, int periodw)

vnoise

  • 生成Voronoi(蜂窝)噪波;
  • 此函数与wnoise结果相近,但比wnosie稍贵;由于返回真实的点位置,可客服wnoise的一些伪影;
//生成1D noise
void vnoise(float position, float jitter, int &seed, float &f1, float &f2, float &pos1, float &pos2)
//生成周期1D noise
void vnoise(float position, float jitter, int &seed, float &f1, float &f2, float &pos1, float &pos2, int period)
//生成2D noise
void vnoise(float posx, float posy, float jittx, float jitty, int &seed, float &f1, float &f2, float &pos1x, float &pos1y, float &pos2x, float &pos2y)
//生成周期2D noise
void vnoise(float posx, float posy, float jittx, float jitty, int &seed, float &f1, float &f2, float &pos1x, float &pos1y, float &pos2x, float &pos2, int periodx, int periody)
//生成3D noise
void vnoise(vector position, vector jitter, int &seed, float &f1, float &f2, vector &pos1, vector &pos2)
//生成周期3D noise
void vnoise(vector position, vector jitter, int &seed, float &f1, float &f2, vector &pos1, vector &pos2, int periodx, int periody, int periodz)
void vnoise(vector position, vector jitter, int &seed, float &f1, float &f2, vector &pos1, vector &pos2, vector period)
//生成4D noise
void vnoise(vector4 position, vector4 jitter, int &seed, float &f1, float &f2, vector4 &pos1, vector4 &pos2)
//生成周期4D noise
void vnoise(vector4 position, vector4 jitter, int &seed, float &f1, float &f2, vector4 &pos1, vector4 &pos2, int periodx, int periody, int periodz, int periodw)
void vnoise(vector4 position, vector4 jitter, int &seed, float &f1, float &f2, vector4 &pos1, vector4 &pos2, vector4 period)

pnoise

  • 有两种Perlin噪波,此为周期噪波,非周期噪波是noise;
  • 发布取决于维度,更高的维度接近高斯发布;
float|vector pnoise(float x, int px)
float|vector pnoise(vector x, vector p)
float|vector pnoise(vector4 xyzt, vector4 p)
float|vector pnoise(float x, float y, int px, int py)
float|vector pnoise(vector xyz, int px, int py, int pz)
float|vector pnoise(vector4 xyzt, int px, int py, int pz, int pt)

xnoise

  • 非常接近Perlin noise;
  • 取值范围0~1,中位值为0.5;发布取决于维度,更高的维度接近高斯发布;
float xnoise(float x)
vector xnoise(float x)

float xnoise(float x, float y)
vector xnoise(float x, float y)

float xnoise(vector xyz)
vector xnoise(vector xyz)

float xnoise(vector4 xyzt)
vector xnoise(vector4 xyzt)

curlnoise

vector curlnoise(vector xyz)
vector curlnoise(vector4 xyzt)

flownoise

  • 取值范围0~1,中位值为0.5;发布取决于维度,更高的维度接近高斯发布;
float flownoise(vector xyz, float flow)
vector flownoise(vector xyz, float flow)

float flownoise(vector4 xyzt, float flow)
vector flownoise(vector4 xyzt, float flow)

float flownoise(float x, float y, float flow)
vector flownoise(float x, float y, float flow)

Random number generators

random

  • random基于空间内的位置(1~4维度)生成一个随机数字;
  • random不像noise会平滑的插值;
  • random()是非常有效的方法,类似noise(floor(position))
//基于1D位置,生成对应噪波
float random(float|int position)
vector random(float|int position)
vector2 random(int position)
vector4 random(float|int position)
//基于2D位置,生成对应噪波
float random(float|int xpos, float|int ypos)
vector random(float|int xpos, float|int ypos)
vector4 random(float|int xpos, float|int ypos)
//基于3D位置,生成对应噪波
float random(vector position)
vector random(vector position)
vector4 random(vector position)
//基于4D位置,生成对应噪波
float random(vector4 position)
vector random(vector4 position)
vector4 random(vector4 position)

 nrandom

  • nrandom是一个非确定的随机函数;生成的数值在0~1之间;
  • 如按相同顺序调用,将生成相同的随机数序列;
  • 由于没有种子,不可能重复多次生成相同的随机数或序列;
float  nrandom(...)
vector2  nrandom(...)
vector  nrandom(...)
vector4  nrandom(...)
//修改给定变量值,随机值0~1
void nrandom(float &x, float &y, ...)

rand

  • 根据seed,生成在 [0, 1) 的随机值;
float rand(float seed)
vector2 rand(float seed)
vector rand(float seed)
vector4 rand(float seed)

float rand(float seed, float seed2)
vector2 rand(float seed, float seed2)
vector rand(float seed, float seed2)
vector4 rand(float seed, float seed2)

float rand(vector2 seed)
vector2 rand(vector2 seed)
vector rand(vector2 seed)
vector4 rand(vector2 seed)

float rand(vector seed)
vector2 rand(vector seed)
vector rand(vector seed)
vector4 rand(vector seed)

float rand(vector4 seed)
vector2 rand(vector4 seed)
vector rand(vector4 seed)
vector4 rand(vector4 seed)

注,如需统一各个分量,可使用float()进行转化;

vector pos = 1;
float seed = 0;
pos *= float(rand(seed));

hscript_rand

  • hscript_rand生成与Hscript rand()相同的结果;对不同的浮点种子,此函数生成不同的随机值;这不同于random(将浮点参数转化为整数种子);
  • vex表达式hscript_rand与rand不同;
  • hscript_rand在不同硬件或操作系统上结果可能不同;
float|vector|vector4 hscript_rand(float seed)

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

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

相关文章

五十一.DQN原理和实战

值函数近似法 经典强化学习方法的共同点是它们的求解过程都要维持一个值函数表格,策略函数也可以通过一个表格来表示,所以也称这些方法为表格法。表格法要求状态空间和动作空间都是离散的,这类强化学习任务只占所有强化学习任务的很小一部分…

Spring Bean的生命周期和扩展点源码解读

目录 1 Bean的生命周期2 Bean的定义、注册及创建过程3 Bean的注入过程4 Bean的销毁过程5 Bean的生命周期 1 Bean的生命周期 在Spring框架中,Bean对象也有着它的生命周期,然而对于Bean对象的生命周期,我们并不是很清楚,因为Spring帮…

学习pytorch10 神经网络-最大池化的作用

神经网络-最大池化的作用 官方文档参数说明运算演示公式最大池化 代码code 1执行结果code2执行结果 B站小土堆学习视频 https://www.bilibili.com/video/BV1hE411t7RN?p19&spm_id_frompageDriver&vd_source9607a6d9d829b667f8f0ccaaaa142fcb 官方文档 https://pytorch…

UML基础与应用之面向对象

UML(Unified Modeling Language)是一种用于软件系统建模的标准化语言,它使用图形符号和文本来描述软件系统的结构、行为和交互。在面向对象编程中,UML被广泛应用于软件系统的设计和分析阶段。本文将总结UML基础与应用之面向对象的…

34.KMP算法,拒绝暴力美学

概述 今天我们来聊一聊字符串匹配的问题。 比如有字符串str1 “豫章故那,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。”,字符串str2 “襟三江而带五湖”。 现要判断str1是否含有str2,如果有则的…

zabbix介绍及部署(五十一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、zabbix的基本概述 二、zabbix的构成 1、Server 2、web页面 3、数据库 4、proxy 5、Agent 三、zabbix的监控对象 四、zabbix的常用术语 五、zabbix的工作流程 六、za…

区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境领域实践技术应用

大气污染是工农业生产、生活、交通、城市化等方面人为活动的综合结果,同时气象因素是控制大气污染的关键自然因素。大气污染问题既是局部、当地的,也是区域的,甚至是全球的。本地的污染物排放除了对当地造成严重影响外,同时还会在…

基于docker进行Grafana + prometheus实现服务监听

基于docker进行Grafana Prometheus实现服务监听 Grafana安装Prometheus安装Jvm监控配置 Grafana安装 docker pull grafana/grafanamkdir /server/grafanachmod 777 /server/grafanadocker run -d -p 3000:3000 --namegrafana -v /server/grafana:/var/lib/grafana grafana/gr…

Databend 开源周报第 111 期

Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 理解 SHARE END…

9、DVWA——XSS(Stored)

文章目录 一、存储型XSS概述二、low2.1 源码分析2.2 通关分析 三、medium3.1 源码分析3.2 通关思路 四、high4.1 源码分析4.2 通关思路 一、存储型XSS概述 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击&#xff…

MATLAB中filloutliers函数用法

目录 语法 说明 示例 在向量中对离群值进行插值 使用均值检测和最邻近值填充方法 使用移窗检测法 填充矩阵行中的离群值 指定离群值位置 返回离群值阈值 filloutliers函数功能是检测并替换数据中的离群值。 语法 B filloutliers(A,fillmethod) B filloutliers(A,f…

Paper Reading: RSPrompter,基于视觉基础模型的遥感实例分割提示学习

目录 简介目标工作重点方法实验总结 简介 题目:《RSPrompter: Learning to Prompt for Remote Sensing Instance Segmentation based on Visual Foundation Model 》,基于视觉基础模型的遥感实例分割提示学习 日期:2023.6.28 单位&#xf…

接口测试学习

1、curl 命令 无参:curl -X POST -H"Authorization: abcdefghijklmn" https://xxx.xxxxx.com/xxxx 有参:curl -X POST -H"Authorization:abcdefghijklmn " -H"Content-Type:application/json" https://xxx.xxxxx.com/…

synchronized锁详解

本文主要是对synchronized使用各个情况,加解锁底层原理的讲解 一,重量级锁 对象头 讲重量级锁之前,先了解一下一个对象的构成,一个对象是由对象头和对象体组成的,本文主要讲对象头,对象体其实就是对象的…

核心实验21_BGP高级(了解)(配置略)_ENSP

项目场景: 核心实验21_BGP基础_ENSP 通过bgp实现省市互通。 实搭拓扑图: 具体操作: 其他基础配置略(接口地址,ospf) 1.BGP邻居建立: R1: [R1]bgp 200 [R1-bgp]peer 10.2.2.2 as-number 200 …

Java高级之File类、节点流、缓冲流、转换流、标准I/O流、打印流、数据流

第13章 IO流 文章目录 一、File类的使用1.1、如何创建File类的实例1.2、常用方法1.2.1、File类的获取功能1.2.2、File类的重命名功能1.2.3、File类的判断功能1.2.4、File类的创建功能1.2.5、File类的删除功能 二、IO流原理及流的分类2.1、Java IO原理2.2、流的分类/体系结构 三…

LINUX内核启动流程-2

向32位模式转变,为main函数的调用做准备 1、关中断并将system移动到内存地址起始位置0x00000 1.1 关中断:将CPU的标志寄存器(EFLAGS)中的中断允许标志(IF)置0。 main函数中能够适应保护模式的中断服务体系被重建完毕才会打开中断,而那时候响应中断的服务程序将不再是…

【数据结构与算法】不就是数据结构

前言 嗨喽小伙伴们你们好呀,好久不见了,我已经好久没更新博文了!之前因为实习没有时间去写博文,现在已经回归校园了。我看了本学期的课程中有数据结构这门课程(这么课程特别重要),因为之前学过一点&#xf…

天宇微纳芯片测试软件如何测试电源芯片的持续电流?

持续电流(连续电流)是指元器件在工作状态下内部电流持续流动的状态,一般都是用于对元器件允许连续通过电流限制的一种描述。比如电源芯片允许的持续电流,就表示该芯片可连续通过的最大电流。 通过上面的描述我们可以知道&#xff…

爬虫 — 验证码反爬

目录 一、超级鹰二、图片验证模拟登录1、页面分析1.1、模拟用户正常登录流程1.2、识别图片里面的文字 2、代码实现 三、滑块模拟登录1、页面分析2、代码实现(通过对比像素获取缺口位置) 四、openCV1、简介2、代码3、案例 五、selenium 反爬六、百度智能云…