【ARToolkit】模型的x,yz轴的横移变化

       ARToolKit 中摄像头与虚拟物体之间存在一个对应的矩阵变换,正是由这个矩阵变换,所以才在摄像头与标识卡上的虚拟物体之间建立了联系,如下图,摄像头和标识卡之间有着x,y,z的坐标轴的对应变换。



其中能够对应的原因ARToolKit 提供了标识在摄像机的坐标系统中的位置,使用 opengl 矩阵系统计算出虚 拟物体的位置。


坐标系统存在于每一个ARToolkit程序之中,我们以之前文章中提到的 simpleTest 程序为例。打开它,把下面这句代码加在 arGetTransMat 后: printf("%f %f %f\n",patt_trans[0][3],patt_trans[1][3],patt_trans[2][3]); 

重新编译,就会出现一个这样的图


其中运行程序。注意输出值。如果把标识往左移动,第一个值就会增加,往上 移动,第二个值就减小,往前移动最后一个值也会增加输出的值与这些坐标系统相对应。标识坐标系统有着和 opengl 坐标系统一样的方位。 因此任何应用于与标识关联的物体的转换都应遵循 opengl 的转换规则,上述显示的值都是根据摄像头的坐标系来确定的,正负是以原点为界限,这个坐标系与数学中的坐标系理解类似。

下面就将介绍如何改变模型出现在标识卡上的位置。

还是以simpletest为例:

比如说,如果不想 把方块显示在标识坐标系统的中心,而是让它显示在顶部,可以把下面的代码: 

glTranslatef(0.0,0.0,25.0); 

代替为:

 glTranslatef(0.0,20.0,25.0); 

其中第一幅图为glTranslatef(0.0,0.0,25.0); 时候的图像

第二幅图为 glTranslatef(0.0,20.0,25.0); 时候的图像

glTranslatef(float x,float y, float z);分别对应着标识卡上的坐标系,只需要改变x,y,z的值就能改变虚拟物体出现在标识卡上的位置。

下面举几个例子,例如代码为:glTranslatef( 50.0, 0.0, 25.0 )的时候,是这样的


再把代码改为:glTranslatef( 100.0, 0.0, 25.0 )的时候,出现的图则是这样的


只需要改变x,y,z的值就能改变虚拟物体出现在标识卡上的位置

其中为glTranslatef( 0.0, 0.0, 0.0 )时,是这样的效果


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值