我正在开发3D Flash游戏,我的问题非常简单。
如何将3d点转换为2d点?
我在互联网上找到了下一个公式(相机位于原点)
但是当z小于零(z <0)
时,这些公式给出了奇怪的结果我需要从A(100,100,100)到B(100,100; -100)的构建线 正如您所看到的,当我尝试在2D维度中转换B点时,这些方程给出了非常奇怪的结果
我该如何解决这个问题?
答案 0 :(得分:3)
考虑z = 0时的含义。这意味着你正在做x / 0,这很糟糕 - 在这种情况下,它意味着该点与你的相机占据相同的位置!随着z越来越小,这意味着这些点落在你的相机后面,所以你根本不应该渲染它们。
你必须剔除(不渲染)“屏幕后面”的任何点。选择一个小z作为你的“近平面”,比方说,z = 1。您必须在此z = 1平面上剪切任何几何图形以防止不正确的渲染。
如果是积分,您可以查看point.z < 1
。对于线条,它更复杂 - 您必须计算线条与z = 1平面的交点并在必要时剪切它。
您可以在线条剪辑here上找到一些信息。