3

我正在用 Java 创建一个 3D 渲染器,它目前可以使用点和线渲染立方体的线框并旋转立方体,问题是,Z 应该是什么?Z 应该设置什么?我猜立方体的大小应该设置为Z?

谢谢你的时间!任何答案将不胜感激。

4

3 回答 3

5

如果当前视口位于 xy 平面,Z 通常表示平面外方向。

您的 3D 世界有自己的坐标系。渲染时,您将从 3D 世界坐标转换为视口坐标。

于 2012-09-10T22:50:02.370 回答
2

我认为您可能在这里遗漏了一些基本的学校数学/几何。然而,实际上并不难理解。

想象一个平面,例如一张纸。

  • 第一个坐标轴将从左到右直线移动,我们称之为 X。所以 X = 0 表示您的点在左边界上。X = 10 可能意味着您的点在右边界上(实际上取决于您定义 1 的单位有多大;这可能以厘米、英寸等为单位)。这已经足以描述一维中的某个点(从左到右)。

  • 现在,我们需要第二个轴。我们称它为 Y。它从上边界 (Y = 0) 到底部 (Y = 10)。现在您可以描述平面上的任何点,因为您有两个位置。例如, (0, 0) 将是左上角。(10, 10) 将是右下角。(5, 0) 将是上边框的中心点,等等。

  • 如果我们再增加一个维度会发生什么?称它为 Z。这基本上是您的点在工作表上方的高度。例如,Z = 0 可能意味着您的点位于画家纸上,而 Z = 10 意味着您的点位于纸上方 10 厘米处。现在你用三个坐标来描述一个点:(5, 5, 0) 是纸的中心。(5,5,5) 是立方体的中心,位于填充纸上,高 10 厘米。

在 3D 中编程时,您可以使用相同的术语。唯一真正的区别是,您使用所谓的投影/视图矩阵来确定如何在屏幕上显示此 3d 位置。最简单的变换可能是以下矩阵:

1 0 0
0 1 0

将其与您的 3d 坐标相乘,您将得到以下两项:

2d-x = 3d-x 2d-y = 3d-y

这导致您从正上方查看立方体(或您要显示的任何内容)基本上再次忽略 Z 轴(您不能渲染突出显示的东西,除非使用某种 3d 眼镜或类似技术) .


总的来说,如何使用坐标并解释它们取决于您。通常 x 和 y 指的是平面(地面上的位置或 2D 世界内的位置),而 z 可能是高度或深度(前或后)。这真的取决于具体情况。但总的来说,它实际上只是另一个维度,如 x 和 y。

于 2012-09-10T23:28:18.563 回答
2

3D 意味着 3 个“维度”。一维是“X”,另一个是“Y”,第三个是“Z”。没有一个有特定的方向,尽管按照惯例指定一个方向很方便,例如“前进”、“左”和“上”。

X、Y 和 Z 值都等于 0 的东西位于空间的原点或中心。您可以将其写为 (0,0,0),其中参数的顺序为 (x,y,z)。

位置 (1,0,0) 处的点或顶点在 X 方向上距离原点一个单位。因此,如果您从 (0,0,0) 移动到 (1,0,0),您将纯粹在 X 方向上移动。

(0,1,0) 在 Y 方向上距离原点一个单位。

(0,0,1) 在 Z 方向上距离原点一个单位。

(1,1,0) 是 X 方向一个单位,Y 方向一个单位。因此,如果 X 表示“前进”,Y 表示“左”,则 (1,1,0) 是原点的左前和左前。

所以一个基本的立方体可以由以下顶点定义:

(1,1,-1)
(1,-1,-1)
(-1,1,-1)
(-1,-1,-1)
(1,1,1)
(1,-1,1)
(-1,1,1)
(-1,-1,1)
于 2012-09-10T23:10:54.857 回答