查看: 1314|回复: 7

【已解决】请教大伙一个变形的问题

[复制链接]

该用户从未签到

发表于 2013-5-28 15:34:57 | 显示全部楼层 |阅读模式
本帖最后由 lbdzjzlzq098 于 2013-5-29 13:46 编辑

假如说我有一段标准件,想将他类似于下图的一个形变,请问下大伙OSG有没有什么好的方法?

7F`0Y[7VC_6Y3{X085MI(HE.jpg

画的比较丑敬请见谅,大致意思就是由一个类似长方体的一端平移后形成了新的平行四边形的三维图。

该用户从未签到

发表于 2013-5-28 16:48:27 | 显示全部楼层
或者是提前做好了的MorphGeometry 或者是用 顶点更新方法

该用户从未签到

 楼主| 发表于 2013-5-29 11:11:37 | 显示全部楼层
liuzhiyu123 发表于 2013-5-28 16:48
或者是提前做好了的MorphGeometry 或者是用 顶点更新方法

多谢版主您的回复,按照您的提示我尝试了一下端点的操作:

代码如下:
  1.         GeometryFinder finder;
  2.         nodeB->accept(finder);
  3.         osg::ref_ptr<osg::Geometry> gg =finder._geom;
  4.         osg::Vec3Array* vertices = dynamic_cast<osg::Vec3Array*>( gg->getVertexArray() );
  5.         if(vertices)
  6.         {
  7.                 for ( osg::Vec3Array::iterator itr=vertices->begin(); itr!=vertices->end(); ++itr )
  8.                 {
  9.                          itr->x() +=10;
  10.                 }
  11.                 vertices->dirty();
  12.         }
复制代码
效果图上就一根铁轨被移动了下位置,请问这个里面Vec3Array 想遍历所有的顶点要怎么样子改的?没有学过C++对这个vecArray定义真看不懂。
JRFW5@TL~E[~6CJEB(V_7YD.jpg

该用户从未签到

发表于 2013-5-29 11:22:33 | 显示全部楼层
osg中提供的Vec3Array  自己去看一下定义就好了 就是一个vector 模板

该用户从未签到

 楼主| 发表于 2013-5-29 11:25:00 | 显示全部楼层
liuzhiyu123 发表于 2013-5-29 11:22
osg中提供的Vec3Array  自己去看一下定义就好了 就是一个vector 模板

那为什么我遍历后就一个物体移动了,我debug了一下那个Node里面就只有一个Geometry
但是把Geometry取Vec3Array  遍历怎么就只有一个轨道移动了呢。。。

该用户从未签到

发表于 2013-5-29 12:14:43 | 显示全部楼层
这个就是您自己程序的问题了,其他的什么都猜不出来

该用户从未签到

 楼主| 发表于 2013-5-29 13:30:28 | 显示全部楼层
liuzhiyu123 发表于 2013-5-29 12:14
这个就是您自己程序的问题了,其他的什么都猜不出来

嗯,看了下是GeometryFinder的问题
  1.         osg::ref_ptr<osg::Node> nodeB = osgDB::readNodeFile("model//test_B.IVE");
  2.         int zz =nodeB->asGroup()->getNumChildren();
复制代码
发现zz是41,但是在GeometryFinder里面用的是geode.getNumDrawables(),只获取到了1个对象!
麻烦版主了,再次十分感谢!

该用户从未签到

 楼主| 发表于 2013-5-29 16:02:22 | 显示全部楼层
9MI%4)EWWC)ZG8Q0QJ3Q9IY.jpg

现在感觉三维真的很强大啊,把形变后的图分享下,只是要注意的是vecarray取出来的xyz值和osg的xyz方向不一致,貌似和openGL的一致。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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