【问题标题】:Orthographic projection - What is the process converting 3d point to 2d正交投影 - 将 3d 点转换为 2d 的过程是什么
【发布时间】:2013-03-06 10:34:44
【问题描述】:
我正在使用 actionscript 3.0 实现一个简单的点球大战游戏。游戏的视角类似于旧的“足球世界”的视角。我想通过使用维度 z 来使用 3d 游戏逻辑,因为我认为它可以帮助我实现更好的碰撞检测 - 响应结果。但是,我想保持与旧的 2d 足球相同的图形样式和视图。因此,我假设正交投影适用于这种实现。尽管互联网上有很多关于正交投影的信息,但我对有人如何在他/她的代码中应用它感到有些困惑。
所以我的问题是:
- 在正交投影中将 3d (x, y, z) 点转换为 2d (x', y') 点的步骤是什么?
- 我们可以避免使用矩阵吗?如果是,将坐标 x'、y' 与 x、y、z 关联起来的方程是什么?
- 是否必须在应用转换之前定义摄像机位置和角度?就我而言,相机将处于固定的位置和角度。
【问题讨论】:
标签:
actionscript-3
3d
2d
projection
orthographic
【解决方案1】:
DisplayObjects 及其后代(即 MovieClip 和 Sprite)具有 z 属性,您可以使用它来轻松完成此操作 - 它们还具有 rotationX/Y/Z 和 scaleX/Y/Z 属性!
使用 'z' 会相应地调整对象的位置和比例(尽管它会将矢量转换为位图),没有深度排序,因此即使它的 z 坐标表明它应该保持在对象的顶部在他们身后,但对于你心目中的项目,我看不出这是个问题 - 无论如何它很容易修复,在场景中有一组对象,根据 z 位置对其进行排序并重置深度索引每个/重新添加到按排序顺序的阶段。
您可以使用剪辑的 perspectiveProjection 成员来调整 FOV、原点等 -
Perspective Tutorial
..但你不需要比这更复杂。当然,您不需要涉足具有固定相机视图的矩阵,即使您想手动计算它作为实验。
希望对你有帮助