查看: 1304|回复: 5

绘制一个伸缩长短的圆柱体动画问题

[复制链接]

该用户从未签到

发表于 2011-8-28 21:16:21 | 显示全部楼层 |阅读模式
绘制一个伸缩长短的圆柱体动画怎么实现呢?圆柱体的话osg::Cylinder直接给出了实现,但是实现动画的话不知道思路?大家谁能给下比较简单的思路不?

该用户从未签到

 楼主| 发表于 2011-8-28 21:28:48 | 显示全部楼层
刚才想到一个思路,就是自己写一个callback去控制矩阵,但是不清楚这个时间上怎么控制呢?是不是不能直接用时间来做参数,如果矩阵实现的话?

该用户从未签到

发表于 2011-8-28 22:39:00 | 显示全部楼层
把圆柱体加到MatrixTransfomer节点下,设置放缩,用callback控制放缩值。

该用户从未签到

 楼主| 发表于 2011-9-1 10:31:00 | 显示全部楼层
本帖最后由 a456759 于 2011-9-1 11:04 编辑

回复 3# x_wp

我实现了之后发现,圆柱体是向上下两个方向扩展(在回调中放大z轴方向),而我希望的是圆柱体高度正方向不断增大,这个怎么实现呀?!!!完全没有思路呢。。。

该用户从未签到

发表于 2011-9-1 19:47:08 | 显示全部楼层
建议使用osg:ositionAltitudeTransform,通过调用setPivotPoint()设置圆柱体的坐标原点,将坐标原点平移到圆柱体的一端就可以实现圆柱体只向一个方向增长。圆柱体的动画可以在节点更新回调中通过调用setPosition()、setAttitude()、setScale()实现。变化量根据需要进行计算。

该用户从未签到

发表于 2011-9-1 22:57:49 | 显示全部楼层
用MatrixTransform也可以实现,定义矩阵M1用于平移圆柱体高度的-半
,再定义矩阵M2用于旋转(如果需要的话),定义矩阵M3用于缩放,最后M3*M2*M1设置到MatrixTransform,搞定。
就是个数学问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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