查看: 897|回复: 4

求助:HUD无法显示高度大于0的模型?

[复制链接]

该用户从未签到

发表于 2013-10-14 13:03:03 | 显示全部楼层 |阅读模式
HUD实现:
  1. osg::ref_ptr<osg::Node> EditIntersectionCommand::getHUDCamera(const osg::ref_ptr<osg::Node>& aNode)
  2. {
  3.     osg::BoundingSphere sphere = aNode->getBound();
  4.     osg::Vec3d sphereCenter = sphere.center();
  5.     double radius = sphere.radius();
  6.     osg::Camera* camera = new osg::Camera;
  7.     double left = sphereCenter.x() - radius;
  8.     double right = sphereCenter.x() + radius;
  9.     double bottom = sphereCenter.y() - radius;
  10.     double top = sphereCenter.y() + radius;
  11.     //设置透视矩阵
  12.     camera->setProjectionMatrixAsOrtho2D(left, right, bottom, top);
  13.     camera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);

  14.     //得到默认设置
  15.     camera->setViewMatrix(osg::Matrix::identity());
  16.     //设置背景为透明,否则的话可以设置ClearColor
  17.     camera->setClearMask(GL_DEPTH_BUFFER_BIT);
  18.     //设置渲染顺序,必须在最后渲染
  19.     camera->setRenderOrder(osg::Camera::POST_RENDER);
  20.     camera->addChild(aNode);
  21.     camera->getStateSet()->setMode(GL_LIGHTING, osg::StateAttribute::OFF);
  22.     return camera;
  23. }
复制代码
但如果Node内的Geometry Z值设为大于零的数,显示不出来,<=0都可以显示出来!跪求解答啊!!!!

该用户从未签到

 楼主| 发表于 2013-10-15 09:49:23 | 显示全部楼层
急求急求!!!盼高手帮忙!!!

该用户从未签到

发表于 2013-10-15 09:51:59 | 显示全部楼层
camera->setViewMatrix(osg::Matrix::identity());

该用户从未签到

 楼主| 发表于 2013-10-15 14:00:08 | 显示全部楼层
就是这样设置的,不行啊

该用户从未签到

发表于 2013-10-20 18:45:01 | 显示全部楼层
setProjectionMatrixAsOrtho2D事实上相当于限制远近平面在[-1, 1]区间内,我想您绘制的内容超出了这个范畴
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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