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

            Posted on 2018-10-17 22:02 eryar 閱讀(2916) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            OpenCASCADE Face Normals

            eryar@163.com

             

            Abstract. 要顯示一個逼真的三維模型,其頂點坐標、頂點法向、紋理坐標這三個信息必不可少。本文主要介紹如何在OpenCASCADEDraw中顯示出曲面的法向量,通過使用相關命令,來方便地對曲面的法向進行檢查。

            Key Words. Face, Surface, Normals

            1. Introduction

            曲面上點的法向量對于三維顯示程序來說是一個重要的數據,他的正確與否直接影響曲面對光照的反應進而影響顯示效果。如下圖所示為同一個球的三維顯示,不同的法向得到的顯示效果是不同的。

             

            對于OpenGL來說,提供了接口glNormal()來設置法向量。關于OpenCASCADE中更多曲面法向量計算及相關信息,可以參考原來寫的blog:

            Topology and Geometry in OpenCascade-Face

            Surface Normal Vector in OpenCascade

            Surface Normal Averaging

            從這些文章中可以看出,與一般顯示引擎不同的是,OpenCASCADE對于通過造型算法構造的模型,由于其內在的精確參數方程的表示,可以精確計算出曲面上任意點處的法向量。而不用像一般的顯示引擎那樣,通過計算平均法向類似的算法來處理頂點法向。

            2. Face Normals

            OpenCASCADE早期版本的Draw Test Harness中提供了normals命令,可以將曲面的法向顯示出來。

            命令用法如下:

            normals shape [Length {10}] [-NbAlongU {1}] [-NbAlongV {1}] [-UseMesh] [-print], display normals

            通過相應的參數可以設置法線箭頭的長度、沿曲面參數UV方向顯示法向的數量、是否顯示網格的法向及是否打印在Draw的命令窗口中。下面通過顯示一個圓柱體各個面的法向來說明命令的用法。命令列出如下:

            axo

            pcylinder c 10 20

            normals c

            fit

            首先使用命令axo打開一個二維軸測視圖。

            再使用命令pcylinder創建一個半徑10,高度20的圓柱體;

            使用命令normals來用默認參數顯示出圓柱的法向;

            使用fit命令來縮放二維軸測視圖。

             

            其中紅色表示法線方向與顯示的方向一致,藍色表示法向與顯示的方向相反。由于這個二維軸測視圖不能任意旋轉、縮放,沒有三維視圖方便,所以OpenCASCADE又提供了一個在三維視圖中顯示曲面法向的命令vnormals,相關參數設置與normals一致。所以下面主要在三維視圖中來對這幾個參數的用法進行說明。其中vnormals命令用法如下:

            Displays/Hides normals calculated on shape geometry or retrieved from triangulation

            vnormals Shape [{on|off}=on] [-length {10}] [-nbAlongU {1}] [-nbAlongV {1}] [-nbAlong {1}]

                            :        [-useMesh] [-oriented {0}1}=0]

            當使用默認參數來顯示上面的圓柱體的法向時,直接輸入命令:vnormals c

             

            因為在三維視圖中使用箭頭來表示法向的方向,所以不用顏色來區分方向的正反。由上圖可見,底面的法向正確的應該要反向。默認參數只顯示的TOPO面中的幾何面的法向,沒有考慮TOPO面的方向。通過參數-oriented使命令顯示法向時考慮TOPO面的方向,即最終顯示用的法向方向。命令為:

            vnormals c -oriented

             

            上面每個面上只顯示了一個法向,對于圓柱面很明顯一個法向不夠。可以通過參數-nbAlong等來設置曲面在參數UV方向法向的個數。

             

            對于顯示數據即三角網格頂點的法向可以通過參數-useMesh來指定。這個用法可以方便地檢查網格數據的頂點及頂點法向。

            顯示一個螺旋槳模型面的法向:

            還可以通過設置參數on-length來設置法向的顯示與不顯示,及法向的顯示長度,這里就不細說了,讀者可以自己測試。

            3. Conclusion

            綜上所述,OpenCASCADEDraw Test Harness中封裝了顯示面法向的命令normalsvnormals。通過使用這些命令可以方便地來檢查面的法向是否正確。尤其是參數-useMesh

            來顯示網格中的法向功能,對于模型的顯示網格數據中的頂點法向的檢查很有幫助。通過查找相關命令實現的源碼,可以方便地找到相關功能實現的源碼,這也是開源的一個優勢。


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

            久久青青草原精品影院| 国产69精品久久久久APP下载| 久久99精品久久久久久动态图 | 99久久国产热无码精品免费| 久久精品国产91久久综合麻豆自制| 国产精品青草久久久久福利99 | 精品久久久久久久中文字幕| 欧美久久久久久午夜精品| 97久久国产综合精品女不卡| 超级碰久久免费公开视频| 18岁日韩内射颜射午夜久久成人| 女人香蕉久久**毛片精品| 亚洲AV成人无码久久精品老人| 久久久国产精华液| 91精品国产乱码久久久久久| 2021国内精品久久久久久影院| 国产精品久久国产精品99盘 | 国产亚洲美女精品久久久| 蜜臀av性久久久久蜜臀aⅴ麻豆| 精品国产婷婷久久久| 亚洲国产精品婷婷久久| 欧美噜噜久久久XXX| 久久精品国产亚洲AV蜜臀色欲 | 久久久亚洲AV波多野结衣| 国产毛片久久久久久国产毛片| 久久狠狠高潮亚洲精品| 亚洲AV无码1区2区久久| 亚洲AV无码久久寂寞少妇| 伊人久久大香线蕉亚洲| 久久人人添人人爽添人人片牛牛 | 久久WWW免费人成—看片| 丰满少妇人妻久久久久久4| 欧美精品一本久久男人的天堂| 精品熟女少妇av免费久久| 久久天堂AV综合合色蜜桃网 | 成人国内精品久久久久影院VR| 高清免费久久午夜精品| 久久精品国产秦先生| 99久久婷婷国产一区二区| 久久综合狠狠综合久久97色| 免费一级做a爰片久久毛片潮|