查看: 2078|回复: 2

如何根据顶点数组生成贴合节点的网面

[复制链接]

该用户从未签到

发表于 2009-4-23 21:41:07 | 显示全部楼层 |阅读模式
用Delaunay三角形网绘制了一下Cow.osg的网面,发现很粗糙
牛的身上还无端长出一对“翅膀”来(见图),呵呵

如果想根据节点的顶点数组,生成能够尽量贴合在其表面的网面,用什么方法比较好呢?
TriangleMesh应该是可以的吧,可惜没找见相关的例子...

Delaunay三角形网绘制的代码如下:
  1.   osg::Drawable *BaseDrawable = geode->getDrawable(0);
  2.   osg::Geometry *BaseGeometry = dynamic_cast<osg::Geometry *>(BaseDrawable);

  3.   //求解顶点坐标和索引
  4.   osg::Vec3Array *Mesh = dynamic_cast<osg::Vec3Array*>(BaseGeometry->getVertexArray());

  5.   osg::ref_ptr<osgUtil::DelaunayTriangulator> trimesh = new osgUtil::DelaunayTriangulator(Mesh);
  6.   trimesh->triangulate();

  7.   geometry->setVertexArray(Mesh);
  8.   geometry->addPrimitiveSet(trimesh->getTriangles());
复制代码

飞牛:)

飞牛:)

该用户从未签到

发表于 2009-4-23 22:18:51 | 显示全部楼层
这个你得看节点本身图元的组织方式,,,它的图元组织:TRIANGLE_STRIP ,,,你用delaunay来组织还是有很大的区别,,,同时,这个你还得分析它的结构组织来实现重绘~~~~~~~

这个功能可以考虑交给array的osgModeling工程来完成,哈哈~~~~~~

该用户从未签到

发表于 2009-4-24 18:52:01 | 显示全部楼层
自己写一个nodevisitor,根据顶点数组来构建三维网格,delauny三角化是不行的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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