• 大小: 5KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-12
  • 语言: 其他
  • 标签: OSG  

资源简介

osg用约束线去掉想去掉三角网的区域,实现地形的裁剪和编辑,方便灵活。

资源截图

代码片段和文件信息

/**********************************************************
*Write by FlySky
*zzuxp@163.com  http://www.OsgChina.org   
**********************************************************/

#include 
#include 

#include 
#include 
#include 
#include 

#include 
#include 

#include 

#include 
#include 


#include “Tex.h“



int main()
{

osg::ref_ptr viewer = new osgViewer::Viewer();
//方便查看在多边形之间切换,以查看三角网
viewer->addEventHandler( new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet()) );

osg::ref_ptr root = new osg::Group();

//画约束线
osgUtil::DelaunayConstraint * dc=new osgUtil::DelaunayConstraint;
//std::ostringstream what;
    osg::ref_ptr bounds = new osg::Vec3Array();
bounds->push_back(osg::Vec3(600041461-32.0));
bounds->push_back(osg::Vec3(600641461-32.0));
bounds->push_back(osg::Vec3(600641461+32.0));
bounds->push_back(osg::Vec3(600041461+32.0));

dc->setVertexArray(bounds);
dc->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::LINE_LOOP04) );

//创建顶点数组
osg::ref_ptr coords = new osg::Vec3Array();

//计算顶点数组的大小
 int n;
 n = sizeof(vertex)/sizeof(float[3]);

//添加顶点数据
for( unsigned int i = 0; i < n; i++ )
{
coords->push_back( osg::Vec3(vertex[i][0] vertex[i][1] vertex[i][2] ));
}

//创建Delaunay三角网对象
osg::ref_ptr dt = new osgUtil::DelaunayTriangulator(coords.get());
 dt->addInputConstraint(dc);
//生成三角网
dt->triangulate();
dt->removeInternalTriangles(dc);
//创建几何体
osg::ref_ptr geometry = new osg::Geometry();
//设置顶点数组
geometry->setVertexArray(coords.get());

//加入到绘图基元
geometry->addPrimitiveSet(dt->getTriangles());

//添加到叶节点
osg::ref_ptr geode = new osg::Geode();
geode->addDrawable( geometry.get());

root->addChild(geode.get()) ;
//osgDB::writeNodeFile(*(root)“SJW.osg“);

//优化场景数据
osgUtil::Optimizer optimizer ;
optimizer.optimize(root.get()) ;

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

viewer->realize();
viewer->addEventHandler(new osgViewer::WindowSizeHandler);
viewer->run();



return 0 ;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2496  2016-01-15 17:38  main.cpp

     文件      46586  2015-03-06 11:20  Tex.h

----------- ---------  ---------- -----  ----

                49082                    2


评论

共有 条评论