查看: 1399|回复: 1

重新加载模型

[复制链接]

该用户从未签到

发表于 2012-8-6 21:38:45 | 显示全部楼层 |阅读模式
我在OSG中加载了一个模型,交互操作之后选择重新加载其他的模型,在一个全新的场景中显示模型,每次的加载都在新的场景中显示三维模型,这个要怎么实现啊??
我在交互模型时点选模型上的三角面片,为了实现选中面片的高亮,我用如下代码实现:
  1.         osg::ref_ptr<osg::Geometry> geom = new osg::Geometry();
  2.         osg::ref_ptr<osg::Vec3Array> v = new osg::Vec3Array;
  3.         v->push_back(p0);
  4.         v->push_back(p1);
  5.         v->push_back(p2);
  6.         osg::ref_ptr<osg::Vec4Array> vc = new osg::Vec4Array;
  7.         vc->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f));
  8.         vc->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f));
  9.         vc->push_back(osg::Vec4(1.0f, 0.0f, 0.0f, 1.0f));
  10.         osg::TemplateIndexArray<unsigned int, osg::Array::UIntArrayType, 4, 4>* colorIndex = new osg::TemplateIndexArray<unsigned int, osg::Array::UIntArrayType, 4, 4>();
  11.         colorIndex->push_back(indexList.at(0) - min);
  12.         colorIndex->push_back(indexList.at(1) - min);
  13.         colorIndex->push_back(indexList.at(2) - min);
  14.         geom->setVertexArray(v.get());
  15.         geom->setColorArray(vc.get());
  16.         //geom->setColorIndices(colorIndex);
  17.         geom->setColorBinding(osg::Geometry::BIND_PER_VERTEX);
  18.         geom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLES, 0, 3));
  19.         geode->addDrawable(geom.get());
  20.         root->addChild(geode);
复制代码
但是当我重新加载别的模型的时候程序直接崩溃,调了好久也不知道什么问题,还请大家帮忙啊……先谢过大家了!

该用户从未签到

发表于 2012-8-7 07:59:22 | 显示全部楼层
加载模型在callback 或者 eventhandler中进行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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