游戏数学基础

8-04 359 views

推荐阅读 <<3d数学基础:图形与游戏开发>>, 本文会持续更新一些有趣的数学知识


欧拉角

依照Unity, 使用左手坐标系, 左手法则定义旋转正方向

本质:依次以三个相对旋转角度表示的旋转 [保证顺序] [相对旋转]
unity里约定顺序为y-x-z 即按照世界坐标系y, 物体坐标系x, 物体坐标系z顺序旋转.

为什么起始要按照世界坐标系呢?因为旋转必定和世界坐标发生联系,否则也就无法确定一个旋转了…

万向锁

当物体x轴旋转90度时, y还是按照世界坐标的y旋转,而z是按照物体坐标的z旋转, 结果就是z, y旋转效果一样.

方向向量转换欧拉角

--lua example:

function Vector3.Forward2Euler(forward)
	local xAngle = math.asin(-forward.y) * rad2Deg
	return Vector3.New(xAngle, atan2(forward.x, forward.z) * rad2Deg, 0);
end

四元数

本质:绕一根旋转轴旋转一次表示的方向变换

本着一句话说不清楚就不解释的原则,多用在计算旋转的平滑插值,会用就行:)

//Unity相同旋转量的4种表示形式
Quaternion q1 = Quaternion.Euler(90, 0, 0);//欧拉角转换
Quaternion q2 = Quaternion.LookRotation(Vector3.down);//前方朝向下
Quaternion q3 = Quaternion.AngleAxis(90,Vector3.right);//沿x轴旋转90度
Quaternion q4 = Quaternion.FromToRotation(Vector3.up, Vector3.forward);//原来的上方变为了前方

Slerp

偷个懒, 贴个链接 


Unity资源管理和加载

垃圾回收器的压缩操作是托管的堆与非托管的堆的区别所在.—C#高级编程第10版 ...

阅读全文

Unity Default Shader

修改UI/Default shader实现Gray效果 // Custom Gray by change UI/Default Unity built-in shader source. // https://github.com/TwoTailsGames/Unity-...

阅读全文

Unity EventSystem和EasyTouch

UGUI的点击事件本质是发送射线,之前我们使用EasyTouch兼容ugui 响应事件点击出于下面考虑: 1.不用每个响应点击的ui控件上都去挂事件监听脚本, 统一处理2...

阅读全文

欢迎留言