Clayman的专栏

It's all about XNA & GPU Programming

用户操作
[即时聊天] [发私信] [加为好友]
claymanID:soilwork
193819次访问,排名381好友0人,关注者14
soilwork的文章
原创 85 篇
翻译 15 篇
转载 0 篇
评论 331 篇
clayman的公告
嘿嘿 ^o^....
最近评论
yfl83:看来xna人气不是很旺,不过加油,多写一些!
ffffk:研究到这的都是高手
jym5596337:我也不知道我怎么就走到了你的路上来了呵呵...
太晕了,我们专业就学的C#... 那我就凑合着用它学习MDX喽,但到了2008你的这个时期,感觉形式有点尴尬,以前的人说 在中国搞软件是 前有微软,后有盗版。
现在是 前有XNA后有C++ ... MDX 学习资料太太太难找了。。太太太少了。 师兄给介绍下你学历路途中的资料目录咯。。。我好找来学习咯。。 感谢哦感谢。。
jym5596337:好象没有继续哇 ...
shapin:ATI的网站有个支持HLSL语法高亮的vs插件,可以支持其他版本,只要修改相应的那个注册表就行
文章分类
收藏
    相册
    blogs
    David Weller
    nVidia Developer blog
    Rico Mariani
    Shawn Hargreaves
    XNA Team blog
    XNA资源
    XNA Creators Club
    ZBuffer
    Ziggyware XNA Resources
    中国XNA开发网
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 学习quaternion的一点点笔记收藏

    新一篇: 《The Complete Effect and HLSL Guide》翻译连载(九)  | 旧一篇: 努力看书中~~

         嗯嗯,继续学习数学中。。。     

     

            3D程序中,通常用quaternion来计算3D物体的旋转角度,与Matrix相比,quaternion更加高效,占用的储存空间更小,此外也更便于插值。在数学上,quaternion表示复数w+xi+yj+zk,其中i,j,k都是虚数单位:

    i*i = j*j = k*k= -1

    i*j = k, j*i = -k

    可以把quaternion看做一个标量和一个3D向量的组合。实部w表示标量,虚部表示向量标记为V,或三个单独的分量(x,y,z)。所以quaternion可以记为[ w, V][ w,(x,y,x]。对quaternion最大的误解在于认为w表示旋转角度,V表示旋转轴。正确的理解应该是w与旋转角度有关,v与旋转轴有关。例如,要表示以向量N为轴,轴旋α度,相对的quaternion应该是:

    q = [ cos(α/ 2) , sin(α/ 2) N]

      =[ cos(α/ 2) , ( sina(α/ 2) Nx, sin(α/ 2)Ny, sin(α/ 2)Nz ) ]

    为了计算方便,一般要求N为单位矢量。对quaternion来说使用四个值就能记录旋转,而不是Matrix所需的十六个值。为什么用quaternion来计算旋转很方便呢?先说过quaternion是一个复数,如果你还记得一点点复数的知识,那么应该知道复数乘法(叉乘)的几何意义实际上就是对复数进行旋转。对最简单的复数p= x + yi来说,和另一个复数q = ( conα,sinα)相乘,则表示把p沿逆时针方向旋转α:

    p’ = pq

    当然,x+yi的形式只能表示2D变换,对3D变换来说就需要使用 quaternion了,而且计算也要复杂一点。为了对3D空间中的一个点px,y,z)进行旋转,需要先把它转换为quaternion形式p = [0, ( x, y, z)],接下来前面讨论的内容,定义q = cos(α/ 2) , sin(α/ 2) N为旋转quaternion,这里N为单位矢量长度的旋转轴,α为旋转角度。那么旋转之后的点p’则为:

           p’ = qpq-1

     

    ps:粗体字母表示矢量 

    ~~~~~~~~~~~~~~~~~~~~~~~呆滞的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

       昨天玩了一下上古卷轴四-湮灭,不错的游戏,画面很精致,各种特效做的相当华丽,特别是里面的树木渲染是我目前看到最好的,可惜我的6600GT跑起来已经有些吃力>.<。不过最不习惯的还是游戏操作,视觉和移动旋转控制方式让我玩一小时就晕的不行,特别是骑上马之后的方向控制,只能用艰难来形容。相比之下wow的操作要舒服的多。另外还有一个比较不爽的地方,虽然游戏开始时可以精细的定制人物外形,可惜大多数游戏时间中,都只能看到人物背面。说实话,人物背影做的实在很丑,我选的女精灵,可是从后面看简直就像个驼背一样-_-b。再者技能栏用起来也极度不方便,只能使用一个按键释放魔法,在多个魔法间切换比较麻烦。毕竟是pc版本的,和ps或xbox版本相比,完全可以再改进一下控制方式。想起前几天有人在gameres论坛讨论要用两个鼠标把FPS游戏的视角和准心分开控制的想法,实际上良好的人机交互方式要比某些华而不实的功能重要的多。当然,也许有人说特殊控制方式也是一款游戏的吸引人的地方之一。但不觉得像无冬之夜那样,为玩家提供多种可选的视觉控制方式是更好的解决方案吗?so,结论是不要让设计不合理的UI毁了一个好游戏。

        

          csdn的blog似乎又出问题了,不能传图片了-_- 。

     

    发表于 @ 2006年12月18日 03:33:00|评论(loading...)|编辑

    新一篇: 《The Complete Effect and HLSL Guide》翻译连载(九)  | 旧一篇: 努力看书中~~

    评论

    #rubbish101 发表于2006-12-18 12:43:00  IP: 218.19.70.*
    呵呵 叫四元数 应该比较好听
    #rubbish101 发表于2006-12-18 12:44:56  IP: 218.19.70.*
    正在学习 写引擎........数学确实挺重要的.......- -!!点乘叉乘矩阵四元数....
    #fannyfish 发表于2006-12-23 10:29:04  IP:
    受教,期待clayman继续写.

    我总觉得自己学数学就像个循环.
    看书明白了,使用时又糊涂了,回头恶补,过段时间不用又傻了.
    #quaternion 发表于2007-05-14 10:16:38  IP: 202.101.11.*
    "对quaternion最大的误解在于认为w表示旋转角度,V表示旋转轴"

    我觉得这个并不是误解, xyz确实表示的是旋转轴,即便乘上了sin(a/2)也是旋转轴向,只是不再是归一化了。w表示的是cos(a/2),因为f(x) = cos(x)在特定区间内(如0-180, 180-360)具有单调性,所以是可以表示角度的。
    #walkking 发表于2007-09-30 16:43:51  IP: 219.140.60.*
    还是没怎么看明白 -_-
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © clayman