新增節點
我們通過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也是把取代結點作為最後乙個父親。
隱藏和顯示模型的兩種方式
1、通過設定osg::node的mask實現
隱藏模式,只是將模型隱藏,模型仍在渲染中,損耗並未減少。
可以通過:node->setnodemask(0x0) 設定隱藏
可以通過:node->setnodemask(1) 設定顯示
2、通過osg::switch實現
osg::ref_ptrsw = new osg::switch();
sw->setvalue(i, true/false);//設定第i個節點的顯示或隱藏
os**iewer::viewer viewer;
osg::ref_ptrroot = new osg::group();
osg::ref_ptrnode = osgdb::readnodefile("robot.osg");
osg::ref_ptrsw = new osg::switch();
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,並推送到所有節點...