怎样用c#或python,找到网格点边数不等于4的点(或任意点)的循环边?
谢谢。不胜感激。
我之前做过纯电池版本的catmull clark细分
所以里面用到过你的这个模块,上面的回帖是纯电池,至于代码方面我也是第一次研究。
下面我会介绍我真实的查阅和研究过程,供你参考。
首先我输入x以后翻阅列表,找到了顶点的单词,在最后
这时候我猜测这个顶点是个列表,因此我打了一个方括号,果然后面出现了index
我尝试着输入[0]以后再输入点。发现他返回的都是基于单纯的点的操作,此路不通
返回到上一步,这次直接vertices后面不加括号,直接加点,出来这个列表,看起来有希望
翻到最下面,发现疑似目标GetVertexFaces,准备查阅rhinocommon核实用法,不核实直接上也可以
https://developer.rhino3d.com/api/RhinoCommon/html/M_Rhino_Geometry_Collections_MeshVertexList_GetVertexFaces.htm
查完后得知圆括号里面的参数是你要查询的顶点编号,这里给了个10做实验
查看结果,正如rhinocommon描述,返回的是这个10号顶点相邻的4个面的编号
之后如何获取所有顶点的面编号,以及判断编号数量是否<4我就不继续了。核心问题的解决过程如上
以上过程执行之前我从未知道这个函数,但是根据科学的方法摸索,任何人都可以摸索出来。
黑色不是循环边,这个概念用在这里不正确。循环边一定是循环绕一圈后回到原点的。
你想找的是这个六个面的分界线。这个会比较复杂一点。我暂时找不到很好的逻辑将这些黑色的和其他的分离
我再想想 如果有办法我会回复的
好的,费心了。再次感谢
mesh loop在GH中实现需要自己写算法,而不象是犀牛用命令就可以
我google了一下,找到不少资料
pufferfish是肯定可以的
作者提到了本算法来自于Mateusz Zwierzycki
而google搜到的第二个链接是这位Mateusz Zwierzycki发布的一个group
https://www.grasshopper3d.com/group/milkbox/forum/topics/mesh-pipe-and-sweep-mesh
该group里面有下载他的group整合的小插件,其中mesh loop edge的贡献者就是Mateusz Zwierzycki自己
如果不喜欢pufferfish那么大的插件,你可以用这个小插件
至于自己用代码实现,也是没问题的,你有兴趣可以自己尝试,但我认为意义也不是很大
下载Mateusz Zwierzycki的group内的文件需要你注册老GH论坛登陆后加入group方可下载
如果实在是不想装插件,下面是我写的DJstra最短路径源代码+注释
球体的完整示例(不包括求前面8个点)球体.gh (17.9 KB)
单独的DJstra算法实例最短路径DJ(注释).gh (10.6 KB)
你已经拿到了8个点,其中每个点都对应着剩余的7个点,而你又知道每个点需要连的那个黑色边一定是3条
因此对每个点来说,对剩余的7个点求最短路径,然后找到最短的三条即可。
我的程序中是先找到最近的3个点,来节约DJstra的计算量
你后来回复的案例不一定适合这个球体
你其实是想找到mesh使用subd以后变成nurbs的分界线
针对球体是可以用自己的算法解决的。解决方案我都写在上面
但针对你这个复杂形体,你的算法是不成立的,求出汇聚的面/线不等于4的点并不能帮助你拆分。
理论上应该可行的啊,我这个做了一次细分,相当于求反细分。
可以看出来你的思路走歪了。
另外问的问题也是特性前后不一致,球体和你刚发的造型解决方案完全不同,球体可以有办法简化,而你刚发的就完全不行。
不一次性将问题讲清楚,你会浪费解答的人的时间。
建议你将问题的母问题发出来
你从一开始到底想解决什么问题
抱歉
是这样的,我做了一个形体,重拓扑成四边面,做了一次细分,想返回细分之前的面数。
我想找一个通用的办法反细分。
反细分类似于逆向工程
如果之前的文件已经丢了,你只能尝试quadremesh命令
这属于很低级的错误,解决低级错误首先是不能指望高级方法,其次更加不能指望 错误的高级方法。
解决低级错误的正确方法就是避免下次出错
细分之前备份一个模型
好吧。
在rhino里双击边循环是可以通的。gh里就有断线。
通当然是可以通的,但是通了以后意义何在呢?就如我上图的,分出来都那么乱了。
不如重新用科学的subd方式建模。
通了以后就可以分裂网格,然后重构,相当于反细分,还是四边面。
全部循环不应该是这样吧 ,应该都是规整四边面的。相当于面数的1/4。
好吧,我再检查下。