Houdini中的half-edge

目录

参考

Half Edge概念 

网格属性

顶点(vertex)

边(edge)

等价(Equivalence)

Houdini中的VEX functions

1.hedge_dstpoint/hedge_srcpoint

2.hedge_dstvertex/hedge_srcvertex

3.hedge_equivcount

4.hedge_next

5.hedge_nextequiv

6.hedge_isequiv

7.hedge_prim

8.pointedge

9.pointhedge

10.primhedge

11.vertexhedge


参考

 Half-edges (sidefx.com)

flipcode - 半边数据结构

Half Edge数据结构有什么优点? - 知乎 (zhihu.com)

Half Edge概念 

Half Edge结构即半边结构,是网格数据结构的其中一种表达方式,可在建模软件中储存多边形(另外两种用于储存多边形的数据结构是:Polygon Soup和incidence matrice,其中polygon的储存开销远小于其他两种)。Half Edge是个有向图,把一条边表示成两个有向的半边(如图),由于Half Edege构造需要一定的开销,因此一般都用下图iTriMesh三角网格这种简单的网格表达方式。

网格属性

顶点(vertex)边(edge)面(primitive)三个元素组成,Houdini中可操作的常用属性(attribute value)就是这三个。

顶点(vertex)

起点(source vertex)终点(destination vertex),由于同一个point可以充当很多的vertices,因此half-edges可以有相同的起点和终点。

边(edge)

可以是边界边(the boundary edge):边界上的边,邻接面为1,且这个边的half-edge为1;

内部边(interior edge):edge有的half-edge数量为2;

非流形边(non-manifold edge):这样的edge存在与non-manifold mesh网格中,如下图:

等价(Equivalence)

如果两个半边(two half-edges)是从同一个边(edge)分离出来的,则这两个半边等价(equivalent),等价的半边可能有相反的方向;从顶点的角度可以说:如果两个半边的顶点位置相同,那它们是是等价的。

Houdini中的VEX functions

1.hedge_dstpoint/hedge_srcpoint

hedge_dstpoint (sidefx.com)

hedge_dstpoint(“defgeo.bgeo”,3); //从几何体中得到3号半边终点位置的point number

2.hedge_dstvertex/hedge_srcvertex

hedge_dstvertex (sidefx.com)

hedge_dstvertex("defgeo.bgeo",3); //从几何体中得到3号半边终点位置的vertex number

3.hedge_equivcount

hedge_equivcount (sidefx.com)

hedge_equivcount(geometry,hedge_number); //返回跟hedge等价的半边的数量(包括这个半边所以返回的数目至少是1)

这个function可以用来判断这个半边所属的edge的类型,是几何体的边界(return 1)?还是内部边(returns 2)?还是这个网格划分不行(即是非流形的,returns ≥3)

4.hedge_next

hedge_next (sidefx.com)

hedge_next(geometry,hedge_number); //返回在网格划分中顺序排在当前半边下一个的半边的number(下一个hedge的起点是当前hedge的终点

5.hedge_nextequiv

hedge_nextequiv (sidefx.com)

hedge_nextequiv(geometry,hedge_number); //返回下一个等价的hedge,如果没有等价的,则返回hedge自己

6.hedge_isequiv

hedge_isequiv (sidefx.com)

hedge_isequiv(geometry,hedge1_num,hedge2_num); //两个hedges是否等价,是返回1。

7.hedge_prim

hedge_prim (sidefx.com)

hedge_prim(geometry,hedge_num); //返回hedge所在的面的primitive number

8.pointedge

pointedge (sidefx.com)

pointedge(geometry,point1_num,point2_num); //1、2之间有edge存在则返回number,没有则返回-1.

9.pointhedge

pointhedge (sidefx.com)

pointhedge(geometry,point); //返回以point为起点的hedge

pointhedge(geometry,srcpoint,dstpoint);// 返回srcpoint为起点和dstpoint为终点的hedge

10.primhedge

primhedge (sidefx.com)

primhedge(geometry,prim_num); // 返回面上任意一个hedge的num

11.vertexhedge

vertexhedge (sidefx.com)

vertexhedge(geometry,vertex); // 返回以这个vertex为起点的hedge的number

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九九345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值