|
本帖最后由 allen 于 2010-7-7 19:12 编辑
- struct transformAccumulator
- {
- //联系组节点
- bool attachToGroup(osg::Group* g);
- //得到矩阵
- osg::Matrix getMatrix();
- protected:
- //定义组节点智能指针
- osg::ref_ptr<osg::Group> parent;
- //Node节点
- osg::Node* node;
- };
- bool transformAccumulator::attachToGroup(osg::Group* g)
- {
- //定义bool 型变量
- bool success = false;
- //判断父节点非空
- if (parent != NULL)
- {
- //得到所有子节点数
- int n = parent->getNumChildren();
- //for循环,从父节点中去掉特定条件的node节点
- for (int i = 0; i < n; i++)
- {
- if (node == parent->getChild(i) )
- {
- parent->removeChild(i,1);
- //成功去掉返回true
- success = true;
- }
- }
- //否则返回false
- if (! success)
- {
- return success;
- }
- }
- //把特定节点赋给g,g是另一个新的组节点对象,用于
- g->addChild(node);
- return true;
- }
- ……
- transformAccumulator* tankWorldCoords = new transformAccumulator();
- //节点和组节点依附,followPAT节点是视点位置
- //矩阵
- tankWorldCoords->attachToGroup(followerPAT);
复制代码 看不明白attachToGroup函数的意思,想来应该是模型节点与视点“绑定”,节点矩阵已跟随视点矩阵更新。
这是依据海军教程代码改写。去掉路径生成,改为漫游操作方式。有兴趣的可以一快研究。 |
|