查看: 1470|回复: 3

[请教]HUD显示模型

[复制链接]

该用户从未签到

发表于 2013-4-3 14:17:02 | 显示全部楼层 |阅读模式
我想利用HUD显示三维模型在屏幕的一个指定位置,但是不是HUD的光照设置有问题?效果如下:
QQ截图20130403140437.png
HUD的设置就是参照的osghud的例子,看图中左下角的圆柱体,失去了三维的立体效果,求高手指导。

该用户从未签到

发表于 2013-4-3 17:01:04 | 显示全部楼层
应该是你的方向设置的有问题吧 楼主可以把代码发上来瞧瞧

该用户从未签到

 楼主| 发表于 2013-4-4 09:32:52 | 显示全部楼层
本帖最后由 tiantangtl 于 2013-4-4 09:33 编辑
Mooneast 发表于 2013-4-3 17:01
应该是你的方向设置的有问题吧 楼主可以把代码发上来瞧瞧
  1. osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer;
  2.         osg::ref_ptr<osg::Group> root=new osg::Group;
  3.         osg::ref_ptr<osg::Node> cow=osgDB::readNodeFile("cow.osg");
  4.         root->addChild(cow.get());
  5.        
  6.         osg::ref_ptr<osg::Camera> HUDCamera=new osg::Camera;
  7.         HUDCamera=new osg::Camera;
  8.         HUDCamera->setProjectionResizePolicy(osg::Camera::FIXED);
  9.         HUDCamera->setProjectionMatrix(osg::Matrix::ortho2D(0.0,1280,0.0,1024));
  10.         HUDCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
  11.         HUDCamera->setClearMask(GL_DEPTH_BUFFER_BIT);
  12.         HUDCamera->setRenderOrder(osg::Camera::POST_RENDER);

  13.         osg::ref_ptr<osg::Switch> modelroot=new osg::Switch;

  14.         osg::ref_ptr<osg::Geode> gnode=new osg::Geode;
  15.         osg::ref_ptr<osg::Cylinder> cy=new osg::Cylinder;
  16.         osg::ref_ptr<osg::ShapeDrawable> cysd=new osg::ShapeDrawable(cy.get());
  17.         cysd->setColor(osg::Vec4(1.0,0.0,0.0,1.0));
  18.         gnode->addDrawable(cysd.get());;

  19.         osg::ref_ptr<osg::MatrixTransform> btn1=new osg::MatrixTransform;
  20.         btn1->addChild(gnode.get());

  21.         osg::Matrix btnTrans,btnRotate,btnScale;
  22.         btnTrans.makeTranslate(100,100,-100);
  23.         btnRotate=osg::Matrix::rotate(osg::inDegrees(45.0),osg::X_AXIS)*osg::Matrix::rotate(osg::inDegrees(45.0),osg::Z_AXIS);
  24.         btnScale.makeScale(osg::Vec3(50.0,50.0,50.0));
  25.         btn1->setMatrix(btnScale*btnRotate*btnTrans);
  26.         modelroot->addChild(btn1.get());

  27.         HUDCamera->addChild(modelroot.get());
  28.         root->addChild(HUDCamera.get());

  29.         viewer->addEventHandler(new osgViewer::WindowSizeHandler);
  30.         viewer->setSceneData(root.get());
  31.         viewer->realize();
  32.         return viewer->run();
复制代码

该用户从未签到

发表于 2013-4-7 08:51:35 | 显示全部楼层
把光照关了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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