查看: 1212|回复: 4

一个viewer里有两个camera,可以只有一个响应操作器吗?

[复制链接]

该用户从未签到

发表于 2011-4-15 10:59:40 | 显示全部楼层 |阅读模式
一个viewer里有两个camera,可以只有一个响应操作器吗?也就是说 在操作或者漫游的时候,有一个camera始终显示鸟瞰图不受操作器影响,
这种效果实现要怎么设置?


有遇到过的来给解答下,谢谢啦!

该用户从未签到

发表于 2011-4-15 13:07:18 | 显示全部楼层
setAllowEventFocus()

该用户从未签到

发表于 2011-4-15 13:07:52 | 显示全部楼层
setAllowEventFocus()

该用户从未签到

 楼主| 发表于 2011-4-15 13:55:53 | 显示全部楼层
回复 3# array

设置了之后还是没有效果。。。两个camera还是一起动。。。
  1. // 初始化一个相机
  2.         osg::ref_ptr<osg::Camera> camera = new osg::Camera;
  3.         camera->setGraphicsContext(gc.get());

  4.         //相机视口设置
  5.         camera->setViewport(new osg::Viewport(traits->x, traits->y, traits->width, traits->height));
  6.                
  7.         // 添加相机到VIEWER
  8.         mViewer->addSlave(camera.get());

  9.         //后视图
  10.         double aspectRatioScale = 1.0;
  11.         osg::ref_ptr<osg::Camera> cameraBack = new osg::Camera;
  12.         //设置上下文
  13.         cameraBack->setGraphicsContext(gc.get());
  14.         cameraBack->setAllowEventFocus(false);
  15.         //设置后视图的窗口位置
  16.         cameraBack->setViewport(new osg::Viewport(traits->x, traits->y,  traits->width/4, traits->height/4));
  17.         GLenum buffer = traits->doubleBuffer ? GL_BACK : GL_FRONT;
  18.         cameraBack->setDrawBuffer(buffer);
  19.         cameraBack->setReadBuffer(buffer);  

  20.         //添加相机到视口
  21.         mViewer->addSlave(cameraBack.get(), osg::Matrixd(), osg::Matrixd::lookAt(Vec3(0, -5,70), Vec3(0, 0, 0),Vec3(0, 1, 0)));
复制代码

该用户从未签到

发表于 2011-4-15 15:21:57 | 显示全部楼层
您是作为slave添加的,那当然没效果,slave相机受到偏移矩阵的影响而非用户交互动作。
请作为两个独立的节点添加!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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