青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

eryar

PipeCAD - Plant Piping Design Software.
PlantAssistant - Translate AVEVA RVM/SP3D VUE to glTF, STEP, etc.
posts - 606, comments - 590, trackbacks - 0, articles - 0

OpenNURBS 3DM Viewer

Posted on 2014-11-04 21:34 eryar 閱讀(5085) 評論(0)  編輯 收藏 引用 所屬分類: 2.OpenCASCADE

OpenNURBS 3DM Viewer

eryar@163.com

Abstract. The openNURBS Toolkit consists of C++ source code for a library that will read and write a openNURBS 3D model file(.3dm). More than 400 software development teams and applications including Rhinoceros, exchange 3-D models using the openNURBS (.3dm) file format. But there is no a simple viwer for 3dm on PC except Rhinoceros. So I want to develop a 3DM viewer based on OpenSceneGraph to visualize the 3DM file.

Key Words. OpenNURBS, 3DM Viewer, OpenSceneGraph

1. Introduction

3DM 文件格式是Rhinoceros軟件的開源開發庫openNURBS中用于三維模型數據交換的一種格式,被許多軟件開發團隊及應用程序用來進行三維模型的數據交換。因為openNURBS開源的原因,3DM格式也是一種開放的文件格式了。

3DM文件中用于三維模型的信息完整,包括幾何、拓樸信息,光照等等,利用這些數據可以渲染出效果逼真的三維模型。

但是搜索了一下,能查看3DM模型的軟件除了Rhinoceros以外,再就是Android版本或iOS程序,沒有電腦Windows/Linux上運行的簡單的查看3DM模型的簡單瀏覽程序,所以決定應用OpenSceneGraph開發一個簡單的瀏覽程序,來實現3DM文件的模型查看功能。另外也可學習一下,如何對Brep表示的模型進行可視化。

本文主要說明如何實現以線框模式Wire-Frame、渲染模式Shaded顯示三維模型。

2.Display Model in Wire-Frame

3DM中的三維模型是基于邊界表示法的Brep,所以要顯示線框模式的模型可以將邊界表示的模型的所有的邊Edge離散成點后進行顯示即可。顯示邊的一種最簡單的方法就是對邊的幾何數據——曲線——進行均勻取點,然后連成線即可。但是這并不是高效的方式,會造成如下圖所示的問題:

wps_clip_image-7442

Figure 2.1 Uniform sampling on a curve

如上圖所示,均勻取點的方式會在曲線比較平直的區域采樣到比實際需要更多的點,而在曲率較大的區域采樣到比實際需要更少的點。為了提高顯示速度,應該用盡可能少的點來顯示更逼真的曲線,這就需要一種細分算法:Adaptive Subdivision算法。為了簡單起見,在3DM Viewer中采用了均勻采樣的方式,顯然這種方式不是很高效,但是可以用來簡單驗證Brep中邊的數據。對邊均勻采樣取點的代碼示例如下:

osg::Node* RhinoReader::BuildEdge(const ON_Brep* theBrep)
{
    osg::ref_ptr
<osg::Geode> aGeode = new osg::Geode();

    
for (int i = 0; i < theBrep->m_E.Count(); ++i)
    {
        osg::ref_ptr
<osg::Geometry> aGeometry = new osg::Geometry();
        osg::ref_ptr
<osg::Vec3Array> aVertices = new osg::Vec3Array();

        ON_BrepEdge
* anEdge = theBrep->Edge(i);

        
double t0 = 0.0;
        
double t1 = 0.0;
        
double d = 0.0;

        anEdge
->GetDomain(&t0, &t1);

        d 
= (t1 - t0) / 5.0;

        
for (double t = t0; (t - t1) < TOLERANCE_EDGE; t += d)
        {
            ON_3dPoint aPoint 
= anEdge->PointAt(t);

            aVertices
->push_back(osg::Vec3(aPoint.x, aPoint.y, aPoint.z));
        }

        aGeometry
->setVertexArray(aVertices);
        aGeometry
->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP, 0, aVertices->size()));

        aGeode
->addDrawable(aGeometry);
    }

    
return aGeode.release();
}

由上述代碼可知,通過遍歷Brep結構中的邊,并將其均勻采樣取點,取可得到曲線的大概輪廓了。顯示效果如下圖所示:

wps_clip_image-815

Figure 2.2 Display Basketball Goal Model Edges

wps_clip_image-4971

Figure 2.3 Display Bookshelf Model Edges

由圖可知,顯示效果還不錯。這也是常見的三維顯示中的線框模式實現的方式。不過在采樣點的算法上還有優化空間。

3.Next...

下一步準備以渲染模式Shaded來顯示3DM模型,就需要對Face進行網格剖分。網格剖分的速度及質量直接影響面的渲染。網格剖分統一在NURBS曲面的參數空間,且需要注意曲面的外邊界及內邊界(即面的開孔的處理)。如下圖所示,先將面均勻采樣顯示效果如下圖所示:

wps_clip_image-20656

Figure 3.1 Display Basketball Goal Model Faces

wps_clip_image-28130

Figure 3.2 Display Bookshelf Model Faces

為了顯示渲染模式的曲面,還需要在此基礎上對曲面的參數空間進行剖分。為了曲面光照效果,需要正確計算出曲面上點的法向,這是下一步的工作了。

4.Get Involved

在網上沒有搜到合適的3DM Viewer,只有自己來做了,做的過程也是個學習的過程。而且在Windows/Linux上一個輕量級的3DM Viewer還是有些需求的,所以在Github上創建了一個項目,感興趣的讀者也可以參與進來,或者貢獻代碼,或者給些意見。項目地址如下:

https://github.com/eryar/3DMViewer

關于3DM格式的更多模型可以從網上獲取,本文中的兩個模型來自如下網站:

http://ad-3d.com/free-rhino-3d-nurbs-models/

5. Conclusion

通過使用OpenNURBS庫來讀取3dm文件中的模型數據,并對其進行可視化。并對顯示中常見有模式:線框、渲染模式的實現方法進行介紹。通過實現3DM Viewer也是為了進一步學習如何將Brep表示的模型可視化。

6. References

1. Free 3DM models: http://www.ad-3d.com/Free Rhino3D models/

2. Kelly Dempski, Focus on Curves and Surfaces, Premier Press, 2003

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美日韩国产综合新一区| 欧美77777| 亚洲黄色免费电影| 欧美国产日韩一区二区| 亚洲手机在线| 免费观看久久久4p| 欧美在线免费一级片| 亚洲精品视频免费观看| 国产专区综合网| 欧美婷婷六月丁香综合色| 99视频日韩| 欧美成人亚洲成人| 久久精品国产99国产精品| 夜夜嗨av一区二区三区免费区| 国产综合视频在线观看| 亚洲欧洲三级电影| 依依成人综合视频| 国产日韩专区在线| 国产精品香蕉在线观看| 欧美日在线观看| 国产日韩欧美精品一区| 亚洲激情中文1区| 性做久久久久久久久| 亚洲一区二区三区精品视频| 亚洲国产日韩综合一区| 亚洲一区二区三区高清不卡| 久久综合色一综合色88| 蜜臀va亚洲va欧美va天堂| 99精品视频免费全部在线| 久久乐国产精品| 久久综合给合久久狠狠色| 久久精品国产久精国产一老狼| 性久久久久久久久久久久| 性欧美暴力猛交69hd| 欧美人与禽性xxxxx杂性| 欧美日韩国产一级| 亚洲国产合集| 夜夜爽www精品| 久久亚洲私人国产精品va媚药| 久久久久久久综合色一本| 久久久国产一区二区| 久久在线免费视频| 欧美激情精品久久久| 久久精品国产99精品国产亚洲性色| 欧美福利视频在线| 欧美在线高清| 欧美福利专区| 一区在线免费观看| 99天天综合性| 亚洲第一搞黄网站| 亚洲精品一二三区| 久久综合网色—综合色88| 亚洲综合色激情五月| 久久久一区二区| 国产日产亚洲精品系列| 亚洲国产裸拍裸体视频在线观看乱了中文| 香蕉国产精品偷在线观看不卡| 亚洲精品在线电影| 欧美一区二区三区电影在线观看| 久久综合九色99| 在线观看欧美视频| 欧美成人在线影院| 浪潮色综合久久天堂| 亚洲国产一区二区精品专区| 欧美顶级少妇做爰| 欧美精品91| 永久555www成人免费| 久久一区二区三区四区| 久久久久久久波多野高潮日日 | 亚洲五月六月| 一区二区三区www| 久久精品人人做人人综合| 欧美日韩高清在线| 亚洲调教视频在线观看| 欧美成人一品| 欧美不卡视频| 精品成人在线观看| 欧美激情一区在线| 欧美日韩国产成人高清视频| 亚洲一区日本| 亚洲人成网站在线观看播放| 亚洲欧洲99久久| 欧美日韩亚洲国产一区| 在线精品国产成人综合| 亚洲欧美电影院| 亚洲电影中文字幕| 欧美日韩亚洲一区三区| 久久久97精品| 欧美精品1区| 久久―日本道色综合久久| 欧美黑人在线观看| 欧美一区成人| 亚洲桃花岛网站| 好吊一区二区三区| 欧美一区久久| 免费成人高清| 亚洲精品美女91| 亚洲曰本av电影| 国产精品视频网址| 亚洲人www| 亚洲一区二区欧美| 精品盗摄一区二区三区| 亚洲精品国产系列| 国产综合视频| 亚洲欧美亚洲| 在线一区二区三区四区| 91久久精品美女高潮| 免费观看在线综合| 久久激情视频免费观看| 欧美日韩中字| 亚洲激情一区二区| 激情婷婷欧美| 亚洲欧美日产图| 亚洲性色视频| 欧美精品偷拍| 亚洲福利视频二区| 伊人久久噜噜噜躁狠狠躁 | 久久另类ts人妖一区二区| 欧美日韩直播| 亚洲三级免费观看| 亚洲国产成人porn| 久久久久久久成人| 久久久久久一区二区三区| 国产精品日韩欧美一区二区三区| 亚洲全黄一级网站| 99国产一区二区三精品乱码| 亚洲视频在线观看一区| 日韩一级黄色av| 欧美91视频| 欧美福利视频| 91久久精品网| 欧美国产亚洲精品久久久8v| 亚洲国产精品成人久久综合一区| 欧美日韩国产电影| 91久久精品国产91性色| 99视频一区| 国产精品夫妻自拍| 欧美成人69| 国产精品wwwwww| 一区二区三区国产精品| 亚洲午夜电影网| 国产精品一区三区| 亚洲精品国产欧美| 日韩午夜高潮| 欧美性色aⅴ视频一区日韩精品| 亚洲伦理在线观看| 亚洲免费在线观看| 国产精品亚发布| 久久成人精品视频| 欧美激情精品久久久久| 日韩亚洲精品在线| 国产精品另类一区| 亚洲全部视频| 午夜亚洲性色视频| 国外成人在线视频网站| 免费观看不卡av| 亚洲精品日韩在线观看| 亚洲一区二区三区久久| 国产无一区二区| 你懂的国产精品永久在线| 日韩视频精品在线观看| 亚洲美女尤物影院| 久久久99爱| 91久久黄色| 欧美中文字幕不卡| 国产一区清纯| 性做久久久久久免费观看欧美| 国产欧美日韩三级| 免费成人毛片| 亚洲一区二区三区涩| 欧美成年人视频网站欧美| 亚洲一区二区三区精品在线观看| 国内久久婷婷综合| 国产精品久久久久9999高清| 久久免费高清视频| 久久视频国产精品免费视频在线| 黄色精品网站| 国产精品高潮呻吟久久| 老鸭窝亚洲一区二区三区| 一区二区毛片| 亚洲福利视频网站| 久久免费观看视频| 亚洲欧美欧美一区二区三区| 亚洲国产精品久久久久秋霞不卡 | 国产精品久久久久久五月尺| 久久久久在线| 亚洲女人小视频在线观看| 亚洲国产老妈| 免费不卡在线观看av| 羞羞视频在线观看欧美| 99精品欧美一区| 亚洲国产欧美在线| 韩国欧美一区| 国产视频一区在线观看一区免费 | 亚洲国产成人久久综合| 国产一区二区看久久| 久久一区中文字幕| 亚洲欧美制服另类日韩| 亚洲三级网站| 亚洲成在人线av|