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

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軟件的開源開發(fā)庫openNURBS中用于三維模型數(shù)據(jù)交換的一種格式,被許多軟件開發(fā)團隊及應(yīng)用程序用來進行三維模型的數(shù)據(jù)交換。因為openNURBS開源的原因,3DM格式也是一種開放的文件格式了。

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

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

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

2.Display Model in Wire-Frame

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

wps_clip_image-7442

Figure 2.1 Uniform sampling on a curve

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

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結(jié)構(gòu)中的邊,并將其均勻采樣取點,取可得到曲線的大概輪廓了。顯示效果如下圖所示:

wps_clip_image-815

Figure 2.2 Display Basketball Goal Model Edges

wps_clip_image-4971

Figure 2.3 Display Bookshelf Model Edges

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

3.Next...

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

wps_clip_image-20656

Figure 3.1 Display Basketball Goal Model Faces

wps_clip_image-28130

Figure 3.2 Display Bookshelf Model Faces

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

4.Get Involved

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

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

關(guān)于3DM格式的更多模型可以從網(wǎng)上獲取,本文中的兩個模型來自如下網(wǎng)站:

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

5. Conclusion

通過使用OpenNURBS庫來讀取3dm文件中的模型數(shù)據(jù),并對其進行可視化。并對顯示中常見有模式:線框、渲染模式的實現(xiàn)方法進行介紹。通過實現(xiàn)3DM Viewer也是為了進一步學(xué)習(xí)如何將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>
            99re视频这里只有精品| 伊人成人网在线看| 中文亚洲视频在线| 亚洲二区三区四区| 小黄鸭精品aⅴ导航网站入口| 亚洲国产成人91精品| 国产欧美日韩一级| 国产精品毛片va一区二区三区 | 极品尤物一区二区三区| 国产精品啊啊啊| 国产精品久久久久久亚洲调教| 欧美精品激情| 欧美日韩三级视频| 国产精品v日韩精品v欧美精品网站 | 先锋影院在线亚洲| 一本色道久久综合亚洲精品按摩| 亚洲国产精品视频一区| 亚洲精品视频在线看| 亚洲精选一区二区| 国产精品一二三四区| 国产欧美一区二区在线观看| 国产一区二区日韩精品| 激情久久综艺| 亚洲人成毛片在线播放| 在线成人免费视频| 99视频一区| 欧美在线一级视频| 欧美高清一区| 一区二区三区四区五区视频 | 国产精品毛片在线看| 国产精品视频九色porn| 国产一区二区毛片| 亚洲精品之草原avav久久| 亚洲自拍偷拍色片视频| 欧美自拍偷拍午夜视频| 免费成人高清| 91久久精品国产91久久性色| 亚洲图片在区色| 久久久久久久综合色一本| 欧美福利一区二区三区| 国产精品免费看久久久香蕉| 精品99一区二区| 亚洲午夜日本在线观看| 欧美一区二区三区免费看| 久久久久久日产精品| 欧美日韩一区二区三区视频 | 欧美久久电影| 国产亚洲精品综合一区91| 亚洲精品久久久久久久久久久| 午夜精品一区二区在线观看| 久久免费黄色| 亚洲自拍偷拍网址| 欧美激情 亚洲a∨综合| 国产一区二区三区高清在线观看 | 亚洲一二三区在线观看| 嫩草国产精品入口| 国产一区二区日韩精品| 亚洲欧美卡通另类91av| 久久久欧美一区二区| 亚洲私拍自拍| 欧美日韩视频在线一区二区观看视频| 国产一区91精品张津瑜| 9久re热视频在线精品| 毛片av中文字幕一区二区| 欧美一级淫片播放口| 亚洲电影免费观看高清| 久久久久久69| 欧美精品一区三区| 亚洲激情社区| 麻豆九一精品爱看视频在线观看免费| 亚洲一级在线| 久久只有精品| 一区二区在线观看视频| 欧美在线www| 亚洲一区视频在线观看视频| 欧美性视频网站| 99精品视频一区二区三区| 亚洲成色www8888| 久久精品91| 国产一区二区按摩在线观看| 欧美一二三视频| 亚洲欧美国产三级| 国产午夜精品理论片a级探花| 亚洲你懂的在线视频| 一区二区三区精品视频| 欧美精品在线观看播放| 一本色道久久| 中文在线一区| 国产欧美精品在线| 久久久亚洲高清| 久久在线免费观看| 亚洲一区二区三区精品在线| 欧美在线观看一区二区三区| 亚洲精品免费在线播放| 亚洲在线第一页| 亚洲精品日韩综合观看成人91| 亚洲午夜一区二区三区| 亚洲国产精品传媒在线观看| 亚洲视频视频在线| 亚洲高清在线观看一区| 亚洲影视在线播放| 亚洲精品国产视频| 欧美在线视频a| 一区二区三区欧美在线| 久久精品综合一区| 性欧美办公室18xxxxhd| 欧美激情综合色综合啪啪| 久久久久久亚洲精品杨幂换脸| 欧美日韩精品| 亚洲国产精品毛片| 激情成人综合| 欧美一级黄色录像| 亚洲欧美日韩国产中文| 欧美精品免费在线观看| 欧美www视频在线观看| 国产麻豆精品theporn| 99re66热这里只有精品4| 亚洲激情成人网| 久久久免费av| 欧美在线你懂的| 国产精品网站在线观看| 一本色道久久加勒比精品| 亚洲人成在线观看一区二区| 久久精品一区蜜桃臀影院| 欧美一区二区三区在| 欧美伦理a级免费电影| 亚洲国产精品va在线看黑人动漫| 黄网站免费久久| 欧美在线观看视频在线| 一区精品在线播放| 久久精品亚洲精品国产欧美kt∨| 亚洲欧美资源在线| 国产精品伦子伦免费视频| 99亚洲视频| 亚洲欧美激情在线视频| 欧美性猛交99久久久久99按摩| 亚洲精品一区久久久久久| 一区二区三区**美女毛片 | 欧美日韩亚洲成人| 亚洲精品免费电影| 日韩一区二区精品| 欧美日韩国产首页| 亚洲午夜久久久久久久久电影院 | 亚洲伊人色欲综合网| 亚洲男同1069视频| 国产欧美丝祙| 久久九九全国免费精品观看| 你懂的亚洲视频| 亚洲精品网址在线观看| 欧美日韩视频在线一区二区 | 亚洲精品视频一区二区三区| 亚洲美女少妇无套啪啪呻吟| 欧美日韩成人一区二区| 亚洲视频在线观看三级| 欧美中文字幕| 永久久久久久| 欧美日韩国产精品一区| 亚洲自拍三区| 欧美国产日韩亚洲一区| 亚洲一区二区三区777| 国产午夜精品理论片a级探花 | 国产伦一区二区三区色一情| 久久精品日韩| 99成人精品| 久久最新视频| 在线一区二区三区做爰视频网站| 国产精品你懂的在线| 久久久久久穴| 日韩午夜一区| 久久婷婷综合激情| 一区二区三区日韩欧美精品| 国产一区二区电影在线观看| 欧美黄色小视频| 欧美一级黄色网| 99在线精品观看| 欧美不卡视频| 久久国产视频网| 一本一本久久a久久精品牛牛影视| 国产亚洲精品bt天堂精选| 欧美精品一区二区蜜臀亚洲| 午夜在线播放视频欧美| 亚洲精品激情| 欧美a级在线| 欧美伊人久久久久久午夜久久久久 | 亚洲高清网站| 国产精品xvideos88| 免费成人你懂的| 欧美一级久久久久久久大片| 亚洲精品视频中文字幕| 男人插女人欧美| 欧美在线观看网址综合| 一区二区91| 亚洲黄色小视频| 狠狠色噜噜狠狠色综合久| 乱中年女人伦av一区二区| 亚洲欧美日韩一区二区三区在线观看 | 亚洲日本欧美天堂| 国产在线精品一区二区夜色| 国产精品高潮久久| 欧美日韩免费在线观看|