HoudiniVex笔记_P22_RemappingBasics重映射

news2024/11/26 5:51:27

原视频:https://www.youtube.com/playlist?list=PLzRzqTjuGIDhiXsP0hN3qBxAZ6lkVfGDI
Bili:Houdini最强VEX算法教程 - VEX for Algorithmic Design_哔哩哔哩_bilibili

Houdini版本:19.5

1、fit函数

取范围(omin,omax)中的值,并将其映射到新范围(nmin,nmax)中的相应值。

2、fit01函数

如果(omin,omax)值范围是(0~1),可直接使用fit01函数将其映射到新范围(nmin,nmax)中。

 3、fit10函数

与fit01相似,只不过(omin,omax)值范围是(1~0)。当然,直接使用fit01函数,改变(nmin,nmax)能达到同样的效果。

4、fit11函数

 取范围(-1,1)中的值,并将其移动到新范围(nmin,nmax)中的相应值。

5、efit函数

 取范围(omin,omax)中的值,并将其移动到新范围(nmin,nmax)中的相应值。与fit不同,函数不会将value值钳制在给定范围内。多与三角函数/角度值等结合使用。

 6、Exercise—重映射与噪波

记录下。

eg.先上结果,(scale==1.5)(min_height==-0.5,max_height==0.5)

①节点连接及设置,

②完整代码如下,

//noise_value节点
vector pos = @P * chf('scale');
vector4 seed = set(pos.x, pos.y, pos.z, @Time);

float noiseval = noise(seed);
f@noiseval = noiseval;
//remap节点
float minval = detail(0, 'minnoiseval');
float maxval = detail(0, 'maxnoiseval');

float minheight = chf('min_height');
float maxheight = chf('max_height');

float height = fit(f@noiseval, minval, maxval, minheight, maxheight);

@P += @N * height;

7、Exercise—重映射与距离

对模型搞个大波浪(三角函数周期与映射)。

surfacedist() 函数:返回点与模型的最近距离

理论:
①在空间中添加随意点,根据模型与该点的距离进行上色,

加上efit函数,可是其表面颜色呈周期性变化(一圈又一圈),

操作:
①节点设置如下,

②类型为Points的ripple_surface节点代码如下,

vector npos = point(1, 'P', 0);
int npt = nearpoint(0, npos);

int closest = -1;   //模型上最近距离点的点号@ptnum
float dist = surfacedist(0, itoa(npt), 'P', @ptnum, closest, 'surface');    //点与模型的距离

float ang =efit(dist, 0.0, chf('rangdsit'), 0, $PI * 2.0) - @Time*5;
float val = sin(ang);

float height = fit11(val, chf('tmin'), chf('tmax'));
float col = fit11(val, 0.0, 1.0);    //col值呈sin函数周期变化

@P += @N * height;    //沿法线偏移

f@dist = dist * col;

8、Ramp斜坡重映射函数/参数

​ 可以看看这篇笔记:
【HoudiniVex笔记_P3_ParameterBase参数基础】的第四部分。 ​

感兴趣可以继续看视频部分【1h7m ~ 1h17m】。

9、重映射与插值/Lerp 

仅截图记录下——>小球从一个形态平滑过渡到另一个形态。

10、Exercise—重映射与插值/Lerp 

上一节是两小球之间的变化过渡。这次是多个小球之间的形态变化过渡。 

仅大概记录下,感兴趣的可以跟做下,

//每个点设置随机大小
i@id = @ptnum;

vector scale = rand(@P);

float min = chf('min');
float max = chf('max');

v@scale = fit01(scale, min, max);
int count = npoints(2);     //第二个输入点总共有几个点

float f = fit(@Frame, 1, $FEND + 1 , 0.0, 1.0);     //当前帧范围映射为0~1,从0递增到1
int i = floor(f * count);                           //i值随时间递增,从0递增count
float ff = (f % (1.0 / count )) * count;            //其意义为,相当于把时间均分给每两个变换点
ff = smooth(0.0, 1.0, ff);
//ff = chramp('ramp', ff);

int npts1[] = findattribval(1, 'point', 'id', i);
int npt1 = npts1[@ptnum];
vector npos1 = point(1, 'P', npt1);

int npts2[] = findattribval(1, 'point', 'id', (i+1) % count);
int npt2 = npts2[@ptnum];
vector npos2 = point(1, 'P', npt2);

@P = lerp(npos1, npos2, ff);

11、重映射与UV

展UV,记录下。

12、 Exercise—重映射与UV

记录下,感兴趣可以跟着做做。

int vtx = pointvertex(0, @ptnum);
vector uv = vertex(0, 'uv', vtx);

float x = chf('x');
float y = chf('y');

//相当于划分成一块块
uv = uv % set(x, y, 1.0);   
uv = fit(uv, set(0,0,0), set(x, y, 0), set(0,0,0), set(1,1,1));
// 也可这样写 uv = uv * set(1/x, 1/y, 1.0);  

uv *= $PI;
float xh = sin(uv.x);
float yh = sin(uv.y);

@P += @N * (xh * yh) * chf('height');

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

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

相关文章

Netty:ByteBuf的资源释放方法

说明 io.netty.buffer.ByteBuf实现了io.netty.util.ReferenceCounted接口,需要显式释放。当ByteBuf被实例化后,它的引用计数是1。 调用ByteBuf对象的release方法释放: ByteBuf的release()方法使引用计数减少1。只有当执行以后引用计数减少…

【运维】linkis安装dss保姆级教程与踩坑实践

文章目录 一. 安装准备二. 创建用户三. 准备安装包四. 修改配置1. 修改config.sh2. 修改db.sh 五、安装和使用1. 执行安装脚本2. 启动服务3. 查看验证是否成功 六. 报错处理报错一:The user is not logged in报错二:dss接口报错报错三:执行没…

bigemap如何添加arcgis地图?

批量添加视频教程 相关链接:添加卫星影像图 教程 说明:批量添加可以同时添加多个在线地图,一次性添加完成(批量添加无法验证地址是否可以访问) 添加后如下图: 第一步 : 制作地图配置文件&…

从小白到大神之路之学习运维第80天-------Kubernetes企业级高可用集群部署

第四阶段 时 间:2023年8月14日 参加人:全班人员 内 容: Kubernetes 企业级高可用部 目录 一、Kubernetes高可用项目介绍 二、项目架构设计 (一)项目主机信息 (二)项目架构图 &#…

私域流量运营的软件终点是App?

2023年,中国新生人口出生人数预测只有780W,少得可怜。微信、支付宝、抖音、小红书等社交平台,在21世纪20年代风生水起,伴随者人口红利的增长,奠定了中国公域流量平台的位置。 市场是千变万化的。人口急剧缩减&#xf…

力扣:63. 不同路径 II(Python3)

题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。 现在考虑网格中有障碍物。那么从…

企业流程化管理有什么好处?企业实现流程化管理需要哪些步骤?

在当今快速发展的商业环境中,企业需要一个高效、可靠的管理系统来支持其日常运营和持续发展。流程管理作为一种系统化的管理方法,通过对工作流程的标准化、规范化、透明化等手段,使企业管理更具针对性、效率性和可控性。本文将通过介绍流程管…

【100天精通python】Day35:一文掌握GUI界面编程基本操作

目录 专栏导读 1 GUI 编程概述 1.1 为什么需要GUI? 1.2 常见的GUI编程工具和库 1.3 GUI应用程序的组成和架构 2 使用Tkinter 库 进行GUI编程 2.1 使用Tkinter库进行GUI编程的基本流程 2.2 使用Tkinter库进行GUI编程 2.2.1 导入Tkinter库 2.2.2 添加标签和…

TCP/IP协议追层分析物理层(第三十九课)

TCP/IP协议追层分析物理层(第三十九课) 1 物理层:建立、维护、断开物理连接,定义了接口及介质,实现了比特流的传输。 1、传输介质分类 有线介质:网线(双绞线)、光纤 无线介质:无线电 微波 激光 红外线 2、双绞线分类: 五类cat5: 适用于100Mbps 超五类cat5e:适用于…

深入源码分析kubernetes informer机制(二)Reflector

[阅读指南] 这是该系列第二篇 基于kubernetes 1.27 stage版本 为了方便阅读,后续所有代码均省略了错误处理及与关注逻辑无关的部分。 文章目录 Reflector是什么整体结构工作流程list拉取数据缓存resync操作watch监听操作 总结 Reflector是什么 reflector在informer…

神经网络分类算法原理详解

目录 神经网络分类算法原理详解 神经网络工作流程 反向传播算法 1) 反向传播原理 2) 应用示例 总结 正向传播 (forward-propagation):指对神经网络沿着输入层到输出层的顺序,依次计算并存储模型的中间变量。 反向传播 &a…

泛微 E-Office文件上传漏洞复现

声明 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 文章作者拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c…

牛客多校题解 | I Non-Puzzle: Segment Pair 扫描线

给n对区间,要求每对区间恰好选一个使得选出来的n个区间有交集,问有多少方案数 可以从每一个点开始考虑 如果前面的点没有任何可行的方案,那么新点就可以作为左端点,对答案的贡献为 向后扫描的过程中,如果新的点有增加…

2023-08-15 linux mipi 屏幕调试:有一个屏幕开机时候不显示,开机后按power 按键休眠唤醒就可以显示。原因是reset gpio 被复用

一、现象:今天更新了一个新版本的buildroot linux sdk ,调试两个mipi 屏幕,这两个屏幕之前在其他的sdk都调好了的,所有直接把配置搬过来。但是有一个屏幕可以正常显示,有一个屏幕开机时候不显示,开机后按po…

油画|怀念《记忆中的乌篷船》

《记忆中的乌篷船》 90x60cm 陈可之1998年绘 油画《记忆中的乌篷船》,描绘着晚霞中长江边的几艘乌篷船。寻常的景象,流淌着岁月的痕迹,是许多人的遥远回忆。 乌篷船处于画面中心,用焦点透视法,把近处的石板&#xff0…

k8s集群部署vmalert和prometheusalert实现钉钉告警

先决条件 安装以下软件包:git, kubectl, helm, helm-docs,请参阅本教程。 1、安装 helm wget https://xxx-xx.oss-cn-xxx.aliyuncs.com/helm-v3.8.1-linux-amd64.tar.gz tar xvzf helm-v3.8.1-linux-amd64.tar.gz mv linux-amd64/helm /usr/local/bin…

从零开始的机械臂yolov5抓取gazebo仿真(二)

使用moveit_setup_assistant配置机械臂(上) 观察机械臂模型 上一节中拿到了sunday_description功能包,将功能包放进工作空间进行编译,可将工作空间路径写进.bashrc文件中,这样就不必每次都source了 例如&#xff1a…

I2C连续读写实现

IIC系列文章: (1)I2C 接口控制器理论讲解 (2)I2C接口控制设计与实现 (3)I2C连续读写实现 文章目录 前言一、 i2c_bit_shift 模块分析二、 i2c_control 模块实现三、 i2c_control 模块仿真测试前言 上文的 i2c_bit_shift 模块说完了,我们发现实现一个字节的写操作还是可以实现…

为什么CAN要采取双绞线布局?

摘要: 在CAN总线应用中,一般建议使用屏蔽双绞线进行组网、布线,本文将详细讲解为什么CAN总线要采取双绞线的布局。 CAN(Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来…

【解决】Kafka Exception thrown when sending a message with key=‘null‘ 异常

问题原因: 如下图,kafka 中配置的是监听域名的方式,但程序里使用的是 ip:port 的连接方式。 解决办法: kafka 中配置的是域名的方式,程序里也相应配置成 域名:port 的方式(注意:本地h…