OSG基本幾何體的透明效果和網格模型

2021-06-20 02:47:25 字數 1136 閱讀 6936

使用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 是純虛類,無法...