本文轉自公眾號:十二只熊
概述
幾何體的邊一般是無方向并且是可多面共享的。
但是對于一些需求來說,有時需要使每一個面都具有
僅屬于自己的邊
這就需要引入半邊概念,也就是相當于針對每一條共享邊,分離出兩條具有方向的半邊。
“邊的方向”由面的頂點號決定——半邊具有起始頂點(start vertex)以及結束頂點(end vertex),其起始和結束表示也被稱為"source"和"destination"。
所謂的“共享邊”,類似于共享點,比如下圖——
序號5、6、9、10四個面,共用著一個序號為12的點,這個點就是共享點。
“共享邊”的概念則與此類似,實際上就是相鄰多邊形的交界邊(對于多邊形邊界處的邊,由于沒有多于一個的共享面,所以只有一條半邊)。
如下圖:
半邊的作用和本質
和Houdini中常規的point、vertex、edge、prim等幾何元素類型不同,"Half-Edges"并不是具體的可編輯幾何數據,而是依賴于上述常規幾何元素存在的一種幾何關系。通過半邊,可以對其它具體幾何元素進行非常規的訪問和管理,這可以使用半邊相關的VEX函數來實現。
半邊可以根據任意指定的vertex或point構建,可實現對其它幾何元素的管理如下:
1. 直接訪問到半邊的起始和結束vertex、point;
2. 直接訪問到共享邊的另一個半邊,從而間接訪問相鄰面的vertex、point;
3. 直接訪問半邊方向所指的下一個半邊,對于多邊形面來說,重復性地訪問next half-edge,就是在當前面上沿頂點順序進行循環;
4. 直接訪問共享了同一個給定point的所有半邊,從而間接訪問由給頂點向外輻射的任意相鄰元素。
5. 以及其它各種操作。
半邊的“等價”
對于共享了同一條原始邊的兩條或多條半邊,則這些半邊即被視為等價,無論其方向是否一致,如下圖所描述的立體幾何(一個三角面垂直于兩個五邊形),共享了同一條邊的三條半邊e 、f 和g ,相互之間等價:
Source & Destination
半邊的構建主要基于已有的實際幾何元素,即vertex和point,所以半邊的Source和Destination也主要對應于具體的vertex或point。
每一條半邊僅對應1個Source Vertex,也就是說,僅根據一個頂點即可構建一個半邊,其Destination是按頂點順序的下一個頂點。
每個vertex僅對應1條半邊,而一個point則允許對應著多條半邊。兩個半邊的頂點不同,但是共享著相同的兩個point時,則這兩條半邊視為等價(Equivalence)。
Primary Half-Edge——
在每一組等價半邊中,都有一條主半邊,作為這些共享半邊的代理,便于統一管理。
主半邊的生成標準不明,根據官網所述:
In particular, a half-edge which is equivalent to no other half-edges is always primary。(特別地,不等同于任何其他半邊的半邊始終是主邊。)
半邊構建函數
生成半邊的相關函數如下:
vertexhedge(int geohandle
intvertexint
為vertex頂點構建一個半邊表示,返回相應的半邊序號。
該函數描述的半邊方向,是以當前頂點為Source(見前文所述),頂點所在Primitive的下一個頂點作為Destination而決定的。
如果引入的頂點號不存在,則返回-1。
便于直觀理解,可以參考下圖——
(其中
綠色數字
表示半邊號,
紅色數字
表示當前半邊所有等價半邊的主半邊號
primhedge(int geohandle,intprim)-->int
針對primitive構建一個半邊表示,返回相應的半邊序號。注意,由于一個Primitive可能具有多個半邊,該函數返回的是其中任意一個。
半邊方向則以半邊兩端頂點的順序,決定Source以及Destination的所在點。
如果引入的基元號不存在,則返回-1。
pointhedge(int geohandle,intpoint)-->int
針對point構建一個半邊表示,返回相應的半邊序號。
該函數還有另一個形態:
pointhedgeint geohandleintsrcpointintdstpointint
該形態下,可以直接引入點索引,手動確定半邊的起點和終點。
參考鏈接:https://www.sidefx.com/docs/houdini/vex/halfedges.html
THE END
學UE5,居然能把小米SU7開回家?
15秒造人,動捕、直播都能hold住?
What?我的離譜作業居然可以做成全球爆款?!
推薦幾款Blender插件,工作效率Up!Up!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.