参数化 |
您所在的位置:网站首页 › 山地的图画 › 参数化 |
连线 …… (循环往复) 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 |