查看: 1663|回复: 9

任意轴旋转和.osg文件读取问题

[复制链接]

该用户从未签到

发表于 2011-10-26 15:15:47 | 显示全部楼层 |阅读模式
本帖最后由 knightlixiao 于 2011-10-26 15:23 编辑

我用osg::AnimationPath类控制节点运动。用ControlPoint加入控制点时想要设置一个绕x轴的平行轴旋转,这个平行x轴的轴怎么表示呢?请高手指点,谢谢!


还有个问题,我将一个建好的的节点树保存为*.osg格式文件,下次读取这*.osg文件是,好像不能直接得到他所包含的子节点,请问如果想要得到这些节点,并对其进行操作,怎么实现?(用节点访问器可以实现吗?只有这种方法?)谢谢!

该用户从未签到

发表于 2011-10-26 16:26:20 | 显示全部楼层
您在设置旋转Quat参数时可以直接使用value + axis来构建四元数
NodeVisitor是最方便也最可靠的方法

该用户从未签到

 楼主| 发表于 2011-10-26 21:44:16 | 显示全部楼层
本帖最后由 knightlixiao 于 2011-10-26 21:58 编辑

回复 2# array


    谢谢array老师!这个Value怎么设?假设是与Y_AXIS平行,沿Z轴向正向平移10:Y_AXIS+osg::Vec3(0.0,0.0,10.0) 这么写好像不对?

该用户从未签到

发表于 2011-10-27 10:08:50 | 显示全部楼层
value + axis:旋转值+旋转轴

该用户从未签到

 楼主| 发表于 2011-10-27 14:09:20 | 显示全部楼层
回复 4# tianxiao888


    恩,谢谢。可能是我没说明白,不好意思。
    我的意思假设一个平行于Y轴在Z方向上有个偏移值的一个轴怎么表示,我用向量好像表示不出这种平行于坐标轴的轴。谢谢

该用户从未签到

发表于 2011-10-28 12:13:41 | 显示全部楼层
根据向量运算,平行于某个轴的的向量只是轴乘以某个系数得到。如果是任意轴,你需要自己去找,可以再3dmax里尝试获取

该用户从未签到

发表于 2011-10-28 16:11:20 | 显示全部楼层
先旋转,再平移~~~~~~~~

该用户从未签到

发表于 2011-10-28 17:23:55 | 显示全部楼层
本帖最后由 xuganggm 于 2011-10-28 17:54 编辑

个人看法,不一定对:
在四元数中,Quat 的轴,只有三个分量,因此,它不能表示偏移。直线的方程是由6个分量来表示的。
你需要在旋转轴上取一点(如 (0.0,0.0,10.0)  ),作为新的坐标原点,将原来的坐标先转换为新坐标系中。把转换后的结果用四元数转换一下,然后再转换到原来坐标系中。

Y_AXIS+osg::Vec3(0.0,0.0,10.0) = osg::Vec3(0.0,1.0,10.0),因此是不对的。应该就是 Y_AXIS。因为 Y_AXIS 平移时是平行的,方向在新坐标系中不变

当然可以把矩阵相乘,最后由一个变换矩阵来实现。

该用户从未签到

 楼主| 发表于 2011-10-28 19:33:58 | 显示全部楼层
回复 7# tianxiao888


   谢谢。我是想做一个绕这个平行轴的旋转动画,所以感觉先旋转再平移不行。

该用户从未签到

 楼主| 发表于 2011-10-28 19:37:38 | 显示全部楼层
个人看法,不一定对:
在四元数中,Quat 的轴,只有三个分量,因此,它不能表示偏移。直线的方程是由6个分 ...
xuganggm 发表于 2011-10-28 17:23


这也正是我先考虑的问题,Y_axis+Vec3(0.0,0.0,10.0)得到的并不是与y平行的轴。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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