OSG 場景節點新增,刪除,隱藏 ,開關

2021-06-19 07:04:01 字數 2362 閱讀 3873

新增節點

我們通過osg::ref_ptrroot = new osg::group();申請場景根節點

通過osg::ref_ptrnode = new osg::node();可以申請多個節點,從而達到在場景中新增多個場景

如:osg::ref_ptrroot = new osg::group();

osg::ref_ptrnode = osgdb::readnodefile("cow.osg");

root->addchild(osgdb::readnodefile("glider.osg"));

root->addchild(node.get());

刪除節點

因某種需要,現需要刪除某些節點。可以通過removechild刪除個別節點,也可以通過removechildren刪除多個節點,裡面的引數有些需要索引值

如:root->removechild(node1);

如果要刪除乙個節點,那麼該節點下的所有節點都會被刪除,如果乙個節點被加入到乙個組中兩次,那麼這兩次就分別存在,刪除一次還有另一次。

在記憶體映像中,如果乙個模型被讀取一次,而用了多次,那麼所占用的空間是不會改變的。

假設:osg::ref_ptr

型別結點

root,root

下加三個孩子

osg::ref_ptr

型別結點

node1

、node2

、node3,

程式會按加的順序記錄索引,此時

root

會記錄node1

、node2

、node3

分別為孩子0、

1、2,

node1

、node2

、node3

也都會記錄

root

為它們的父親0,

若:node1下還有一些孩子節點,即其為一樹, 

使用root->removechild(node1); ///

移除root

下的node1

結點,node1

的樹關係不會變 ,只是解除root與node1的父子關係

這時root會自動將noee2變為

root孩子0

,node3

變為root孩子1

。對於node1變為無父親節點。只要

沒有對node1

指標清零,這個節點的資料還是存在的,還可以再次利用。

若:定義型別

osg::ref_ptf

的transform

變化結點。

操作 root->replacechild(node1, transform) ///把node1節點換成transform節點,此時在root下

node2為0

孩子,node3為1

孩子,transform為2

孩子。

操作 tansform->addchild(node1); ///node1的父親0為

transform

,假設node1

還有其他父節點,那麼結果就是

tansform

是其最後乙個父親了。

經常使用這兩段**對場景根下的某個結點進行位置變換,所以,使用孩子取代函式replacechild

並不是對被取代結點和取代結點進行簡單的替換,而是每進行一次這樣的操作會把取代結點

transform

作為root

根節點的最後乙個孩子索引,被取代節點

node1

也是把取代結點作為最後乙個父親。

隱藏模型

隱藏模式,只是將模型隱藏,模型仍在渲染中,損耗並未減少。

可以通過:node->setnodemask(0x0) 設定隱藏

可以通過:node->setnodemask(1) 設定顯示

節點開關

在關閉節點時,這些節點占用的記憶體會被釋放掉

osgviewer::viewer viewer;

osg::ref_ptrroot = new osg::group();

osg::ref_ptrnode = osgdb::readnodefile("robot.osg");

osg::ref_ptrsw = new osg::switch();

root->addchild(osgdb::readnodefile("glider.osg"));

//開關節點

sw->addchild(node,false);   //false引數顯示關,可通過設定為ture顯示為開

root->addchild(sw);

viewer.setscenedata(root);

viewer.realize();

return viewer.run();

OSG 場景節點新增,刪除,隱藏 ,開關

新增節點 我們通過osg ref ptrroot new osg group 申請場景根節點 通過osg ref ptrnode new osg node 可以申請多個節點,從而達到在場景中新增多個場景 如 osg ref ptrroot new osg group osg ref ptrnode ...

osg 場景節點新增 刪除 隱藏

新增節點 我們通過osg ref ptrroot new osg group 申請場景根節點 通過osg ref ptrnode new osg node 可以申請多個節點,從而達到在場景中新增多個場景 如 osg ref ptrroot new osg group osg ref ptrnode ...

新增 刪除osd節點步驟

1 ceph osd tree 檢視目前cluster 狀態 df h mnt ceph vol1 確保node1掛載了rbd,在節點 node1上執行2 在節點node4上安裝ceph 並複製ceph.conf到其相應位置,同時在 etc hosts裡新增節點node4和相應ip,並推送到所有節點...