查看: 1318|回复: 10

关于compositeViewer

[复制链接]

该用户从未签到

发表于 2011-7-4 11:57:38 | 显示全部楼层 |阅读模式
在多视图相机渲染实例中 我把书中的 牛,和飞机的模型该成了我需要的 ive格式的模型 为什么会有断点出现?
osg::ref_ptr<osgViewer::CompositeViewer>viewer=new osgViewer::CompositeViewer();
//读取模型
osg::ref_ptr<osg::Node>Scense=osgDB::readNodeFile("changjing.IVE");
    osg::ref_ptr<osg::Node>time=osgDB::readNodeFile("time.IVE");
/*osg::ref_ptr<osg::Node>hand=osgDB::readNodeFile("glider.osg");
   hand->setNodeMask(1);
   time->setNodeMask(1);
osg::ref_ptr<osg::Group>root=new osg::Group();
   root->addChild(hand.get());
   root->addChild(time.get());*/


//优化场景数据
  osgUtil::Optimizer optimizer;
  optimizer.optimize(Scense.get());
  optimizer.optimize(time.get());
  //设置图像环境特性
  osg::ref_ptr<osg::GraphicsContext::Traits>traits=new osg::GraphicsContext::Traits();
  traits->x=100;
  traits->y=100;
  traits->width=900;
  traits->height=700;
  traits->windowDecoration=true;
  traits->doubleBuffer=true;
  traits->sharedContext=0;
  //创建图像环境特性
  osg::ref_ptr<osg::GraphicsContext>gc=osg::GraphicsContext::createGraphicsContext(traits.get());
  if (gc->valid())
  {
  osg::notify(osg::INFO)<<"GraphicsWindow has been created successfully."<<std::endl;
  //清除窗口颜色及颜色和深度缓冲
  gc->setClearColor(osg::Vec4f(0.2f,0.2f,0.6f,1.0f));
  gc->setClearMask(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
  }
  else
   
   
   {
   osg::notify(osg::NOTICE)<<"GraphicsWindow has  not been created successfully."<<std::endl;
   }
   
   

// 视图一
   {
   osg::ref_ptr<osgViewer::View>view=new osgViewer::View;
   viewer->addView(view.get());
   //设置视图场景数据
   view->setSceneData(Scense.get());
   //设置相机视口及图像环境
   view->getCamera()->setViewport(new osg::Viewport(0,0,traits->width,traits->height));
   view->getCamera()->setGraphicsContext(gc.get());
   view->setCameraManipulator(new osgGA::TrackballManipulator);
   //添加时间处理程序

}
   //视图二
   {
   osg::ref_ptr<osgViewer::View>view=new osgViewer::View;
   viewer->addView(view.get());
   view->setSceneData(time.get());
   view->getCamera()->setViewport(new osg::Viewport(traits->width/2,0,traits->width/2,traits
    ->height/2));
  view->getCamera()->setGraphicsContext(gc.get());
  view->setCameraManipulator(new osgGA::TrackballManipulator);
   }
   viewer->realize();
   viewer->run();
   return 0;
   
}

断点出现在 最后一行代码中  [img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/SQZCX%7D@84DZ8SO)%603~@[Z[9.jpg[/img]

该用户从未签到

发表于 2011-7-4 13:17:35 | 显示全部楼层
  1. [img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/SQZCX%7D@84DZ8SO)%603~@[Z[9.jpg[/img]
复制代码
我看不到您电脑里的图,请上传附件

该用户从未签到

 楼主| 发表于 2011-7-4 15:54:12 | 显示全部楼层
[img][/img][img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/SQZCX%7D@84DZ8SO)%603~@[Z[9.jpg[/img]

该用户从未签到

 楼主| 发表于 2011-7-4 15:56:15 | 显示全部楼层
[img][img]file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/SQZCX%7D@84DZ8SO)%603~@[Z[9.jpg[/img][/img]

该用户从未签到

发表于 2011-7-4 16:28:45 | 显示全部楼层
统统看不到……不要把您的本地电脑的图片作为图片链接……我不是黑客不能登陆您的电脑……

该用户从未签到

 楼主| 发表于 2011-7-4 19:49:44 | 显示全部楼层
回复 5# array


    不好意思,呵呵 问题解决了,是因为导出的ive文件有问题。
但还是有个问题想请教一下 :
    小视口的背景能设置成透明的不?

小视图的背景把后面的视图挡着了

小视图的背景把后面的视图挡着了

该用户从未签到

发表于 2011-7-5 01:36:11 | 显示全部楼层
不能直接设置小窗口透明,OpenGL好像也没有吧,,你或许可以RTT,然后对纹理透明处理

该用户从未签到

 楼主| 发表于 2011-7-5 08:51:29 | 显示全部楼层
回复 7# FlySky


    好的,我试一下谢谢

该用户从未签到

 楼主| 发表于 2011-7-5 09:22:46 | 显示全部楼层
本帖最后由 david850911 于 2011-7-5 14:45 编辑

回复 5# array
谢谢array,还有个问题,

      怎么把一个模型,放在场景中的合适位置? QQ截图未命名.png
如图中“牛”的模型想放在地面上怎么弄?

该用户从未签到

发表于 2011-7-5 15:50:17 | 显示全部楼层
可以射线和地面求交来得到合适的放置坐标

该用户从未签到

 楼主| 发表于 2011-7-6 08:37:46 | 显示全部楼层
回复 10# array


    谢谢array!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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