查看: 2493|回复: 4

get vertex point data ???

[复制链接]

该用户从未签到

发表于 2008-6-12 23:02:22 | 显示全部楼层 |阅读模式
怎样从,读入的 *.osg 中得到顶点的数据??
能改变其数据吗,就是变形。

该用户从未签到

发表于 2008-6-13 00:45:01 | 显示全部楼层




  1. class VertexExtractor : public osg::NodeVisitor
  2. {
  3. public:
  4. osg::ref_ptr<osg::Vec3Array> extracted_verts;
  5. VertexExtractor() : osg::NodeVisitor(osg::NodeVisitor::TRAVERSE_ALL_CHILDREN)
  6. {
  7. extracted_verts = new osg::Vec3Array;
  8. }

  9. void apply( osg::Geode& geode )
  10. {

  11. for( unsigned int i=0; i < geode.getNumDrawables(); ++i )
  12. {
  13. osg::Geometry* geom = dynamic_cast<osg::Geometry*>( geode.getDrawable(i) );
  14. if( !geom )
  15. continue;

  16. osg::Vec3Array* verts = dynamic_cast<osg::Vec3Array*>( geom->getVertexArray() );
  17. if( !verts )
  18. continue;

  19. extracted_verts->insert( extracted_verts->end(), verts->begin(), verts->end() );
  20. }
  21. }
  22. };

复制代码




上面的代码就可以得到顶点~~~~~改变之后重新绘制就可以了~~~~~

该用户从未签到

 楼主| 发表于 2008-6-13 03:12:11 | 显示全部楼层

< --------------------------------- >

这么晚,还没睡啊。
先,谢谢,这么快的回复。^^

该用户从未签到

发表于 2008-6-13 08:59:52 | 显示全部楼层
学习了,原来是这样取得顶点数据的
不过提个小建议给FlySky版主,贴代码的时候用[code]而不用[quote]效果会更好,呵呵
  1. osg::ref_ptr<osg::Vec3Array> extracted_verts;
复制代码
这样似乎就不会乱码了

[ 本帖最后由 soda 于 2008-6-13 09:06 编辑 ]

该用户从未签到

发表于 2008-6-13 10:27:48 | 显示全部楼层
学习了,原来是这样取得顶点数据的
不过提个小建议给FlySky版主,贴代码的时候用[code]而不用[quote]效果会更好,呵呵
  1. osg::ref_ptr<osg::Vec3Array> extracted_verts;
复制代码
这样似乎就不会乱码了

[ 本帖最后由 soda 于 2008-6-13 09:06 编辑 ]


谢谢你的建议,不过,我感觉差不多,以后会的,,,,呵呵~~~~~~~~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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