• <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

            Mesh BRep Shapes

            Posted on 2019-01-06 10:49 eryar 閱讀(2061) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            Mesh BRep Shapes

            eryar@163.com

            Abstract. 當對OpenCASCADEBRep表示法的數據結構有了一定的理解后,建議可以自己實現一個顯示數據生成的功能,即網格剖分功能。

            Key Words. BRep, Mesh, Triangulation

            1. Introduction

            OpenCASCADE中網格剖分功能是很重要的一個模塊,他可用于生成模型的可視化數據,還可用于HLR消隱,對于離散求交算法也是基于網格數據。OpenCASCADE開源版本中的模塊TKMesh可以用來生成網格的顯示數據,主要的類為BRepMesh_IncrementalMesh。

            在使用BRepMesh_IncrementalMesh的過程中發現其剖分精度高,且精度不便于控制。如對一個球進行網格剖分,想得到一個粗糙的效果,即一個多邊形,使用BRepMesh_IncrementalMesh是不容易得到的。

            如上圖所示為同一個球的不同的剖分精度得到的模型。為了能精確控制網格剖分精度,以便后期使用LOD等優化算法,自己實現一個網格剖分功能。

            網格剖分的主要思路就是遍歷每個TopoDS_FaceTopoDS_Wire,根據Wire找到邊界或面上的孔洞。將Wire對應到二維參數空間,并對二維參數空間中的邊界先進行一次三角網格剖分。對于平面來說,只需要這一步就可以滿足可視化的要求。對于其他曲面來說,就需要在二維參數空間中額外插入一些點,以使最終生成的網格滿足剖分精度要求。最后將二維參數空間的三角剖分映射到三維空間。

            2. Mesh Boundary Region

            因為使用BRepBuilderAPI_MakeFace可以通過Add(TopoDS_Wire)來添加面上的開孔,所以一個TopoDS_Face會有大于1個的TopoDS_Wire。找出外邊界和內孔Wire后可進行一次三角剖分,如下圖所示:

             

            如上圖所示,對于平面而言,直接對邊界及內孔進行一次三角剖分即可以得到滿意的網格數據。對于曲面而言,這顯然是不滿足精度要求的。

             

            如上圖所示為球面的第一次對邊界進行三角剖分得到的效果。因為在一個參數上的邊是退化Degenerated邊,所以退化邊的參數空間上沒有均分。將參數空間的三角剖分映射到三維空間后,得到的是一條線,其實是兩個非退化邊。

             

            3. Deflection Control

            對于曲面來說,如果直對邊界進行一次三角剖分,是達不到精度要求。為了使曲面網格剖分效果更好,就需要對按邊界剖分后的網格進行插入點繼續剖分。對于上面球面的參數空間區域,根據精度要求插入點剖分后的結果如下圖所示:

             

            得到的三維效果如下圖所示:

             

            4. Demo

            下面給出幾個自己實現網格剖分的結果與OpenCASCADETKMesh作個對比:

             

            上圖為自己實現網格剖分算法對橢球面的網格剖分結果

             

            上圖為TKMesh網格剖分算法對橢球面的網格剖分結果

             

            上圖為自己實現網格剖分算法對橢圓環面的網格剖分結果

             

            上圖為TKMesh網格剖分算法對橢圓環面的網格剖分結果

            通過上面的對比可以發現,在大致相同的顯示效果情況下,OpenCASCADE產生了更多的頂點和三角形數據。自己實現的網格剖分產生的網格質量相對可控且性能高。 

            5. Conclusion

            OpenCASCADE中開源的網格剖分庫TKMesh可以實現模型的可視化數據生成功能,但是對于網格剖分的精度可控性差。為了對模型的網格精度進行更好地控制,自己實現一套網格剖分功能,且性能要優于TKMesh。在程序的編寫過程中,可以加深BREP數據結構中一些概念的理解。有興趣的讀者在熟悉BREP數據結構后,也可以嘗試下網格剖分功能的實現。


            為了方便大家在移動端也能看到我的博文和討論交流,現已注冊微信公眾號,歡迎大家掃描下方二維碼關注。
            Shing Liu(eryar@163.com)
            国产精品久久久99| 久久精品综合一区二区三区| 99久久免费只有精品国产| 无码人妻精品一区二区三区久久久 | 国内精品久久久久久麻豆| 欧美性大战久久久久久| 欧美亚洲国产精品久久| 亚洲国产另类久久久精品小说| 久久久久久久久波多野高潮| 久久综合久久综合久久综合| 亚洲国产日韩欧美久久| 久久婷婷五月综合97色| 东京热TOKYO综合久久精品| 国产ww久久久久久久久久| 欧美伊人久久大香线蕉综合69 | 亚洲精品成人网久久久久久| 精品多毛少妇人妻AV免费久久| 中文字幕日本人妻久久久免费 | 91性高湖久久久久| 亚洲午夜福利精品久久| 国产成人久久精品一区二区三区| 国产精品成人99久久久久 | 色成年激情久久综合| 欧美精品一区二区久久| 91精品国产高清久久久久久io | 久久免费视频1| 91久久香蕉国产熟女线看| 久久久噜噜噜久久中文字幕色伊伊| 婷婷伊人久久大香线蕉AV| 久久久91人妻无码精品蜜桃HD | 久久精品国产亚洲精品2020| 漂亮人妻被中出中文字幕久久| 99久久er这里只有精品18| 美女久久久久久| 99久久国产热无码精品免费久久久久 | 久久人人超碰精品CAOPOREN| 97久久国产亚洲精品超碰热| 久久久无码精品亚洲日韩京东传媒| 精品久久久久久久久久久久久久久| 999久久久免费精品国产| 精品一二三区久久aaa片|