OSG结点的父子索引变化
来源:互联网 发布:免费的读书软件 编辑:程序博客网 时间:2024/05/16 17:17
最近在做Osg的相关项目研发,在大场景下结点自然会多,结点的操作也就会带来很多问题。写这篇文章的目的就是希望可以帮助Osg研发工作者节省一些时间,好的,进入正题。谢谢观看,如有问题,请给予指正。
首先,要知道对定义的Osg结点new了或对它们赋值了,它们就在内存中真实存在了,Osg结点在内存中都有一系列的数据,包括结点名字、结点的所有父亲的地址、结点所有孩子的地址、及它们的索引等等。
情形1、osg::ref_ptr<osg::Group>类型结点root,root下加三个孩子osg::ref_ptr<osg::Node>类型结点node1、node2、node3,程序会按加的顺序记录索引,此时root会记录node1、node2、node3分别为孩子0、1、2,node1、node2、node3也都会记录root为它们的父亲0,这是最基本的情况,想必大家都是知道的。
情形2、在情形1的情况下,假设node1下面还有一些孩子结点,也就是node1为一树,使用root->removeChild(node1); ///移除root下的node1结点,node1的树关系不会变
removeChild函数会解除父子关系,对于root,root会把node1在自身内存数据判断查找,找到后识别为孩子0索引,删除所有其相关信息,然后对孩子索引重排,重排按照后续孩子前后关系不变的原则,node2变为root孩子0,node3变为root孩子1。对于node1,它会删除记录的父亲root的信息,变为无父亲,但记住,只要没有对node1指针清零,这个节点的数据还是存在的,还可以再次利用。
情形3、在情形1的情况下,定义类型osg::ref_ptf<osg::MatrixTransform>的transform变化结点。
操作 root->replaceChild(node1, transform) ///想当先调用root->removeChild(node1);再调用root->addChild(transform)
///也就是root下node2为0孩子,node3为1孩子,transform为2孩子。
tansform->addChild(node1); ///node1的父亲0为transform,假设node1还有其他父节点,那么结果就是tansform是其最后一个父亲了。
经常使用这两段代码对场景根下的某个结点进行位置变换,所以,使用孩子取代函数replaceChild并不是对被取代结点和取代结点进行简单的替换,而是每进行一次这样的操作会把取代结点transform作为root根节点的最后一个孩子索引,被取代节点node1也是把取代结点作为最后一个父亲。
情形4、当执行了view->setSceneData(root); 之后root结点丛没有父亲变为有一个父亲,类型就是Osg的照相机结点osg::Camera。
当程序中要显示多个窗口时,会定义多个osg::ref_ptr<osgViewer::Viewer>类型变量,可能多个场景照相机指向同个结点,所以不要忘了osg::Camera结点在其中的参与的索引变化。
- OSG结点的父子索引变化
- OSG结点的父子索引变化
- Elasticsearch索引的父子关系
- 索引结点的总结
- 索引结点的总结
- fork()多次之后父子进程的数目变化
- osg demo26 LOD头结点
- OSG 结点渲染状态 类图
- osg dragger 颜色发生变化
- [osg]OSG的分格化
- osg入门系列10-以索引方式的几何体绘制
- Elasticsearch索引的父子关系(index parent-child)
- 利用 Java API 监控 Zookeeper 的结点变化
- osg demo20 输出模型所有结点
- osg::Sphere,osg::Texture2D,osg::StateSet,osg::TexEnv的使用
- 操作系统 索引结点
- 管理索引: 合并和重建索引+合并索引+合并索引前后变化示意图+重建索引+监视索引+查看索引的状态+删除索引
- 频繁变化的表无效索引造成的热点块争用
- 如何在 Ubuntu 中删除来宾会话 16.04 登录屏幕
- php中的坑
- MySql中添加用户,新建数据库,用户授权,删除用户,修改密码
- 【HDU 1016】Prime Ring Problem(DFS)
- IDEA创建Java项目
- OSG结点的父子索引变化
- VS2012下安装配置OpenCV2.4.9的方法
- 机器学习的发展趋势——bigData2smallData or bigData2massiveData
- 从1到n整数中1出现的次数
- JavaScript DOM 创建元素并设置属性
- 推荐算法的文献综述
- Android Volley完全解析(三),定制自己的Request
- linux基础(29)--救援模式挽救数据--RHEL6.5
- c++ template实例化