一、osg::Node類
類描述:osg::Node爲結點類,下有派生類無數,是OSG中最重要的類之一,也是最常用的類之一。
1、Node ()
Node (const Node &node, const CopyOp ©op=CopyOp::SHALLOW_COPY)
說明:構造函數,其中第二個重載函數是從已知的Node當中構建出新的Node,裏面含有兩個參數,第二個參數表示拷貝類型,默認是淺拷貝,可以設置爲深拷貝。對於Node有枚舉深拷貝值:DEEP_COPY_NODES表示深拷貝
2、virtual Object * cloneType () const
說明:返回該對象的一個拷貝,這是當在使用一個已有Node初始化時使用此函數方有用。
3、virtual Object * clone (const CopyOp ©op) const
說明:拷貝,參數代表拷貝類型。返回該Node的一個拷貝,拷貝類型。對於Node有枚舉值:DEEP_COPY_NODES,SHALLOW_COPY
4、virtual bool isSameKindAs (const Object *obj) const
說明:判斷兩類是否爲一個類型,父類與子類應該算做同一類型。若爲同一類型則返回真,否則返回假,obj需要判斷與Node是否爲同一類型的類。
5、virtual const char * libraryName () const
說明:返回Node的庫文件名。
6、virtual const char * className () const
說明:返回Node的類類型名。
7、virtual Group * asGroup ()
virtual const Group * asGroup () const
說明:把該Node當作一個Group來用,返回指向Group指針,從而具有Group的方法,也可以強制轉換。
8、virtual Transform * asTransform ()
virtual const Transform * asTransform () const
說明:把該Node當作一個Transform來用,返回指向Transform的指針,從而具有Transform的方法。
9、virtual void accept (NodeVisitor &nv)
virtual void ascend (NodeVisitor &nv)
virtual void traverse (NodeVisitor &)
說明:表示接受NodeVisitor的遍歷。第一個表示接受遍歷,一般表示全遍歷。第二個表示向上遍歷。第三個表示向下遍歷,參數nv表示訪問器。是個很重要的工具。
10、const ParentList & getParents () const
ParentList getParents ()
說明:返回Node的父母結點列表,因爲可能有多個父母結點。ParentList 是一個std::vector<Group*>.
11、Group * getParent (unsigned int i)
const Group * getParent (unsigned int i) const
說明:根據索引值,找到第i個父結點。
12、unsigned int getNumParents () const
說明:得到父結點的個數。
13、NodePathList getParentalNodePaths (osg::Node *haltTraversalAtNode=0) const
說明:允許得到該結點在某個結點之上的父結點路徑。返回一個結點列表,設置一個結點,遍歷該結點之上的父結點路徑。默認值爲0,表示從當前結點自己開始遍歷。該參數一般肯定爲當前結點的某個父結點纔有意義。
14、MatrixList getWorldMatrices (osg::Node *haltTraversalAtNode=0) const
說明:得到讓該結點在某個結點之上的父結點發生Matrix操作的矩陣結點列表。設置一個結點,遍歷使該結點之上的父結點發生Matrix操作的路徑。默認值爲0,表示從當前結點自己開始遍歷。該參數一般肯定爲當前結點的某個父結點纔有意義。
15、void setUpdateCallback (NodeCallback *nc)
說明:設置一個更新回調,nc爲回調函數名。
16、NodeCallback * getUpdateCallback ()
const NodeCallback * getUpdateCallback () const
說明:返回更新回調指針。
17、unsigned int getNumChildrenRequiringUpdateTraversal () const
說明:得到設置了更新回調的子結點數目。
18、void setEventCallback (NodeCallback *nc)
說明:設置事件回調,nc爲事件回調參數指針。
19、NodeCallback * getEventCallback ()
const NodeCallback * getEventCallback () const
說明:得到事件回調指針。返回該指針。
20、unsigned int getNumChildrenRequiringEventTraversal () const
說明:得到設置了事件回調的子結點數目。
21、void setCullCallback (NodeCallback *nc)
說明:設置揀選回調。
22、NodeCallback * getCullCallback ()
const NodeCallback * getCullCallback () const
說明:得到揀選回調指針。返回揀選回調指針。
23、void setCullingActive (bool active)
說明:是否開啓揀選。
24、bool getCullingActive () const
說明:得到揀選開啓的狀態。如果開啓,則返回真,否則返回假。
25、unsigned int getNumChildrenWithCullingDisabled () const
說明:得到沒有開啓揀選的子結點數目。返回該數目。
26、bool containsOccluderNodes () const
說明:看是否包含遮檔結點。遮檔結點往往是一個幾何形狀,用於檔後面的結點。
27、void setNodeMask (NodeMask nm)
說明:設置結點是否隱藏。如果nm爲0則代表隱藏,否則代表顯示,nm爲0時表示隱藏,爲非零時表示顯示。
28、NodeMask getNodeMask () const
說明:得到結點狀態,是顯示,還是隱藏。如爲0則表示隱藏,否則表示顯示中。
29、void setDescriptions (const DescriptionList &descriptions)
說明:設置結點描述。往往爲一個字符串來表述結點,結點描述,爲一個字符串。序列。std::vector<std::string>
30、DescriptionList & getDescriptions ()
const DescriptionList & getDescriptions () const
const std::string & getDescription (unsigned int i) const
std::string & getDescription (unsigned int i)
說明:得到結點描述,返回爲一個字符串序列std::vector<std::string>。有參數i的表示得到第i個描述,因爲描述是一個序列,表示得到第i個描述。返回字符串string。
31、unsigned int getNumDescriptions () const
說明:得到結點描述個數。
32、void addDescription (const std::string &desc)
說明:添加一個描述。
33、void setStateSet (osg::StateSet *stateset)
說明:設置狀態設置。狀態設置關係到OpenGL當中所有的狀態。
34、osg::StateSet * getOrCreateStateSet ()
說明:得到或者創建狀態指針。一旦返回該指針,該指針便可與該結點關聯,改變該指針就會改變該結點的狀態值。
35、osg::StateSet * getStateSet ()
const osg::StateSet * getStateSet () const
說明:得到狀態指針,如果沒有綁定過,則返回空。
36、void setInitialBound (const osg::BoundingSphere &bsphere)
說明:設置初始包圍球。參數表示一個包圍球。如果dirty了,將會改變該球的值。等於關聯了一個球球。
37、const BoundingSphere & getInitialBound () const
說明:得到初始球。返回該球球的引用。
38、void dirtyBound ()
說明:要求計算包圍球球。
39、const BoundingSphere & getBound () const
說明:得到包圍球球。
40、virtual BoundingSphere computeBound () const
說明:計算包圍球球。
41、void setComputeBoundingSphereCallback (ComputeBoundingSphereCallback *callback)
說明:設置包圍球回調,當計算包圍球時會調用該函數,該參數爲回調指針。
42、ComputeBoundingSphereCallback * getComputeBoundingSphereCallback () const
說明:得到計算包圍球回調。得到一個回調指針。
43、virtual void setThreadSafeRefUnref (bool threadSafe)
說明:設置是否查看ref以及unref的線程安全性,爲真表示查看,爲假表示不查看。
44、virtual void resizeGLObjectBuffers (unsigned int)
說明:重新設置GL對象Buffer的大小爲指定大小,Buffer的大小值,會修改到每個Buffer.
45、virtual void releaseGLObjects (osg::State *=0) const
說明:釋放GL對象。如果State不爲0則只釋放與之有關聯的對象,從而釋放與之有關聯的上下文。否則會爲釋放一切圖像上下文釋放一切對象。
二、osg::Group類
類描述:對結點起到組織作用,一般做爲父結點或者根結點出現。它允許有一系列的孩子,相同的孩子或者孩子之間有引用重得加入的會共享內存,是通過父類osg::Referenced實現自動管理內存句柄的。它繼承與osg::Node
1、Group ()
Group (const Group &, const CopyOp ©op=CopyOp::SHALLOW_COPY)
說明:構造函數。第二個構造函數意思爲從一個已知的Group構造新的Group。參數表示拷貝類型,默認是淺拷貝,拷貝類型,默認爲淺拷貝,可以是深拷貝:DEEP_COPY_OBJECTS
2、virtual Group * asGroup ()
virtual const Group * asGroup () const
說明:返回一個Group指針,這是爲了提供給子類所使用的。當對象爲非指針時也可以使用。
3、virtual void traverse (NodeVisitor &nv)
說明:接受一個NodeVisitor向上遍歷訪問,nv爲訪問器參數,注意傳入爲引用類型。
4、virtual bool addChild (Node *child)
說明:添加一個孩子到組結點。如果添加成功則返回真。
5、virtual bool insertChild (unsigned int index, Node *child)
說明:插入一個結點到第index個結點後面。如果插入成功,則返回真,否則返回假。
6、bool removeChild (Node *child)
bool removeChild (unsigned int pos, unsigned int numChildrenToRemove=1)
說明:移除某個孩子,移除成功則返回真,否則返回假。第一函數爲以某個孩子的指針爲參數移除它。第二個是以第pos個孩子爲參數移除pos之後的numChildrenToRemove個,要刪除的孩子指針值。
7、virtual bool removeChildren (unsigned int pos, unsigned int numChildrenToRemove)
說明:刪除一些孩子,從第pos個孩子後刪除一些孩子。numChildrenToRemove要刪除的孩子數量。
8、virtual bool replaceChild (Node *origChild, Node *newChild)
說明:使用某個結點,代替某個孩子,origChild表示舊孩子,就是被替掉的那個孩子。newChild表示新孩子,要頂上去的孩子。
9、unsigned int getNumChildren () const
說明:得到該組的孩子數量。返回孩子數量值。
10、virtual bool setChild (unsigned int i, Node *node)
說明:設置第i個孩子爲node值,要設置的group的第i個孩子。node表示要設置的值。
11、Node * getChild (unsigned int i)
const Node * getChild (unsigned int i) const
說明:得到第i個孩子。返回第i個孩子的指針。
12、bool containsNode (const Node *node) const
說明:判斷該組是否包含參數所指node.如果包含則返回真,否則返回假。
13、unsigned int getChildIndex (const Node *node) const
說明:得到參數所指node的索引值。返回該索引值。
14、virtual void setThreadSafeRefUnref (bool threadSafe)
說明:設置是否查看ref以及unref的線程安全性,threadSafe爲真表示查看,爲假表示不查看。
15、virtual void resizeGLObjectBuffers (unsigned int)
說明:重新設置GL對象Buffer的大小爲指定大小。
16、virtual void releaseGLObjects (osg::State *=0) const
說明:釋放GL對象。如果State不爲0則只釋放與之有關聯的對象,從而釋放與之有關聯的上下文。否則會爲釋放一切圖像上下文釋放一切對象,
三、osg::Switch類
類說明:Switch是一個管理類,它下面可以有很多子類,它就像是一個開關可以控制子類的顯示與隱藏,而這種隱藏是不耗費內存的,與SetNodeMask對比有明顯的優勢,SetNodeMask事實上只是隱藏了結點,但結點仍被繪製。該類是從Node和Group派生而來,故可以被加入組結點以及asGroup等等種種方法。是一個非常常用的類。
1、Switch ()
Switch (const Switch &, const CopyOp ©op=CopyOp::SHALLOW_COPY)
說明:構造函數。第二個構造函數爲從已知的Switch構造出新的Switch。拷貝類型爲參數二控制。默認值爲淺拷貝,深拷貝爲:DEEP_COPY_OBJECTS
2、META_Node (osg, Switch)
說明:是一個宏,宏中定義了標準Clone,且具有isSameAs,ClassName,accept三個重要方法。目的是讓從Node派生的子類方便的定義所需要的純虛方法。
3、virtual void traverse (NodeVisitor &nv)
說明:設置向下遍歷器,一般爲從該結點向下開始遍歷。
4、void setNewChildDefaultValue (bool value)
說明:設置新孩子加入時的默認值是顯示還是開還是關。如果value爲真表示開,爲假表示關。
5、bool getNewChildDefaultValue () const
說明:得到新加入結點默認開關值,如果默認爲開,則返回真,否則返回假。
6、virtual bool addChild (Node *child)
virtual bool addChild (Node *child, bool value)
說明:添加一個孩子到開關中。添加成功則返回真,添加失敗則返回假。添加失敗可能會由於空指針或者該node已被包含在組結點當中。
7、virtual bool insertChild (unsigned int index, Node *child)
virtual bool insertChild (unsigned int index, Node *child, bool value)
說明:插入一個孩子到index值後。可以設置開關值。插入成功則返回真,否則返回假。如果該孩子爲空或者已經在組中,則會返回假。
8、virtual bool removeChildren (unsigned int pos, unsigned int numChildrenToRemove)
說明:從第pos開始,移除numChildrenToR個孩子結點。
9、void setValue (unsigned int pos, bool value)
說明:設置第pos個值的結點的開關值,如果value爲真表示開,如果爲假表示關。
10、bool getValue (unsigned int pos) const
說明:返回第Pos個孩子的開關值。開則返回真,關則返回假。
11、void setChildValue (const Node *child, bool value)
說明:設置孩子開關值,以結點指針爲參數。如果value爲真則設置爲開,否則設置爲關。
12、bool getChildValue (const Node *child) const
說明:得到孩子的開關值,以孩子指針做爲參數。
13、bool setAllChildrenOff ()
說明:關閉所有孩子。如果關閉成功則返回真,否則返回假。
14、bool setAllChildrenOn ()
說明:打開所有孩子,如果打開成功則返回真,否則返回假。
15、bool setSingleChildOn (unsigned int pos)
說明:設置單個孩子的開關開啓和關閉。設置成功返回真,否則返回假。
16、void setValueList (const ValueList &values)
說明:爲開關孩子序列設置一個布爾序列來完成設置值,開關序列,定義爲std::vector<bool>
17、const ValueList & getValueList () const
說明:得到開關孩子序列的開關值序列。
18、virtual BoundingSphere computeBound () const
說明:計算包圍球,返回開關所有開啓子結點的總包圍球。
四、osg::MatrixTransform類
類說明:這是一個最常用的移動結點的類,可以隨動,旋轉控制結點。這些操作都是乘矩陣得到。
1、MatrixTransform ()
MatrixTransform (const MatrixTransform &, const CopyOp ©op=CopyOp::SHALLOW_COPY)
MatrixTransform (const Matrix &matix)
說明:構造函數,第二個構造函數爲從一個現有MatrixTransform來構造新的MatrixTransform。可以確定拷貝類型,默認爲淺拷貝,可以爲深拷貝:DEEP_COPY_OBJECTS。而第三個構造函數爲從一個matrix來構造一個MatrixTransform.
2、META_Node (osg, Switch)
說明:是一個宏,宏中定義了標準Clone,且具有isSameAs,ClassName,accept三個重要方法。目的是讓從Node派生的子類方便的定義所需要的純虛方法。
3、virtual MatrixTransform * asMatrixTransform ()
virtual const MatrixTransform * asMatrixTransform () const
說明:返回一個MatrixTransform的指針,如果是對象是可以這樣使用,或是其父類的其它類型。
4、void setMatrix (const Matrix &mat)
說明:這個方法非常重要,是裏面最重要的方法,裏面有很多的慣用法。其中格式都是這樣的:mat.setMatrix(osg::Matrix::Transform(x,y,z)),其中osg::Matrix::Scale以及osg::Matrix::Rotate也可以被用在其中,並且可以相乖疊加。這樣就設置了mat的矩陣。然後把node加入到mat中,再把mat加入到Group中。
5、const Matrix & getMatrix () const
說明:得到已經設置的矩陣值。返回一個矩陣的引用。
6、void preMult (const Matrix &mat)
void postMult (const Matrix &mat)
說明:preMult的意思爲前乘矩陣,postMult的意思爲後乘矩陣。
7、const Matrix & getInverseMatrix () const
說明:得到逆矩陣。
8、virtual bool computeLocalToWorldMatrix (Matrix &matrix, NodeVisitor *) const
virtual bool computeWorldToLocalMatrix (Matrix &matrix, NodeVisitor *) const
說明:把NodeVisitor所指結點由局部座標系統轉向世界座標系統 ,或由世界座標系統轉向局部座標系統。得到矩陣值,矩陣值也可以轉換爲座標,轉換成功返回true,失敗返回false.
這篇很詳細,磊磊看見不錯,轉載過來的,地址如下:
https://zhuanlan.zhihu.com/p/38327504