osg场景图(DAG-有向无环图)
osg场景图是一个有向无循环图,如下图所示:
osg场景图中,所有节点全部为osg::Node或从其派生出来。
其中,叶子节点(osg::Geode)是模型数据节点(存放数据的节点),中间节点(或称枝节节点)为组节点(osg::Group)。
挂在组节点下的子节点会执行相同的操作(如:平移,旋转,放缩等),
如果组节点下再挂组节点,作用到叶子节点上的将是一个从下到上的综合结果。
注意:上图中Box会在施加了两种不同变换后,被分别绘制出来(最终会绘制出两个box),但在box在内存中只有一份。
++++++++++++++++++++++++++++++++++++++++
osg::Geode
osg::Geode的实质是一组图元,下面有若干个osg::Drawable(可绘制体)。
其中,osg::Drawable是一个简单的或复杂的图元,可以是一个正方形,也可以是栅格化的字符串。
osg::Geode典型示例:osg::Billboard标志牌。
osg::Group
根据不同的用途,有各种不同的组结点,它们都继承自osg::Group。
如osg::LOD,可以根据距离远近等因素选择不同的子结点渲染。
如osg::Switch,可以在两个子结点中任选其一。
如osg::Sequence,可以构建序列动画。
如osg::Transform,改变其所有子结点相对于场景中其它结点的坐标,可以是旋转、平移或缩放等。
我们常用osg::MatrixTransform和osg::PositionAttitudeTransform。
osg::Camera就是从osg::Transform继承来。
*** Drawable ***