参数化

您所在的位置:网站首页 山地的图画 参数化

参数化

2024-07-15 20:01| 来源: 网络整理| 查看: 265

连线

……

(循环往复)

Step 3:

将每根连线串联,

形成完整汇水线。

Step 4:

排除逻辑错误,

手动 or 增加电池逻辑。

出图。

今天的案例再也不会用到Explode Mesh

这么恐怖的运算器咯~

没有曲面,没有网格,

只有雨水点和等高线。

看起来如此简洁明了轻松愉快,

以及活泼可爱 ╮(╯▽╰)╭

然而...

不要高兴地太早,

今天的计算量比之前多n倍。

首先第一步准备工作,

通过Rhino的等距断面线命令

切割得到我们所需的等高线。

不能太密,

否者计算量会以几何倍数增长。

这里一改之前每1m切一根等高线的做法,

果断换成了每5m切一根,

但依然不是个轻松的活儿。

幸好苦活累活都交给电脑做去了...

但有些人依然在干这些事,

咩哈哈哈哈~

接下来第二步准备工作就是获取雨水落点。

这里选择了继承上一期文章中的地形曲面

生成规整雨水点的方式,

直接使用 Divide Surface 命令,

在曲面上根据曲面结构线

获取我们需要的雨水落点。

疏密程度可以先不要太大,

测试无误以后再调多数据也不迟。

接下来就用到我们上期文章中讲到的

循环迭代插件HoopSnake。

这里重新再上一遍图,

有不懂的小伙伴可以翻阅上期文章仔细查看。

当然在第一遍连接连电池图的时候可以忽略。

至于为什么HS左右都Graft一下,

后面我们会进行解释。

有了第一步的点与等高线,

下一步我们就需要找

对于每个点来说比它低的、最近的一根等高线。

所以呢,这里就需要用到了交叉运算。

这也是兰亭君首次给大家带来交叉运算案例。

注意箭头标出的两个输入端连接线的差别。

一边是多个数据,一边是树形数据。

在正常情况下是极力需要避免这种情况的,

尤其是新手在操作过程中一定要注意!!

它的计算逻辑是A中的数据与B中的数据

进行一次小循环运算。

比如这样滴A&B两组数据交叉运算,

A中间的8个数据与B中的每一个数据进行一次运算。

那么计算量就是8×8=64次。

如果我们这里有1000个雨水点,

以及200根等高线的话....

1000×200=200000次运算。

所以你们懂兰亭君为什么一开始就建议小伙伴们

把等高线和雨水点的数量控制一下了吧。

筛选出对每个点来说比他低的等高线以后,

就可以继续找出每组等高线中,

离指定雨水点最近的那条等高线。

这里我们使用了Cull Pattern运算器,

直接删去对应布尔值为False的等高线。

道理与Dispatch一样,

只不过更省事方便,

直接扔掉了False被筛掉的数据。

注意看这里的数据量,

806×154=124124根等高线...

筛选过后依然有60761根等高线。

不过目前每组等高线都已经归类。

一组等高线就是指比某一个点低的

所有等高线集合。

有多少点就有多少组等高线集合。

接下来我们需要找出

离每个雨水点最近的那根等高线,

并找出其上的最近点,

连线。

这里会用到Sort List 排序运算器。

用法是:K端为排序的依据,

A端为需要排序的内容。

也就是将每根等高线的最近点里

离指定雨水落点最近那个点找出来。

好绕... (๑°⌓°๑)

所以对这些最近点的排序是按照

距离雨水点的长度从小到大依此排列的。

最终只需要选出每组数据中的第一根等高线,

就是真正离雨水点最近的那根等高线,

以及其上对应的最近点。

我已经尽力解释了omg...

最后将雨水点与其最近点相连。

再放一张细节图。

接下来就是寻找下一步

离我们已经找到的最近点

在下一根等高线上的最近点...

那我们就需要进入一次循环计算过程。

只要把我们已经得到的最近点,

当做最新的雨水点位置,

带入到我们之前的逻辑之中,

也就是将我们已经得到的点,

连接入HS运算器的D*接口。

这样寻找下一批等高线与对应的最近点。

最后需要用到Data Recorder运算器,

记录每一次两点之间的连线。

形成最终的雨水路径。

get!!

返 场

不过细心的小伙伴

应该能发现其中有一些bug。

比如:

① 怎么循环进行不下去啦...(+﹏+)~

有的已经循环运算了五六步了,

有的走了一两步就再也不找下一个点了。

② 乱入的线条们...

具体原因呢,

且听兰亭君细细道来。

① 不能继续循环。

这里涉及到点的位置误差问题。

当我们第一次找到距离雨水落点最近的

等高线上的一点以后,

再找下一个最近点时经常会找到自己。

额..这是有多自恋...

然后循环中就不停地停留在自己的位置上,

其实点还是有的,只不过重叠了。

所以为了排除这个bug,

兰亭君在循环逻辑中加了一点修改。

这里在筛选比点低的等高线时,

将点的z值故意减去1,

因为等高线之间的高程间距为5,

所以不会干扰整体运算逻辑。

这样循环就能一直找到真正的

比自己低的等高线和对应的最近点咯~

② 乱入的线条们。

这个是由于程序逻辑的不严谨导致的。

举个例子:

比如说这是两个坑...

左边的比右边的深一些,

也就自然多了一根等深线(等高线)。

当我右边的最低的那根线上的点

再去寻找比自己低的等高线上的最近点时,

结果就是这样滴:

再来一张侧视图就更明显了。

至于怎么解决这个逻辑bug。

兰亭君能想到的办法是:

Ⅰ 分步筛选汇水线;

Ⅱ 手动粗暴解决。

Ⅰ 分步筛选汇水线。

只需要将每一次得到的汇水连线

和等高线都投影到xy平面上,

筛选出与所有等高线只有两个交点的汇水线。

删去每一步与等高线有多个交点的连线。

这个道理应该都懂。

这样就能完美解决乱入的线条啦~

不过这个程序又会凭空增加了无数计算量...

所以懒到死的兰亭君选择了后者。

Ⅱ 暴力删线!!!

然后世界就清净了~

最后。

感谢 兰犀艺数授权分享

微信ID: L-RhinoDesign

兰犀艺数 | 做一个爱玩数字的设计小屋

© 版权声明

内容转载自 兰犀艺数,由学堂-洪宸整理编辑,如有转载请联系原作者。

© 版权声明

内容转载自 兰犀艺数,由学堂-洪宸整理编辑,如有转载请联系原作者。

参数化线下班

相关阅读

返回搜狐,查看更多



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3