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

            Boolean operations between triangle meshes

            Posted on 2018-05-17 23:18 eryar 閱讀(2351) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            Boolean operations between triangle meshes

            eryar@163.com

            Abstract. Boolean operations is one of basic and well known on 3D models. The operations are widely used in computer graphics, game, CAD, EDA. The blog introduce the function in some open source program. 

            Key Words. Boolean Operations, Mesh, Triangle Mesh Boolean Operations,

            1.Introduction

            OpenCASCADE提供了基于BREP體的Boolean Operations,但是如果Topo體中只包含三角網格信息的話,是不支持布爾運算的。典型的例子就是由STL導入生成的模型在OpenCASCADE中是不能進行布爾運算。

            有一些開源庫提供了基于三角網格的布爾運算的功能。如MeshLab、Cork等。本文主要就來介紹一下這兩個庫中的基于三角網格的布爾運算功能。

            wps_clip_image-6945

            Figure 1. Boolean Operation cut between Cylinder and Torus mesh

            基于網格有布爾運算主要應用于沒有幾何信息的模型,如游戲、3D打印中的網格模型。

            2.MeshLab CSG

            MeshLab中提供了網格的布爾運算功能,源碼在filter_csg中。程序界面如下圖所示:

            wps_clip_image-25211

            Figure 2. CSG Operation in MeshLab

            下圖所示為兩個網格球的公共部分Intersection的結果:

            wps_clip_image-31437

            Figure 3. Intersection between sphere meshes

            由上圖可以看出,經過布爾運算后,網格變密了。

            wps_clip_image-5546

            Figure 4. Union between sphere meshes

            上圖所示為兩個網格球的合并union結果。合并后的網格也變密了。

            wps_clip_image-19657

            Figure 5. Difference between sphere meshes

            3.Cork 

            Cork是一個小巧的用于網格布爾運算的開源庫(LGPL),可以從如下地址下載:

            https://github.com/gilbo/cork

            下面使用cork編譯出來的程序來測試下前面兩個球的網格。在Windows中可以編譯一個測試的應用程序,可以輸入命令來測試效果:

            wps_clip_image-14008

            Figure 6. Cork help info

            將測試文件ballA.off和ballB.off復制到編譯出來的程序wincork相同的文件夾中,分別輸入以下命令來得到相應的布爾運算結果:

            F:\Mesh\cork\win\wincork\>wincork -union balla.off ballb.off union.off
            F:\Mesh\cork\win\wincork\>wincork -diff balla.off ballb.off diff.off
            F:\Mesh\cork\win\wincork\>wincork -isct balla.off ballb.off isct.off

            然后將生成的union.off、diff.off和isct.off在MeshLab中打開如下圖所示:

            wps_clip_image-6071

            Figure 7. Union between two sphere meshes

            wps_clip_image-29249

            Figure 8. Difference between two sphere meshes

            wps_clip_image-7233

            Figure 9. Intersection between two sphere meshes

            從上面結果可以看出cork庫得到的結果網格效果好,沒有加密。

            4. Conclusion

            基于網格的布爾運算也是三維建模中一個基本功能,一些開源庫提供了對網格進行布爾運算的支持。如MeshLab, Cork, CGAL等。

            本文通過在MeshLab和Cork中對兩個球的網格進行布爾運算,對比運算的結果,發現使用Cork得到的網格沒有加密,數據量會小一些。

            由于OpenCASCADE目前的版本不支持基于網格的布爾運算,在其官網上提供了一個功能請求:https://tracker.dev.opencascade.org/view.php?id=29776

            wps_clip_image-7484


            為了方便大家在移動端也能看到我的博文和討論交流,現已注冊微信公眾號,歡迎大家掃描下方二維碼關注。
            Shing Liu(eryar@163.com)
            国产亚洲精午夜久久久久久| 777米奇久久最新地址| 亚洲а∨天堂久久精品9966| 开心久久婷婷综合中文字幕| 影音先锋女人AV鲁色资源网久久| 久久精品国产亚洲77777| 国产精品成人久久久久三级午夜电影| 欧美伊人久久大香线蕉综合| 久久精品亚洲一区二区三区浴池 | 伊人久久大香线蕉无码麻豆| 亚洲国产精品久久久天堂| 国产69精品久久久久9999| 久久天天躁狠狠躁夜夜avapp| 久久天天躁狠狠躁夜夜不卡| 久久亚洲日韩精品一区二区三区| 久久毛片免费看一区二区三区| 成人妇女免费播放久久久| 久久久久亚洲精品日久生情| 欧美日韩精品久久久免费观看| 久久精品一区二区三区不卡| 77777亚洲午夜久久多喷| 亚洲国产精品成人久久蜜臀| 久久国产午夜精品一区二区三区| 久久精品国产99久久无毒不卡 | 久久婷婷五月综合97色直播| 品成人欧美大片久久国产欧美| 99久久精品国产麻豆| 国内精品久久久久伊人av| 中文字幕久久亚洲一区| 久久久久亚洲精品天堂久久久久久 | 国産精品久久久久久久| 久久97精品久久久久久久不卡| 久久综合香蕉国产蜜臀AV| 午夜精品久久久久久毛片| 午夜精品久久久久久99热| 亚洲国产另类久久久精品| 久久精品国产第一区二区三区 | 伊人久久大香线蕉综合热线| 中文字幕久久亚洲一区| 一本一本久久aa综合精品| 亚洲国产另类久久久精品 |