查看: 1400|回复: 3

关于KdTree的问题

[复制链接]

该用户从未签到

发表于 2010-7-2 13:26:59 | 显示全部楼层 |阅读模式

osg::ref_ptr<osg::Geometry> geom=new osg::Geometry;

osg::ref_ptr<osg::Vec3Array> v=new osg::Vec3Array;
geom->setVertexArray( v.get() );
v->push_back( osg::Vec3( -1.f, 0.f, -1.f ) );
v->push_back( osg::Vec3( 1.f, 0.f, -1.f ) );
v->push_back( osg::Vec3( 1.f, 0.f, 1.f ) );
v->push_back( osg::Vec3( 1.f, 0.f, 1.f ) );
v->push_back( osg::Vec3( -1.f, 0.f, 1.f ) );
v->push_back( osg::Vec3( -1.f, 0.f, -1.f ) );

osg::ref_ptr<osg::Vec4Array> c = new osg::Vec4Array;
geom->setColorArray( c.get() );
geom->setColorBinding( osg::Geometry::BIND_PER_VERTEX );
c->push_back( osg::Vec4( 1.f, 0.f, 0.f, 1.f ) );
c->push_back( osg::Vec4( 0.f, 1.f, 0.f, 1.f ) );
c->push_back( osg::Vec4( 0.f, 0.f, 1.f, 1.f ) );
c->push_back( osg::Vec4( 1.f, 0.f, 0.f, 1.f ) );
c->push_back( osg::Vec4( 0.f, 1.f, 0.f, 1.f ) );
c->push_back( osg::Vec4( 0.f, 0.f, 1.f, 1.f ) );

osg::ref_ptr<osg::Vec3Array> n = new osg::Vec3Array;
geom->setNormalArray( n.get() );
geom->setNormalBinding( osg::Geometry::BIND_OVERALL );
n->push_back( osg::Vec3( 0.f, -1.f, 0.f ) );

geom->addPrimitiveSet(
  new osg:rawArrays( osg:rimitiveSet::TRIANGLES,0,6 ) );

osg::ref_ptr<osg::KdTree> kd = new osg::KdTree();
osg::KdTree::BuildOptions op;
if (kd->build( op, geom.get() ))
{
  cout<<"KdTree创建成功!!\n";
  if(geode->addDrawable(new osg::ShapeDrawable(kd.get())))
  {
   cout<<"添加Drawable成功!!\n";
  }
}

为什么没有绘制出来任何东西呢??

该用户从未签到

发表于 2010-7-2 13:50:46 | 显示全部楼层
这个kdTree不是用户调用的吧,是系统内部场景筛选用的好像

该用户从未签到

发表于 2010-7-5 08:25:28 | 显示全部楼层
KdTree不是可绘制的对象,而是用于实现场景的Kd树划分,进而提升碰撞检测的速度

该用户从未签到

 楼主| 发表于 2010-7-5 10:48:22 | 显示全部楼层
谢谢各位大师的解答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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