使用osg中自定義的基本幾何體,並設定其透明的效果和網格模型,以圓錐為例。
首先建立圓錐:
osg::ref_ptrgeode=new osg::geode;
//生成圓錐
m_pcone=new osg::cone;
m_pcone->setheight(30);
m_pcone->setradius(30);
osg::ref_ptrshap=new osg::shapedrawable(m_pcone);
//第四個引數0.25表示不透明度,0表示完全透明,1表示完全不透明
shap->setcolor(osg::vec4(0.4,0.8,0.4,0.25));
geode->adddrawable(shap);
接下來設定透明效果和網格模型:
//設定幾何體透明效果
osg::ref_ptrstateset=geode->getorcreatestateset();
stateset->setmode(gl_blend,osg::stateattribute::on);
stateset->setrenderinghint(osg::stateset::transparent_bin);
//設定網格模型
osg::ref_ptrpolymode=new osg::polygonmode(osg::polygonmode::front_and_back,osg::polygonmode::line);
stateset->setattribute(polymode);
然後就可以使用geode這個節點了。
需要注意的是 從這個例子中可以看出osg中各個節點的屬性設定是在與這個節點相關聯的osg::stateset物件中定義的,之前想設定線框模型時一直在osg::cone和osg::shapedrawable中尋找相關的函式,但是一直沒找到。這也加深了對osg中場景樹和渲染樹的理解。
還有一點需要注意的就是透明效果不能只在osg::shape的setcolor中設定不透明度,這樣好像也不能看到透明效果,還需要在
osg::stateset中設定相關的模式,這是由於opengl狀態機模型決定的,不要忘了這個地方的設定。
OSG學習 基本幾何體繪製示例
繪製並渲染幾何體主要有如下3大步驟 1.建立各種向量資料,如頂點 紋理座標 顏色和法線等。需要注意的是,新增頂點資料時主要按照逆時針順序新增,以確保背面剔除的正確。2.例項化乙個幾何體物件 osg geometry 設定頂點座標陣列 紋理座標陣列 顏色陣列 法線陣列 繫結方式及資料解析。3.加入葉節...
osg中幾何體繪製筆記(一)
1 複雜的場景都是由少數的基本圖元構成。我們可以通過構建簡單的圖元來實現複雜場景。2 osg中定義了純基類drawable作為幾何圖元的基類。從drawable派生出9個類,其中比較重要的為geometry和shapedrawable。geometry用來繪製幾何體,使用比較靈活,而shapedra...
osg建立乙個幾何體類
在osg中,需要加入場景中的圖形,都會加入場景圖形類gruop中,來管理。其中幾何體類為 geode geode類中,包含了渲染用的幾何資料,包括 drawable drawable 類是用於儲存幾何資料資訊的基類,geode 維護了 乙個 drawable 的列表。drawable 是純虛類,無法...