3d数学
cbbbc
这个作者很懒,什么都没留下…
展开
-
法线的归一化和法线视图变换矩阵的正确设置
一、 1、法线归一化的一个意思是: 通过叉乘得到一个面的面法线,然后进行归一化的目的是,求得单位长度的向量,就是说,法线向量的x,y,z都要除以向量长度。因为法线长度和面积成正比,但光照不能随面积变化,所以取一个单位值。当然点法线需要考虑通过该点的所有面的面法线。 2、法线的处理还有一个问题是:人们容易想到对法线向量,可以像模型顶点向量那样,通过乘以模型视图变换矩阵得到平转载 2017-04-08 12:09:18 · 1576 阅读 · 0 评论 -
Unity3D中的Quaternion(四元数)
今天,我来总结一下Unity中的四元数得使用。我也是初学,就写的比较飘逸,难免有错误! 四元数的概念 四元数,这是一个图形学的概念,一般没怎么见过,图形学中比较常见的角位移的表示方法有“矩阵”、“欧拉角”、“四元数”这三种。可以说各有各的优点和不足,不同的场合用不同的方法。其中四元数的优点有:平滑插值、快速连接、角位移求逆、可以与矩阵形式快速转换、仅用四个数表示。不过,转载 2017-05-27 20:48:06 · 658 阅读 · 0 评论 -
unity3d四元数和旋转矩阵
一 四元数Quaternion中存放了x,y,z,w四个数据成员,可以用下标来进行访问,对应的下标分别是0,1,2,3。主要介绍几个函数 根据两个向量计算出旋转量,计算出来的旋转量为从fromDirection旋转到toDirection的旋转量static Quaternion FromToRotation(Vector3 fromDi转载 2017-05-28 15:18:00 · 911 阅读 · 0 评论 -
unity 旋转欧拉角 万向锁 解释
万向锁 一直困惑我很久。。。。原因出在这里,我以为欧拉角旋转是以模型坐标(齐次坐标系)为旋转轴。问题就来了,无论旋转那个轴,其它两个轴也会相应的变化,下面看图:根据上面的说明两个旋转面(圆圈)怎么会共面,让我迷糊。假设共面,那这两个旋转面的法线应该是旋转轴,要想两个面共面,那旋转轴肯定平行的。但问题是以模型坐标(齐次坐标系)为旋转轴,无论旋转那个轴,其它两个轴也会相应的变化,而转载 2017-08-26 18:34:01 · 744 阅读 · 0 评论 -
游戏动画中欧拉角与万向锁的理解
我在2009年5月份左右拜读了《3D数学基础:图形与游戏开发》,当时对欧拉角中万向锁的概念一直是百思不得其解,也从未遇到过这种情况。书上有这样一句话:“如果您从来没有遇到过万向锁情况,你可能会对此感到困惑,而且不幸的是,很难在本书中讲清楚这个问题,你需要亲身经历才能明白。”今天我用3个多小时的时间再次回想了一下这个问题,总算想明白了,现在把思考的结果分享给大家. 下面我想说明四个问转载 2017-08-26 18:34:49 · 492 阅读 · 0 评论 -
万向节锁--简单解释
以前一直以为自己已经清楚了这是怎么回事,也没去细想,然而最近又遇到角度的问题,发现还是迷糊,于是又静下心来看了网上的相关文档,并以直白简单的方式分享一下。还是以unity为例吧首先,万向节锁只发生于以模型自身坐标系旋转的情况下,代码就是 transform.localEulerAngles = xxx 这种,而 transform.eulerAngles = xxx这种是不会有问题的转载 2017-08-26 18:35:24 · 796 阅读 · 0 评论 -
关于欧拉角与万向锁的理解
要理解万向锁,如果从定义上去解释,那理解起来会非常困难,我们不如从万向锁会导致什么问题入手。万向锁其实是就是导致物体的旋转不按我们的意愿进行转动,如一个人体,从站立到平躺,只需一个轴的动动可以完成,但由于万向锁,这个轴被锁定了,所以需要另外两个轴的运动才可以辅助完成转动,目的一样能达到,但这个过程的运动变得和我们想象的运动不相符,所以万向锁并不是不能表示空间中的某个角位移,而是因为万向锁,转载 2017-08-26 18:36:22 · 908 阅读 · 0 评论