OSG簡介與最簡單的執行個體

來源:互聯網
上載者:User

OSG簡介

OpenSceneGraph(簡稱OSG)使用OpenGL技術開發,是一套基於C++平台的應用程式介面(API)。OpenGL技術為圖形元素(多邊形、線、點等)和狀態(光照、材質、陰影等)的編程提供了標準化的介面。而OSG開發的主要意義在於,將3D情境定義為空白間中一系列連續的對象,以進行三維世界的管理。正是由於情境及其參數定義的特點,通過狀態轉化、繪圖管道和自定製等操作,OSG還可以用於最佳化渲染效能。   可以運行OSG的平台需要具備OpenGL的支援能力,以及C++的編譯環境,支援OSG的系統包括Solaris,IRIX,Windows,Mac OSX,HP-UX,Sony Platystation等等,不過XBox除外。     

OSG是一個開源系統,主要包括情境圖形核心,Producer庫,OpenThread庫以及使用者外掛程式四個部分。自Robert Osfield主持這個項目以來,OSG就作為一個開放原始碼的圖形開發工程開始在全球運作了。   

目前,部分高效能的軟體已經使用了OSG來渲染複雜的2D和3D情境。雖然大部分基於OSG的軟體更適用於可視化設計和工業模擬,但是在使用3D圖形的每個領域,都已經出現了OSG的身影。這其中包括了地理資訊系統(GIS),電腦輔助設計(CAD),建模和數字內容創作(DCC),資料庫開發,虛擬現實,動畫,遊戲和娛樂業。

 

簡單的執行個體匯入一個模型

 

#include <osgViewer/Viewer>  #include <osgDB/ReadFile>  #include <osg/DrawPixels>  #include <osg/Geode>  #include <osg/MatrixTransform>  #include <osgViewer/ViewerEventHandlers>  #include <osgGA/StateSetManipulator>  int main(){osgViewer::Viewer viewer;  //添加狀態事件  viewer.addEventHandler( new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()) );  //視窗大小變化事件  viewer.addEventHandler(new osgViewer::WindowSizeHandler);  //添加一些常用狀態設定  viewer.addEventHandler(new osgViewer::StatsHandler);  osg::Group *root = new osg::Group();  osg::ref_ptr < osg::Node> b25 = osgDB::readNodeFile("F://Models//B25//B25.IVE") ;  // 對模型進行變換  osg::ref_ptr < osg::MatrixTransform> scale = new osg::MatrixTransform ;  scale ->setMatrix(osg::Matrix::rotate(osg::DegreesToRadians(45.0), 1, 0, 0)*osg::Matrix::scale(0.5, 0.5, 0.5)*osg::Matrix::translate(4, 0, -2)) ;  scale ->addChild(b25.get()) ;  root->addChild(scale.get());  viewer.setSceneData(root);  viewer.realize();   return viewer.run();  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.