查看: 1875|回复: 7

三角网函数Delaunay,求助!!!

[复制链接]

该用户从未签到

发表于 2012-7-22 20:58:25 | 显示全部楼层 |阅读模式
我买了OpenSceneGraph三维渲染引擎编程指南,其中程序清单4-6中,关于delaunay三角的绘制中,
为什么我用三角网会这样呢 中间被灰色填充了 也是这本书上的程序啊……
求帮助!!!!!!!!!!!! 捕获.PNG
#include <osgViewer/Viewer>
#include <osgViewer/ViewerEventHandlers>

#include <osg/Node>
#include <osg/Geode>
#include <osg/Group>
#include <osg/Geometry>

#include <osgDB/ReadFile>
#include <osgDB/WriteFile>

#include <osgGA/StateSetManipulator>
#include <osgUtil/Optimizer>
#include <osgUtil/DelaunayTriangulator>

//#include "Tex.h"//用的是\examples\osghangglide\terrain_coords.h里的数据
#terrain_coords.h
int main()
{
        osg::ref_ptr<osgViewer::Viewer> viewer=new osgViewer::Viewer();
        viewer->addEventHandler(new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet()));
        osg::ref_ptr<osg::Group>root=new osg::Group();

        osg::ref_ptr<osg::Vec3Array>coords=new osg::Vec3Array();

        unsigned int n= sizeof(vertex)/sizeof(float[3]);

        for(unsigned int i=0;i<n;i++)
        {
                coords->push_back(osg::Vec3(vertex[0],vertex[1],vertex[2]));

        }

        osg::ref_ptr<osgUtil:elaunayTriangulator>dt=new osgUtil:elaunayTriangulator();

        dt->triangulate();

        osg::ref_ptr<osg::Geometry>geometry -new osg::Geometry();
        geometry->setVertexArray(coords.get());
        geometry->addPrimitiveSet(dt->getTriangles());

        osg::ref_ptr<osg::Geode>geode=new osg::Geode();

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

        root->addChild(geode.get());

        osgUtil::Optimizer op;
        op.optimize(root.get());

        viewer->setSceneData(root.get());

        viewer->realize();
        viewer->run();


        return 0;
}

该用户从未签到

发表于 2012-7-23 08:23:54 | 显示全部楼层
设置多边形模式为line

该用户从未签到

 楼主| 发表于 2012-7-23 16:19:19 | 显示全部楼层
书上一样的程序,结果怎么差别这么大呢?
在哪里设置模式啊?望专家详解……

该用户从未签到

发表于 2012-7-23 16:59:24 | 显示全部楼层
本帖最后由 木子匕 于 2012-7-23 17:01 编辑

terrain_coords.h 这个文件应该怎么加进去 !

好吧!以后贴代码用代码模式!话说冒号后经常变为QQ表情啊!

该用户从未签到

发表于 2012-7-23 17:05:15 | 显示全部楼层
yejunjobs 发表于 2012-7-23 16:19
书上一样的程序,结果怎么差别这么大呢?
在哪里设置模式啊?望专家详解……

其实你按W就可以在实体,线,点之间切换了

该用户从未签到

发表于 2012-7-23 17:06:09 | 显示全部楼层
  viewer->addEventHandler(new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet()));

这个函数你没看书的注释吗??就是干这个用的!话说我COPY的代码怎么什么都看不到咯!

求解

该用户从未签到

发表于 2012-7-23 17:12:59 | 显示全部楼层
终于和你的一模一样了额!

你这是怎么COPY代码的!几个地方都不对!

该用户从未签到

 楼主| 发表于 2012-7-23 17:34:40 | 显示全部楼层
谢谢啊!
十分感谢!用W切换!!!!!!!!!!
新手就是麻烦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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