查看: 1086|回复: 5

如何实现两个场景自然过渡

[复制链接]

该用户从未签到

发表于 2011-4-2 15:58:03 | 显示全部楼层 |阅读模式
用OSG编了两个模块,场景A、场景B,把模块合到同一个程序里面,先渲染场景A再渲染场景B。现在的问题是:从场景A进入到场景B不能自动的进行,渲染完场景A, 得按下“ESC”键,才能进入到场景B进行渲染。
想设一个定时功能,时间一到就开始渲染场景B,代码如下:
  1. viewerA->setSceneData(root.get());
  2. viewerA->run(); // 渲染场景A

  3. //定时进入下一环节
  4. for (int time = 0;time<=50;time++)
  5. {

  6. }
  7. root->removeChild(group1);
  8. root->removeChild(group2);
  9. root->removeChild(group3);
  10. viewerB->run(); //渲染场景B
复制代码

但是现在代码中的定时功能没有发挥作用,设置断点发现 time值为0,程序就一直是停留在viewerA->run()这个过程,没有往下接着运行,请问这是什么原因呢?该如何才能让两个场景自然过渡呢?

该用户从未签到

发表于 2011-4-2 16:55:06 | 显示全部楼层
run()函数是一个while循环,只有你在按ESC键退出这个循环之后才能进入你下面的代码。

该用户从未签到

 楼主| 发表于 2011-4-2 17:05:33 | 显示全部楼层
回复 2# liuzhiyu123


    那如何才能用代码实现退出run()循环呢?

该用户从未签到

发表于 2011-4-5 09:25:41 | 显示全部楼层
这样的效果应该是使用数据的变化来控制显示的变化,而不是改变渲染流程。run一致运行,在必要的地方改变root的内容即可

该用户从未签到

发表于 2011-4-6 09:35:36 | 显示全部楼层
嗯,一个viewer,请在回调中更改root内容;

该用户从未签到

 楼主| 发表于 2011-4-6 16:16:52 | 显示全部楼层
谢谢,通过更改root的内容已初步实现了场景的过渡
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表