本教程以精准掌握3D计算公式为核心,系统梳理从基础原理到实战应用的全流程内容,深入解析核心算法的数学本质与推导逻辑,结合具体案例演示,帮助读者逐步构建知识体系,实现从理论理解到实际操作的跨越,通过一步到位的学习路径,高效掌握3D计算的核心算法,快速应用于建模、渲染等工程场景,解决实际问题。
在3D图形开发、游戏设计、AR/VR建模等领域,3D计算公式是构建虚拟世界的“数学骨架”,无论是模型的位置变换、光影投射,还是碰撞检测、视角渲染,都离不开精准的数学计算,许多开发者常因公式理解偏差、坐标系混淆或精度问题,导致模型变形、渲染错误或物理效果失真,本教程将从坐标系基础到高级变换矩阵,从向量运算到投影算法,用“精准100%”的标准拆解核心公式,辅以实战案例,帮你彻底掌握3D计算的底层逻辑。
3D计算的核心基础:坐标系与坐标变换
3D空间中的所有计算,都建立在坐标系之上,理解不同坐标系及其转换关系,是掌握3D公式的第一步。
1 常用坐标系定义
- 世界坐标系(World Coordinate System):3D场景的“全局坐标系”,用于描述所有物体的绝对位置,原点通常设为场景中心,轴向为X(右)、Y(上)、Z(前,右手系)。
- 局部坐标系(Local Coordinate System):物体自身的“相对坐标系”,原点位于物体中心(如模型中心),轴向与物体绑定(如角色模型的“前”方向为局部Z轴)。
- 相机坐标系(Camera Coordinate System):以相机为原点的坐标系,原点为相机位置,Z轴指向观察方向(右手系中,Z轴负方向为视线方向),用于将3D场景投影到2D屏幕。
2 坐标变换公式:从局部到世界
物体从局部坐标系转换到世界坐标系,需通过变换矩阵实现,核心是缩放(Scale)→ 旋转(Rotation)→ 平移(Translation)(顺序不可逆,矩阵乘法不满足交换律)。
(1)缩放矩阵(Scale Matrix)
若物体在局部坐标系中的缩放比例为 ( (s_x, s_y, s_z) ),则缩放矩阵 ( S ) 为:
[
S = \begin{bmatrix}
s_x & 0 & 0 & 0 \
0 & s_y & 0 & 0 \
0 & 0 & s_z & 0 \
0 & 0 & 0 & 1 \
\end{bmatrix}
]
作用:将物体顶点坐标按比例缩放(如 ( (1,2,3) ) 缩放 ( (2,2,2) ) 后变为 ( (2,4,6) ))。
(2)旋转矩阵(Rotation Matrix)
旋转需指定旋转轴和旋转角度(右手定则:拇指指向旋转轴正方向,四指弯曲方向为旋转方向),以下是绕X、Y、Z轴旋转 ( \theta ) 角度的矩阵(单位:弧度):
-
绕X轴旋转(俯仰角):
[ R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 & 0 \ 0 & \cos\theta & -\sin\theta & 0 \ 0 & \sin\theta & \cos\theta & 0 \ 0 & 0 & 0 & 1 \ \end{bmatrix} ] -
绕Y轴旋转(偏航角):
[ R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta & 0 \ 0 & 1 & 0 & 0 \ -\sin\theta & 0 & \cos\theta & 0 \ 0 & 0 & 0 & 1 \ \end{bmatrix} ] -
绕Z轴旋转(滚转角):
[ R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 & 0 \ \sin\theta & \cos\theta & 0 & 0 \ 0 & 0 & 1 & 0 \ 0 & 0 & 0 & 1 \ \end{bmatrix} ]
注意:复合旋转需按顺序相乘(如先绕Y轴旋转,再绕X轴旋转,矩阵为 ( R_x \cdot R_y ))。
(3)平移矩阵(Translation Matrix)
若物体在世界坐标系中的平移向量为 ( (t_x, t_y, t_z) ),平移矩阵 ( T ) 为:
[
T = \begin{bmatrix}
1 & 0 & 0 & t_x \
0 & 1 & 0 & t_y \
0 & 0 & 1 &