查看: 1166|回复: 4

在camera中加入一个模型

[复制链接]

该用户从未签到

发表于 2011-7-17 21:34:23 | 显示全部楼层 |阅读模式
问题描述:我在主场景中又加了一个camera节点 用来加载显示一组模型,但其中有一个模型不显示,我测试了下,发现不是模型的问题是不在视点内,我用了osg::MatrixTransform 来对节点进行了平移,发现不行。又用了 osg:ositionAttitudeTransform 来直接对模型进行位置设定,发现还是不行。不知道该怎么弄了,寻求帮助。 谢谢!

部分代码:
int main()
{
     osg::ref_ptr<osg::Node> Scense=osgDB::readNodeFile("UP.IVE");
  osg::ref_ptr<osgViewer::Viewer>viewer =new osgViewer::Viewer;
   osg::ref_ptr<osg::PositionAttitudeTransform>pat=new osg::PositionAttitudeTransform();
pat->addChild(Scense.get());
pat->setPosition(osg::Vec3(2.0f,0.0f,2.0f));
osg::ref_ptr<osg::Camera>camera=new osg::Camera;
  osg::ref_ptr<osg::GraphicsContext::Traits> traits = new osg::GraphicsContext::Traits;
   traits->x = 0;
traits->y = 0;
traits->width =1000;
traits->height = 800;
traits->doubleBuffer = true;
traits->windowDecoration=true;
traits->sharedContext = 0;

// 创建图形上下文
osg::ref_ptr<osg::GraphicsContext>gc= osg::GraphicsContext::createGraphicsContext(traits.get());

camera->setViewport(new osg::Viewport(30,30,300,300));
camera->setGraphicsContext(gc.get());

camera->setCullingActive(true);
  camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
camera->setProjectionMatrix(osg::Matrix::rotate(osg:uat(osg::inDegrees(-90.0),0,0,1))*
  osg::Matrix::scale(0.08f,0.08f,0.08f));
camera->setClearMask(GL_DEPTH_BUFFER_BIT);
  camera->setRenderOrder(osg::Camera::POST_RENDER);
  camera->addChild(pat.get());
  //优化场景数据
  osgUtil::Optimizer optimizer;
  optimizer.optimize(camera.get());
   viewer->setSceneData(camera.get());
   viewer->realize();
   viewer->run();
   return 0;
   
}发现在viewer中直接加入该模型是可以显示的,但是把这个模型给了camera再加入到viewer中就不显示了,进行了变换貌似也没有用。

该用户从未签到

发表于 2011-7-18 08:30:05 | 显示全部楼层
您的camera没有指定观察矩阵,并且它是ABSOLUTE_RF,无法继承上一级节点的观察矩阵,这样的话,您如何保证自己的节点在观察范围内

该用户从未签到

 楼主| 发表于 2011-7-18 13:58:01 | 显示全部楼层
谢谢array.

该用户从未签到

 楼主| 发表于 2011-7-18 16:11:21 | 显示全部楼层
回复 3# WLLoveOSG


    array,弄了半天还是没有弄出来,怎么设置观察举证呐,还有为什么其他的模型能显示呐?

该用户从未签到

发表于 2011-7-19 08:18:08 | 显示全部楼层
有关观察矩阵和投影矩阵的知识,请先好好学习OpenGL基础
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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