查看: 1521|回复: 6

新手求助:有关模仿osgdelaunay源码中的问题~

[复制链接]

该用户从未签到

发表于 2012-8-19 18:10:35 | 显示全部楼层 |阅读模式
osg::ref_ptr<osg::Group>makedelaunay(osg::ref_ptr<osg::Vec3Array>bounds)
{
        osg::ref_ptr<osg::Group> grp= viewer->getSceneData()->asGroup();
        osg::ref_ptr<osg::Geode> geode=new osg::Geode;
        osg::ref_ptr<osgUtil:elaunayTriangulator> trig=new osgUtil::DelaunayTriangulator();


        osg::ref_ptr<osg::Geometry> gm=new osg::Geometry;
        trig->setInputPointArray(bounds);


        osg::Vec3Array *norms=new osg::Vec3Array;
        trig->setOutputNormalArray(norms);

        trig->triangulate();

        gm->addPrimitiveSet(trig->getTriangles());
        gm->setNormalArray(trig->getOutputNormalArray());
        gm->setNormalBinding(osg::Geometry::BIND_PER_PRIMITIVE);
        osg::StateSet *stateset=geode->getOrCreateStateSet();

        osg::ref_ptr<osgUtil::DelaunayConstraint> dc=new osgUtil::DelaunayConstraint;
        int vmax=bounds->getNumElements();
        dc->setVertexArray(bounds);
        dc->addPrimitiveSet(new osg::DrawArrays(osg:rimitiveSet:INE_LOOP,0,vmax) );

        geode->addDrawable(gm.get());

        trig->addInputConstraint(dc.get());
        trig->removeInternalTriangles(dc.get());

        return grp;
}
我最近阅读osgdelaunay的源码后,也写了个例子中类似挖洞的例子,大体是通过鼠标点击形成的区域后,扣掉;但模仿的代码总是提示栈溢出,我检查了点数组队列也没问题啊,不知如何是好了,请各位高手救救~
     PS:1、代码中的‘bounds’为鼠标点击后存入的数组  2、附上一张源码运行后的截图

源码效果

源码效果

该用户从未签到

 楼主| 发表于 2012-8-19 18:13:52 | 显示全部楼层
思路是先通过鼠标点击的几个点形成三角网,完后通过约束三角网将其挖掉,即removeInternalTriangles方法

该用户从未签到

发表于 2012-8-19 18:30:14 | 显示全部楼层
我也是新人,多学习学习

该用户从未签到

 楼主| 发表于 2012-8-22 14:12:47 | 显示全部楼层
MN.jpg 跪求高手求指导~挑了两天但还是异常,

该用户从未签到

发表于 2012-9-27 17:53:26 | 显示全部楼层
mxl12315 发表于 2012-8-22 14:12
跪求高手求指导~挑了两天但还是异常,

新人!求一份osgdelaunay源码!!!找了很多地方没找到!
snkJC08@163.com

该用户从未签到

 楼主| 发表于 2012-9-27 18:09:58 | 显示全部楼层
sunnk 发表于 2012-9-27 17:53
新人!求一份osgdelaunay源码!!!找了很多地方没找到!

osgdelaunay.cpp (58.44 KB, 下载次数: 306)

该用户从未签到

发表于 2012-9-28 09:15:08 | 显示全部楼层
mxl12315 发表于 2012-9-27 18:09

非常感谢!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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