三维模型

维基百科,自由的百科全书
跳转至: 导航搜索
人物的三维模型

三維模型是物體的三維多邊形表示,通常用電腦或者其它影片設備進行顯示。顯示的物體是可以是現實世界的實體,也可以是虛構的東西,既可以小到原子,也可以大到很大的尺寸。任何物理自然界存在的東西都可以用三維模型表示。

三维模型经常用三维建模工具这种专门的软件生成,但是也可以用其它方法生成。作为和其它信息集合的数据,三维模型可以手工生成,也可以按照一定的算法生成。尽管通常按照虚拟的方式存在于计算机或者计算机文件中,但是在纸上描述的类似模型也可以认为是三维模型。

三维模型广泛用任何使用三维图形的地方。实际上,它们的应用早于个人电脑上三维图形的流行。许多计算机游戏使用预先渲染的三维模型图像作为sprite用于实时计算机渲染。

现在,三维模型已经用于各种不同的领域。在医疗行业使用它们制作器官的精确模型;电影行业将它们用于活动的人物、物体以及现实电影视频游戏产业将它们作为计算机与视频游戏中的资源;在科学领域将它们作为化合物的精确模型;建筑业将它们用来展示提议的建筑物或者风景表现;工程界将它们用于设计新设备、交通工具、结构以及其它应用领域;在最近几十年,地球科学领域开始构建三维地质模型。

三维模型本身是不可见的,可以根据简单的线框在不同细节层次渲染的或者用不同方法进行明暗描绘(shaded)。但是,许多三维模型使用纹理进行覆盖,将纹理排列放到三维模型上的过程称作纹理映射。纹理就是一个图像,但是它可以让模型更加细致并且看起来更加真实。例如,一个人的三维模型如果带有皮肤与服装的纹理那么看起来就比简单的单色模型或者是线框模型更加真实。

除了纹理之外,其它一些效果也可以用于三维模型以增加真实感。例如可以调整曲面法线以实现它们的照亮效果,一些曲面可以使用凸凹纹理映射方法以及其它一些立体渲染的技巧。

三维模型经常做成动画,例如,在故事片电影以及计算机与视频游戏中大量地应用三维模型。它们可以在三维建模工具中使用或者单独使用。为了容易形成动画,通常在模型中加入一些额外的数据,例如,一些人类或者动物的三维模型中有完整的骨骼系统,这样运动时看起来会更加真实,并且可以通过关节与骨骼控制运动。

齐次坐标[编辑]

使用齐次坐标经常是更加有用的,因为3次元的平移仿射变换)不能用 3 × 3 矩阵完成。要按一个向量 v = (vx, vy, vz) 缩放一个物体,所有的齐次向量 p = (px, py, pz, 1) 都需要乘以缩放矩阵:

 S_v = 
\begin{bmatrix}
v_x & 0 & 0 & 0 \\
0 & v_y & 0 & 0 \\
0 & 0 & v_z & 0 \\
0 & 0 & 0 & 1 
\end{bmatrix}

如下所示,这个乘法给出预期的结果:


S_vp =
\begin{bmatrix}
v_x & 0 & 0 & 0 \\
0 & v_y & 0 & 0 \\
0 & 0 & v_z & 0 \\
0 & 0 & 0 & 1 
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1 
\end{bmatrix}
=
\begin{bmatrix}
v_xp_x \\ v_yp_y \\ v_zp_z \\ 1 
\end{bmatrix}

缩放是均匀的,当且仅当缩放因子是相等的。如果除了一个因子之外所有缩放因子都是 1 ,我们得到方向缩放。

因为齐次坐标的最后成员可以看作其他三个成员的分母,使用公共因子 s 的缩放可以使用如下缩放矩阵完成:

 S_v = 
\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & \frac{1}{s} 
\end{bmatrix}

对于每个齐次向量 p = (px, py, pz, 1),我们有:


S_vp =
\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & \frac{1}{s}  
\end{bmatrix}
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ 1 
\end{bmatrix}
=
\begin{bmatrix}
p_x \\ p_y \\ p_z \\ \frac{1}{s} 
\end{bmatrix}

它将均质于


\begin{bmatrix}
sp_x \\ sp_y \\ sp_z \\ 1 
\end{bmatrix}