OpenCASCADE-HLR Edge
1 Introduction
用計(jì)算機(jī)生成三維物體的真實(shí)圖形,是計(jì)算機(jī)圖形學(xué)研究的重要內(nèi)容。真實(shí)圖形在仿真模擬、幾何造型、廣告影視和科學(xué)計(jì)算可視化等許多領(lǐng)域都有著廣泛應(yīng)用。在用顯示設(shè)備描述物體的圖形時(shí),必須把三維信息經(jīng)過(guò)某種投影變換在二維的顯示平面上繪制出來(lái)。從三維投影到二維的降維操作,會(huì)導(dǎo)致圖形的二義性。要消除這類二義性,就必須在繪制時(shí)消除被遮擋的不可見(jiàn)的線或面,習(xí)慣上稱之為消除隱藏線Hidden Line Removal和隱藏面Hidden Face Removal。

這是渲染顯示上對(duì)消隱的需求,在根據(jù)三維模型自動(dòng)生成工程圖的工程設(shè)計(jì)軟件中,對(duì)消隱的需求有所不同。

工程設(shè)計(jì)軟件與機(jī)械設(shè)計(jì)軟件不同,工程設(shè)計(jì)軟件一次出圖消隱的模型量大,對(duì)出圖的算法要求主要有:
- 主要使用消隱線算法;
- 消隱得到的線能找到與三維模型的關(guān)系,方便標(biāo)注模型信息,如模型名稱、規(guī)格等;
- 自動(dòng)標(biāo)注布局算法,能對(duì)標(biāo)注的名稱、規(guī)格等自動(dòng)布局,減少手工調(diào)整;
- 自動(dòng)尺寸標(biāo)注;
- 符號(hào)化處理,如管道模型能用一條線符號(hào)化處理;
其實(shí)最后總結(jié)成一句話就是一鍵根據(jù)模型生成能交付的圖紙。雖然現(xiàn)在技術(shù)上具備三維模型下車(chē)間的能力,但是目前二維圖紙依然是設(shè)計(jì)交付、加工制造主要依據(jù)。工程類設(shè)計(jì)軟件主要的功能就是快速建模,碰撞檢測(cè)和自動(dòng)圖紙生成。當(dāng)模型量大時(shí),消隱速度快及自動(dòng)生成的標(biāo)注文字排列整齊(或滿足工程習(xí)慣)成了二維圖紙自動(dòng)生成的核心技術(shù),也是程序處理中的難點(diǎn)。
2 HLR
幾何內(nèi)核一般都提供HLR算法,用來(lái)根據(jù)模型投影生成二維工程圖。OpenCASCADE的HLR提供了隱藏線消隱算法。

https://www.spatial.com/zh/products/cgm-hlr-hidden-line-removal
OpenCASCADE 提供了兩種消隱算法:HLRBRep_Algo和HLRBRep_PolyAlgo。這些算法都是基于相同的原理:比較形狀每條邊相對(duì)每個(gè)面的可見(jiàn)性,并 計(jì)算每條邊的可見(jiàn)部分與消隱部分。算法通過(guò)計(jì)算在指定投影方向上的物體顯示特性,去除或標(biāo)記被面遮擋的邊。這兩個(gè)算法也與一些提取功能配合使用,如重構(gòu)一 個(gè)簡(jiǎn)化的模型等,簡(jiǎn)化后新的模型由邊組成,就是在投影方向上的輪廓線。
3 邊的分類
OpenCASCADE的HLR中將邊分為以下類型:
- Sharp Edges
- Smooth Edges
- Sewn Edges
- Outline Edges
- Isoparameter Edges
從類HLRBRep_HLRToShape和類HLRBRep_PolyHLRToShape中給出了這些邊的一些定義。其中Sharp Edge表示C0連續(xù)(非G1連續(xù))的邊,就是一般Edge;
Smooth Edge表示G1連續(xù)(非G2 連續(xù))的邊;
Sewn Edge表示G2連續(xù)的邊;
Outline Edge表示模型的輪廓邊,這種類型的邊不在BREP數(shù)據(jù)中,需要根據(jù)投影方向生成;
Isoparameter Edge表示面的等參線生成的邊,這種類型的邊不也不在BREP數(shù)據(jù)中;

其中Sharp Edge、Smooth Edge和Sewn Edge一般都是BREP中的EDGE數(shù)據(jù),而Outline Edge和Isoparameter Edge是根據(jù)設(shè)置額外生成的邊。理解邊的這些定義,方便對(duì)HLR算法進(jìn)行理解。HLR算法是相對(duì)簡(jiǎn)單的算法,主要是就將上述五種類型的邊與面進(jìn)行求交,判斷遮擋關(guān)系。
目前OpenCASCADE中的HLR算法代碼寫(xiě)得有點(diǎn)亂,上次在深圳ogg的俄羅斯開(kāi)發(fā)人員提到要重構(gòu)HLR部分的代碼。深入理解 HLR算法,為自動(dòng)生成圖紙功能打下基礎(chǔ)。