注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

fruity的共享空间

各种蛋疼

 
 
 

日志

 
 

“MAX Script第一弹”补遗  

2007-04-14 21:44:41|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天某胖子拜读了我fruity昨天那篇文章,虽然此人在编程界造诣深厚,而且还是某公司主力UI程序员之一“MAX Script第一弹”补遗 - fruityman - fruityman 的博客,不过他对四元数的计算也是一知半解,让我对自己的数学水平又充满了信心,不过他还是提供给我一个有用的函数来解决四元数计算的问题,废话少说,请看:

slerp

Returns a spherical linear interpolation of UNIT quaternions. As number goes from 0 to 1, the returned value goes from start_quat to end_quat.

这不正是我想要的东西吗。。。这样代码就可以简单的改为:
z1=inverse ru.transform.rotation
z2=rf.transform.rotation
a=slerp z1 z2 0.5
b=quattoeuler a
c=degtorad b.z
pi-c
嗯,调试一次成功,看来autodesk还是很厚道的,提供了这么有用的函数。
对了,为什么第一行要加那个inverse函数呢,其实我最初也没有想法,只是在调试代码时候无意加上去的。虽然蒙对了,不过某胖子以此为契机,在他的blog上大开数学讲座,拿我这个脚本解释inverse的工作原理,|| 囧rz ||嗯,他的解释我看上去让人云里雾里,只好到3ds max的帮助里找了一段比较有信服力的说法:
在矩阵数学运算中,反值是一个值集,将该值集乘以原始值集,可以将值设置回原点。对于旋转,这意味着可以通过将反值乘以旋转值,确定对象在世界空间中的方向。
矩阵中存储的对象旋转值总是相对于世界坐标系,即使该对象已链接到场景中的另一个对象。与位置反值示例相同,可以通过将第一个对象的反值乘以第二个对象的旋转矩阵值,找到一个对象相对于另一个对象的旋转。3ds Max 使用此方法确定链接对象与其父对象的旋转偏移。偏移是在轨迹视图中显示的值。可以使用同样的方法找到手部控制与下臂骨骼的关系,即使他们没有链接在一起。
矩阵乘法遵循一组不同的规则,所以,无法通过轨迹视图中看到的旋转值或四元数本身直接看出旋转值的反值。幸运的是,可以在脚本中使用 inverse 函数找到此值。
看来就是这么回事了“MAX Script第一弹”补遗 - fruityman - fruityman 的博客(谜之音:喂,你到底明白没?)大概意思应该就是由于自身坐标系和父子链接的原因,必须先让父物体回归到原点,这样子物体计算出来的相对于父物体的角度正是他们的夹角。
如果各位看官还有不同的看法,欢迎发表您的意见。
  评论这张
 
阅读(120)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017