對Unity3D 中Quaternion一些整理

2021-08-21 05:43:42 字數 1904 閱讀 7094

對unity3d 中quaternion一些整理

quaternion 中文是四元數。記得計算機圖形學中,在x,y,z的基礎上新增了新的乙個w。這樣算是所謂的四元數。具體的解釋可以參考,百科等。

quaternion.angleaxis ,angleaxis角軸

繞axis軸,旋轉angle角度。例如:繞y軸旋轉30度。

transform.rotation = quaternion.angleaxis(30,vector3.up);代表的是y軸正方向。

quaternion.angle  返回的是 a 和 b 之間的角度。

float angle = quaternion.angle(transform.rotation,target.rotation);//返回的是transform和target兩個之間的角度

quaternion.dot 兩個旋轉之間的點乘。點乘即所謂的內積,學過數學的都知道內積。簡單點就是對應座標相乘在相加。

print(quaternion.dot((transform.rotation,target.rotation));

quaternion.eularangle 返回表示旋轉的尤拉角度。繞z軸旋轉euler.z度,繞x軸旋轉euler.x度,繞y軸旋轉euler.y度。這樣的順序,就是繞軸旋轉的角度

var rotation = quaternion.identity;

rotation.eulerangles = new vector3(0,30,0) ;

quaternion.eular 返回表示旋轉的尤拉角度。繞z軸旋轉euler.z度,繞x軸旋轉euler.x度,繞y軸旋轉euler.y度。這樣的順序,可以理解成兩個向量之間的角度。

quaternion.euler(vector3(0,30,0));

quaternion.fromtorotation 旋轉乙個變換的其中乙個軸,即旋轉乙個軸到另乙個軸的位置。
quaternion.identity. 無旋轉。

quaternion.lerp(from,to,float t).通過t值from 向to之間插值,並且規範化結果。

transform.rotation = quaternion.lerp(from.rotationg,to.rotation,time.deltatime);

static function slerp(from:quaternino,to:quaternion,t:float); 球形插值,通過t值from向to 之間插值。

transform.rotation = quaternion.slerp(from.rotation,to.rotation,time.delttime);

quaternion.lookrotation  注釋旋轉  建立乙個旋轉,沿著forward(z軸)並且頭部沿著upwards(y軸)的約束注視。也就是建麗乙個旋轉,使z軸朝向view,y軸朝向up

transform.rotation = quaternion.lookrotation(target.position-transform.position);

注意:在檢視面板中顯示的rotation的值就是euler值,但是你要是在**中寫到 transform.rotation.這時獲取的值是四元數。這時你要是想將四元數轉換成rotation,就要進行一系列的計算。但是你如果想直接獲取物體的角度。這時,你可以使用transform.rotation.eulerangles獲取此時的角度。即旋轉的角度。

對unity3d 中quaternion一些整理

Unity3D開發(九) Unity3d流光效果

遊戲開 壇 hello game 遊戲開發群 201276069 之前曾經注意過material 中紋理的屬性都有 tiling 和offset 但沒有深究過其用途,今天才知道竟然可以利用 offset做uv 動畫,從而完成各種有趣的動畫,比如流光效果!流過效果即通常一條高光光在物體上劃過,模擬高光...

unity3D 中Quaternion旋轉演算法

quaternion.euler x,y,z 返回乙個繞x軸旋轉x度再繞y軸旋轉y度再繞z軸旋轉z度的quaternion,因此quaternion.euler 0,90,0 返回乙個繞y軸旋轉90度的旋轉操作。quaternion作用於vector3的右乘操作 返回乙個將向量做旋轉操作後的向量。因...

Unity3d中3D Text對模型的穿透顯示

原帖 昨晚,好友在 裡問我在unity3d中使用3d text,不想讓其穿透模型顯示,即想讓場景中的3d text與模型有正確的遮擋關係,怎麼解?今早谷歌上查了查,明白了原因,因為3d text的預設材質的shader是gui text shader 自然就有了gui的穿透顯示的特性 而且不可以去手...