查看: 4491|回复: 4

osg中Delaunay三角剖分,颜色设置的问题

[复制链接]

该用户从未签到

发表于 2015-3-2 18:03:44 | 显示全部楼层 |阅读模式
各位大侠,我现在根据输入点,利用DelaunayTriangulator类生成了三角网,但在生成渐变色的时候出现了问题,跪求指导,小女子不胜感激!
(1)输入点的颜色渲染效果:

点颜色渲染

点颜色渲染

(2)三角网颜色渲染
triangulator.png
两种渲染的点数组和颜色数组是一样的,而三角网渲染与点渲染的颜色不一致
diejia.png

生成三角网结点代码如下:
osg::Node* clScene::createTIN(osg::Vec3Array* parr,osg::Vec4Array* colors)
{
        osg::ref_ptr<osg::Geometry> geom = new osg::Geometry();
        geom->setVertexArray(parr);
        geom->setColorArray(colors);
        geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
        //
        osg::ref_ptr<osgUtil:elaunayTriangulator> rp_ctin = new osgUtil::DelaunayTriangulator;
        rp_ctin->setInputPointArray(parr);
        if (!rp_ctin->triangulate())
        {
                return NULL;
        }
        osg:rimitiveSet * pset = rp_ctin->getTriangles();
        osg::StateSet* pstateset = geom->getOrCreateStateSet();
        osg::ref_ptr<osg::PolygonMode> pmode = new osg::PolygonMode;
        pmode->setMode(osg::PolygonMode::FRONT_AND_BACK,osg::PolygonMode:INE);
                pstateset->setAttribute(pmode.get(),osg::StateAttribute::OVERRIDE | osg::StateAttribute::ON);
        geom->addPrimitiveSet(pset);
        osg::ref_ptr<osg::Geode> _geode = new osg::Geode;
        _geode->getOrCreateStateSet()->setMode(
                GL_LIGHTING,osg::StateAttribute::OFF
                );
        _geode->addDrawable(geom.get());
        return _geode.release();
}

该用户从未签到

 楼主| 发表于 2015-3-3 14:48:07 | 显示全部楼层
三角化后,好像点位置发生了变化,与原来的索引不一致,造成的。我重新获取了数据,重新进行颜色赋值

该用户从未签到

发表于 2017-7-3 16:23:38 | 显示全部楼层
本帖最后由 唐俊_x60up 于 2017-7-14 15:44 编辑

有几个三角网怎么同时放在一个Geometry节点中呢?
  • TA的每日心情
    难过
    2020-7-12 22:09
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-7-6 21:53:00 | 显示全部楼层
    我也遇到这个问题,大佬能给点帮助吗?感谢
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

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

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

    联系我们

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