• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            eryar

            PipeCAD - Plant Piping Design Software.
            RvmTranslator - Translate AVEVA RVM to OBJ, glTF, etc.
            posts - 603, comments - 590, trackbacks - 0, articles - 0

            OpenCASCADE Incremental Mesh

            Posted on 2018-12-31 22:45 eryar 閱讀(4417) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): 2.OpenCASCADE

            OpenCASCADE Incremental Mesh

            eryar@163.com

             

            Abstract. OpenCASCADE IncrementalMesh is used to build the mesh of a shape with respect of their correctly triangulated parts. The blog focus on the deflection control of the algorithm.

             

            Key Words. Mesh, Visualization

             

            1. Introduction

            Mesh是生成三維模型顯示數(shù)據(jù)的關(guān)鍵算法。OpenCASCADETKMesh提供了網(wǎng)格剖分算法,用于生成BREP體的顯示數(shù)據(jù)。原來(lái)的一些文章對(duì)網(wǎng)格剖分的算法及其用法進(jìn)行過(guò)說(shuō)明,本文主要對(duì)網(wǎng)格剖分的核心部分進(jìn)行深入挖掘,理解其剖分精度控制原理。感興趣的讀者可以結(jié)合源碼,學(xué)習(xí)其實(shí)現(xiàn)方法。當(dāng)理解其算法原理后,也可以自己實(shí)現(xiàn)一套結(jié)合實(shí)際需求的高性能網(wǎng)格剖分庫(kù)。

            網(wǎng)格剖分的主要流程如下:

             

            遍歷TopoDS_ShapeTopoDS_Face,對(duì)于每個(gè)TopoDS_Face,遍歷其TopoDS_Wire,對(duì)于每個(gè)TopoDS_Wire遍歷其TopoDS_Edge,在根據(jù)EdgeFace得到PCurve。因?yàn)?/span>TopoDS_Wire是閉合的,所以WirePCurve是在參數(shù)空間閉合區(qū)域。對(duì)PCurve圍成的參數(shù)區(qū)域進(jìn)行三角剖分,將三角剖分的結(jié)果映射到三維空間,最終生成每個(gè)Face的網(wǎng)格剖分。這個(gè)流程很好理解,但是如何對(duì)網(wǎng)格剖分的質(zhì)量進(jìn)行控制呢?即用相對(duì)少的三角網(wǎng)格來(lái)更好地表示三維模型呢?

             

            2. Mesh Deflection Control

            OpenCASCADE對(duì)BRep體進(jìn)行三角剖分網(wǎng)格化的類(lèi)是BRepMesh_IncrementalMesh,此類(lèi)有兩個(gè)主要的選項(xiàng)來(lái)控制三角網(wǎng)格化:線(xiàn)性偏差Linear deflection和角度偏差Angular deflection

            三角網(wǎng)格剖分第一步是將所有的邊Edge進(jìn)行離散,即根據(jù)一定的精度生成多段線(xiàn);

             

            線(xiàn)性偏差限制離散的多段線(xiàn)與曲線(xiàn)之間的距離;角度偏差限制每段線(xiàn)段端部切線(xiàn)的夾角。

            第二步是對(duì)面進(jìn)行三角剖分。線(xiàn)性偏差也限制離散的三角形中點(diǎn)到曲線(xiàn)的距離。

             

            應(yīng)用程序應(yīng)該提供適當(dāng)?shù)钠顓?shù)以達(dá)到生成滿(mǎn)意的三角網(wǎng)格。角度偏差Angular deflection比較簡(jiǎn)單且允許使用一個(gè)默認(rèn)值(12~20度)。線(xiàn)性偏差Linear deflection有絕對(duì)的含義,需要由程序來(lái)給定正確的值。給一個(gè)很小的線(xiàn)性偏差值會(huì)導(dǎo)致網(wǎng)格剖分過(guò)密,消耗大量?jī)?nèi)存及影響顯示效率;但是值太大得到的網(wǎng)格效果就是顯示失真。所以對(duì)于LOD的網(wǎng)格來(lái)說(shuō),需要根據(jù)模型尺寸來(lái)設(shè)置相應(yīng)的線(xiàn)性偏差值。

            上面對(duì)網(wǎng)格剖分的參數(shù)設(shè)置進(jìn)行了介紹,下面對(duì)網(wǎng)格剖分的實(shí)現(xiàn)原理進(jìn)行說(shuō)明。因?yàn)榍€(xiàn)曲面是三維的,而對(duì)曲面進(jìn)行剖分的底層三角剖功能是個(gè)二維三角剖分庫(kù),所以網(wǎng)格剖分總的思路是對(duì)曲線(xiàn)在二維參數(shù)空間進(jìn)行剖分,將參數(shù)空間剖分的結(jié)果通過(guò)曲面參數(shù)方程映射回到三維空間。通過(guò)對(duì)pcurve圍成的參數(shù)空間閉合區(qū)域進(jìn)行二維三角剖分,即可對(duì)三維曲面進(jìn)行剖分。類(lèi)BRepMesh_FastDiscretFace是對(duì)每個(gè)TopoDS_Face進(jìn)行離散,其中函數(shù)control()是用來(lái)控制生成網(wǎng)格的質(zhì)量的。

             

            最多迭代次數(shù)是11次。在每一次迭代過(guò)程中,檢查生成的所有三角形在參數(shù)空間中心點(diǎn)處與曲面的距離是否滿(mǎn)足線(xiàn)性偏差,如果不滿(mǎn)足,則插入新的點(diǎn)以便下次迭代。

             

            從上面的代碼可以看出其實(shí)現(xiàn)思路與其類(lèi)名Incremental還是很貼切的,即增量法。

             

             

            3. Conclusion

            OpenCASCADE的網(wǎng)格剖分中網(wǎng)格質(zhì)量控制是相對(duì)重要的核心功能。在理解其原理后,可以自己實(shí)現(xiàn)一個(gè)更清晰的網(wǎng)格剖分庫(kù)。

             

            2018年就過(guò)結(jié)束了,這一年收獲頗豐,其中最大的收獲就是有了自己的小寶寶。

             

            分享創(chuàng)建價(jià)值。雖然OpenCASCADE不是完美的,但是她是目前世界上唯一一款功能相對(duì)完善的開(kāi)放的幾何造型庫(kù)。OpenCASCADE的開(kāi)放分享,給她帶來(lái)生機(jī)。當(dāng)他人因?yàn)槲业?/span>blog的分享的文章或代碼聯(lián)系我時(shí),他們的一聲感謝,我都會(huì)覺(jué)得很高興。

             

            2019年馬上就要到來(lái),希望大家在新的一年里,創(chuàng)造、創(chuàng)新,突破自我,更上一層樓!


            為了方便大家在移動(dòng)端也能看到我的博文和討論交流,現(xiàn)已注冊(cè)微信公眾號(hào),歡迎大家掃描下方二維碼關(guān)注。
            Shing Liu(eryar@163.com)

            Feedback

            # re: OpenCASCADE Incremental Mesh  回復(fù)  更多評(píng)論   

            2020-05-14 11:00 by 七星重劍
            OpenCASCADE 看起來(lái)很不錯(cuò)。恭喜有了小寶寶:)

            # re: OpenCASCADE Incremental Mesh  回復(fù)  更多評(píng)論   

            2020-05-15 11:06 by eryar
            @七星重劍
            OpenCASCADE感覺(jué)是目前世界上開(kāi)源的唯一一款造型功能相對(duì)完善的內(nèi)核庫(kù)。
            感謝。
            丁香五月综合久久激情| 一本久久a久久精品vr综合| 久久精品午夜一区二区福利| 久久国产热精品波多野结衣AV| 久久精品中文无码资源站 | 蜜臀久久99精品久久久久久| 午夜精品久久久久久影视777 | 亚洲狠狠婷婷综合久久久久| 久久久91精品国产一区二区三区 | 狠狠色婷婷久久一区二区 | 一本久久综合亚洲鲁鲁五月天| 久久人做人爽一区二区三区| 国内精品久久久久| 亚洲精品无码久久久| 2020久久精品国产免费| 亚洲国产成人久久精品99 | 无码国产69精品久久久久网站| 一本大道久久a久久精品综合| 亚洲国产日韩欧美综合久久| 久久精品国产69国产精品亚洲| 伊人久久亚洲综合影院| 66精品综合久久久久久久| 性欧美丰满熟妇XXXX性久久久| 99久久国产免费福利| 日韩精品久久久久久久电影蜜臀| 久久精品中文字幕有码| 久久国产精品无码一区二区三区| 久久中文字幕精品| 欧美激情精品久久久久久| 天天爽天天爽天天片a久久网| 丰满少妇高潮惨叫久久久| 中文字幕无码久久久| 久久精品国产亚洲Aⅴ香蕉| 91久久精品电影| 91精品婷婷国产综合久久 | 欧美伊人久久大香线蕉综合69| 一本久久久久久久| 久久最新精品国产| 日本福利片国产午夜久久| 好久久免费视频高清| 99久久精品无码一区二区毛片|