houdini 曲线力场2

47 篇文章 28 订阅

在上一篇曲线力场中,是将曲线转成体积并设置与切线方向的速度。https://blog.csdn.net/weixin_44517539/article/details/116240033

而这篇的思路是通过点云去搜索曲线上最近点,读取点的切线方向,设置到动力学对象的速度上。可以理解为让动力学粒子读取曲线上的方向进行运动。

资产准备

这里准备的资产是一条曲线,一块平面上生成的粒子
在这里插入图片描述
在这里插入图片描述

我们要让粒子跟随曲线方向运动

求曲线方向

这里通过polyframe求切线方向
在这里插入图片描述
这里把切线方向设为法线(N)
在这里插入图片描述

动力学准备

创建了一个动力学网络dopnetwork
加载粒子,使用popobject 读取平面粒子作为初始对象(Initial Geometry)
在这里插入图片描述

在这里插入图片描述
创建popvop作基础连接
在这里插入图片描述

测试,给了一个向上速度,观察下运行是否正确
在这里插入图片描述

开始读取曲线切线方向

通过pointCloudOpen读取曲线上最近点
在这里插入图片描述
这里点云对象连接到的是Opinput2,所以我们需要在popvop上设置下Opinput2对象为曲线
在这里插入图片描述
在这里插入图片描述

现在我们应该捕获到了曲线上最近的点,接下来过滤出法线N(在前面我们将切线方向设为N)
在这里插入图片描述
在这里插入图片描述
将得到的法线方向给到速度
在这里插入图片描述
在这里插入图片描述
受影响的粒子范围可以通过设置点云搜索半径
到这里,已经实现了主要的需求效果,根据曲线方向运动

补充效果 ,往曲线靠近

在这里插入图片描述
这需要获取最近曲线的位置,减去粒子当前位置
在这里插入图片描述
这里会有一个问题,远离曲线的粒子根据搜索半径设置获取不到最近曲线,所以获取的最近点位置结果为0。这会导致减去粒子当前位置后是一个朝向世界中心的方向
在这里插入图片描述
这里如果不想扩大搜索半径改变影响范围,可以通过判断是否在搜索半径影响范围内。
这个判断我的方法是在曲线对象上添加一个属性,值为1.
通过点云搜索这个属性,如果值为1就是在影响范围内
在这里插入图片描述
在这里插入图片描述
两股力相加,得到既向曲线切线方向运动又向曲线靠近的力
在这里插入图片描述

补充效果 ,绕曲线旋转

在这里插入图片描述
通过上面两步,我们求得了曲线切线方向和指向曲线方向。
通过这两个向量进行叉乘,得到的会是绕曲线运动方向
在这里插入图片描述

整合

最后,我们对三个力进行功能整合
除了基础的力的相加外,可以把力的方向和大小拆分控制,比如通过两位置向减得到的朝向曲线的力,距离越远得到的力越大,往曲线运动的越快。
通过Normalized可以将求出来的力标准化为长度为1的方向向量
通过lenge可以得出力的大小。
两者再次相乘,得到的结果同样是之前大小不一的力,但是这样拆分开,可以方便我们对力的大小自定义控制。
在这里插入图片描述

链接:https://pan.baidu.com/s/1vFTcs6G4Ek6TW85iqx7F0w
提取码:wway

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值