• <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 閱讀(2946) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

            OpenCASCADE Face Normals

            eryar@163.com

             

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

            Key Words. Face, Surface, Normals

            1. Introduction

            曲面上點(diǎn)的法向量對(duì)于三維顯示程序來說是一個(gè)重要的數(shù)據(jù),他的正確與否直接影響曲面對(duì)光照的反應(yīng)進(jìn)而影響顯示效果。如下圖所示為同一個(gè)球的三維顯示,不同的法向得到的顯示效果是不同的。

             

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

            Topology and Geometry in OpenCascade-Face

            Surface Normal Vector in OpenCascade

            Surface Normal Averaging

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

            2. Face Normals

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

            命令用法如下:

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

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

            axo

            pcylinder c 10 20

            normals c

            fit

            首先使用命令axo打開一個(gè)二維軸測(cè)視圖。

            再使用命令pcylinder創(chuàng)建一個(gè)半徑10,高度20的圓柱體;

            使用命令normals來用默認(rèn)參數(shù)顯示出圓柱的法向;

            使用fit命令來縮放二維軸測(cè)視圖。

             

            其中紅色表示法線方向與顯示的方向一致,藍(lán)色表示法向與顯示的方向相反。由于這個(gè)二維軸測(cè)視圖不能任意旋轉(zhuǎn)、縮放,沒有三維視圖方便,所以OpenCASCADE又提供了一個(gè)在三維視圖中顯示曲面法向的命令vnormals,相關(guān)參數(shù)設(shè)置與normals一致。所以下面主要在三維視圖中來對(duì)這幾個(gè)參數(shù)的用法進(jìn)行說明。其中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]

            當(dāng)使用默認(rèn)參數(shù)來顯示上面的圓柱體的法向時(shí),直接輸入命令:vnormals c

             

            因?yàn)樵谌S視圖中使用箭頭來表示法向的方向,所以不用顏色來區(qū)分方向的正反。由上圖可見,底面的法向正確的應(yīng)該要反向。默認(rèn)參數(shù)只顯示的TOPO面中的幾何面的法向,沒有考慮TOPO面的方向。通過參數(shù)-oriented使命令顯示法向時(shí)考慮TOPO面的方向,即最終顯示用的法向方向。命令為:

            vnormals c -oriented

             

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

             

            對(duì)于顯示數(shù)據(jù)即三角網(wǎng)格頂點(diǎn)的法向可以通過參數(shù)-useMesh來指定。這個(gè)用法可以方便地檢查網(wǎng)格數(shù)據(jù)的頂點(diǎn)及頂點(diǎn)法向。

            顯示一個(gè)螺旋槳模型面的法向:

            還可以通過設(shè)置參數(shù)on-length來設(shè)置法向的顯示與不顯示,及法向的顯示長(zhǎng)度,這里就不細(xì)說了,讀者可以自己測(cè)試。

            3. Conclusion

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

            來顯示網(wǎng)格中的法向功能,對(duì)于模型的顯示網(wǎng)格數(shù)據(jù)中的頂點(diǎn)法向的檢查很有幫助。通過查找相關(guān)命令實(shí)現(xiàn)的源碼,可以方便地找到相關(guān)功能實(shí)現(xiàn)的源碼,這也是開源的一個(gè)優(yōu)勢(shì)。


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

            久久精品国产影库免费看 | 91久久精品电影| 国产真实乱对白精彩久久| 久久久久亚洲AV成人网人人软件 | 91久久精品91久久性色| 国产一区二区精品久久岳| 伊人久久大香线蕉av不卡| 91精品免费久久久久久久久| 久久无码高潮喷水| 激情综合色综合久久综合| 中文字幕日本人妻久久久免费| 国产精品狼人久久久久影院| 久久影院综合精品| 久久中文精品无码中文字幕 | 青青草原综合久久大伊人导航| 久久久久亚洲av综合波多野结衣| 久久免费精品一区二区| 久久亚洲精品无码aⅴ大香| 久久久久久av无码免费看大片| 久久久久成人精品无码中文字幕| 亚洲欧美精品一区久久中文字幕| 久久免费国产精品一区二区| 久久综合给合久久狠狠狠97色| 伊人久久成人成综合网222| 国产午夜福利精品久久| 久久99国产亚洲高清观看首页| 久久午夜伦鲁片免费无码| 久久精品国产2020| 久久无码国产专区精品| 久久人人青草97香蕉| 精品国产乱码久久久久软件| 看全色黄大色大片免费久久久 | 国产精品久久一区二区三区| 97精品国产97久久久久久免费 | 久久精品无码一区二区三区免费 | 一级A毛片免费观看久久精品| 国产精品亚洲综合专区片高清久久久| 97精品国产91久久久久久| 精品蜜臀久久久久99网站| 久久青草国产精品一区| 国产日韩久久久精品影院首页|