查看: 1508|回复: 4

请教OSG中Delaunay的应用问题

[复制链接]

该用户从未签到

发表于 2011-1-7 15:37:05 | 显示全部楼层 |阅读模式
本帖最后由 ccy_ccy2001 于 2011-1-7 21:06 编辑

如图 图一.jpg    
a,b,c三点为鼠标点击获得的点,a1,a2,b1,b2,c1,c2为通过a,b,c计算出来的,现在想通过OSG中Delaunay生成三角网格,代码如下:
  1. osg::Geode* OsgWidget::creatDelaunay(std::vector<osg::Vec3f>vertex)
  2. {
  3. //创建顶点数组
  4. osg::ref_ptr<osg::Vec3Array> coords = new osg::Vec3Array();
  5. //计算顶点数组的大小
  6. unsigned int n = vertex.size();
  7. //添加顶点数据
  8. for( unsigned int i = 0; i < n; i++ )
  9. {
  10. coords->push_back( vertex );
  11. }
  12. //创建Delaunay三角网对象
  13. osg::ref_ptr<osgUtil:elaunayTriangulator> dt = new osgUtil:elaunayTriangulator(coords.get());
  14. //生成三角网
  15. dt->triangulate();
  16. //创建几何体
  17. osg::ref_ptr<osg::Geometry> geometry = new osg::Geometry();
  18. //设置顶点数组
  19. geometry->setVertexArray(coords.get());
  20. //加入到绘图基元
  21. geometry->addPrimitiveSet(dt->getTriangles());
  22. //添加纹理
  23. std::string roadTexture(std::string("../data/texture/2-road.jpg"));
  24. osg::Image* image = osgDB::readImageFile( roadTexture );
  25. if (image)
  26. {
  27. const unsigned int decalTex = 0;
  28. osg::StateSet* stateset = new osg::StateSet;
  29. osg::Texture2D* texture = new osg::Texture2D;
  30. texture->setImage(image);
  31. texture->setWrap( osg::Texture::WRAP_S, osg::Texture::REPEAT );
  32. texture->setWrap( osg::Texture::WRAP_T, osg::Texture::REPEAT );
  33. stateset->setTextureAttributeAndModes(decalTex, texture, osg::StateAttribute::ON);

  34. osg::TexEnv* texenv = new osg::TexEnv;
  35. texenv->setMode(osg::TexEnv::BLEND);
  36. texenv->setColor(osg::Vec4(0.8f,0.8f,0.8f,0.8f));
  37. stateset->setTextureAttribute(decalTex, texenv);

  38. geometry->setStateSet(stateset);
  39. }
  40. //添加到叶节点
  41. osg::Geode* geode = new osg::Geode();
  42. geode->addDrawable( geometry.get());
  43. return geode;
  44. }
复制代码
将a1,a2,b1,b2,c1,c2存入coords中,但是现在生成的下图 图二.jpg
所示,请问如何才能生成第一个图那种 网格呢 ?

该用户从未签到

发表于 2011-1-7 18:18:36 | 显示全部楼层
图片看不到,,未经允许不可引用,,QQ空间的图片不能引用的~~~

该用户从未签到

 楼主| 发表于 2011-1-7 18:37:34 | 显示全部楼层
图片看不到,,未经允许不可引用,,QQ空间的图片不能引用的~~~
FlySky 发表于 2011-1-7 18:18

图片传到附件里了,谢谢您!
  • TA的每日心情
    开心
    2019-11-11 10:36
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2011-1-7 22:09:32 | 显示全部楼层
    你可以参考一下osgdelaunay里的那几条路。

    该用户从未签到

    发表于 2011-1-8 08:59:02 | 显示全部楼层
    a1 b1 c1 搞成约束试下
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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