查看: 1782|回复: 4

请教关于模型构建问题

[复制链接]

该用户从未签到

发表于 2009-5-1 11:04:02 | 显示全部楼层 |阅读模式
我用下面代码绘制一个六边形面,但是显示的时候,多了一块三角面片,不知怎么回事?

  mVertices->push_back( osg::Vec3(33.0,-23.0,28.0) );  
   mVertices->push_back( osg::Vec3(10.0,-23.0,28.0) );
   mVertices->push_back( osg::Vec3(33.0,-23.0,0.000000) );  
   mVertices->push_back( osg::Vec3(10.0,-23.0,10.0) );
   mVertices->push_back( osg::Vec3(-33.0,-23.0,10.0) );
   mVertices->push_back( osg::Vec3(-33.0,2.0,0.000000) );
   mVertices->push_back( osg::Vec3(-33.0,-23.0,0.000000) );
   mVertices->push_back( osg::Vec3(33.0,2.0,0.000000) );
   mVertices->push_back( osg::Vec3(10.0,2.0,10.0) );
   mVertices->push_back( osg::Vec3(-33.0,2.0,10.0) );
   mVertices->push_back( osg::Vec3(33.0,2.0,28.0) );
   mVertices->push_back( osg::Vec3(10.0,2.0,28.0) );

   mGeometry->setVertexArray( mVertices );

   osg:rawElementsUInt* faceFour =
      new osg::DrawElementsUInt(osg:rimitiveSet::POLYGON, 0);
   faceFour->push_back(6);
   faceFour->push_back(2);
   faceFour->push_back(0);
   faceFour->push_back(1);
   faceFour->push_back(3);
   faceFour->push_back(4);
   mGeometry->addPrimitiveSet(faceFour);

 我本应得到的面样式:
 [img] ok.GIF [/img]

 运行上面代码得到的面:
 [img] ko.GIF [/img]


谢谢!

[ 本帖最后由 prh 于 2009-5-1 11:10 编辑 ]

该用户从未签到

发表于 2009-5-1 15:22:33 | 显示全部楼层
要绘制凹多边形是必须事先细分的,学习OpenGL的朋友想必了解这一点。可以用osgUtil::Tessellator完成细分和三角化的工作

该用户从未签到

 楼主| 发表于 2009-5-1 17:44:27 | 显示全部楼层
明白.
谢谢array指点!

该用户从未签到

 楼主| 发表于 2009-5-2 10:49:07 | 显示全部楼层
还是有点疑问,同样地我构建下面的面,为什么却能正确显示:

     osg:rawElementsUInt* FaceTwo =
         new osg::DrawElementsUInt(osg:rimitiveSet::POLYGON, 0);
         FaceTwo->push_back(7);
         FaceTwo->push_back(5);
         FaceTwo->push_back(9);
         FaceTwo->push_back(8);
         FaceTwo->push_back(11);
         FaceTwo->push_back(10);
         mGeometry->addPrimitiveSet(FaceTwo);

下面是运行结果:
         kk.GIF

[ 本帖最后由 prh 于 2009-5-2 10:50 编辑 ]

该用户从未签到

发表于 2009-5-2 16:36:34 | 显示全部楼层
那并不代表可以正确显示,您可以显示这个多边形的网格看一看是如何排布的,没有经过三角化的凹多边形只是碰巧显示的好像正确的而已
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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