正交投影 - 如何将三维点转换为二维的过程是什么?

3
我正在使用ActionScript 3.0实现一个简单的点球大战游戏。游戏视图类似于旧版的“Sensible World of Soccer”。我想利用三维游戏逻辑,使用z维度,因为我认为这可以帮助我实现更好的碰撞检测和响应结果。然而,我希望保持图形风格和视图与旧版2D足球游戏相同。因此,我认为正交投影适合这个实现。尽管互联网上有大量关于正交投影的信息,但我还是有点困惑如何在代码中应用它。

所以我的问题是:

  • 将3D(x,y,z)点转换为正交投影下的2D(x',y')点的步骤是什么?
  • 我们能否避免使用矩阵?如果可以,哪些方程式将坐标x,y,z与x',y'相关联?
  • 在应用转换之前,我们需要定义摄像机位置和角度吗?在我的情况下,摄像机将处于固定位置和角度。

http://stackoverflow.com/questions/665653/flash-10-orthographic-projection?rq=1 - Lukasz 'Severiaan' Grela
1个回答

1

DisplayObjects及其子孙(即MovieClip和Sprite)具有z属性,您可以使用此属性轻松调整它们的层次结构 - 它们还具有rotationX / Y / Z和scaleX / Y / Z属性!

使用“z”将相应地调整对象的位置和比例(尽管它会将矢量转换为位图),没有深度排序,因此即使其z坐标表明它应该在其上方,它仍将保持在对象的顶部。但是对于您考虑中的项目,我看不出这会是一个问题 - 这很容易修复,只需在场景中拥有对象数组,按z位置进行排序并重置每个/重新排序后添加到舞台。

您可以使用clip的perspectiveProjection成员来调整FOV,原点等-

透视教程

..但您无需变得更加复杂。即使您希望手动计算固定摄像机视图,也不需要涉足矩阵。

希望这可以帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接