如何伪造在Z轴上移动的2D精灵?

时间:2011-07-20 10:16:39

标签: math graphics

我将确定我的问题,我有一个2D物体在2D世界(X,Y)中移动,我想在Z轴上伪造一个运动。所以我认为最好的方法是使用它的范围(宽度,高度)和位置。 但是,确定尺寸(w,h)物体的新范围以及从相机向前移动1米(Z轴)的等式是什么?这样一个函数的参数是什么?

提前感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

通过存储对象的真实(X,Y,Z)坐标来使用投影,并通过2D投影K从平面上方的相机(K*X/(Z+K),K*Y/(Z+K))单位显示投影+Z离开相机。

要更改高度,宽度遵循类似的模式,其中(DX,DY)为精灵的真实大小,(K*DX/(Z+K),K*DY/(Z+K))为明显(绘制)大小。

要做到这一点,您可以按照此FlipCode文章的建议进行操作。

答案 1 :(得分:2)

主要参数是相机的距离和光圈角度。

通过new_size = size / distance确定新尺寸很简单。 请注意,没有距离的对象将具有无限大小。 要获得光圈角度的效果,您需要包含另一个因子fnew_size = f * size / distance 其中f是单位大小的距离。 单位大小的距离是图像以其原始大小绘制的距离。 当然,这也不能为零。通过这个距离,你可以无限地定义孔径角。

当我谈到尺寸时,我指的是宽度和高度,因此公式适用于两者。

我希望你能按照我的解释。

答案 2 :(得分:0)

宽度和高度与观察者的距离成反比。如果他们是两倍远,大小将是一半。因此,如果与观察者的“自然”距离为A,并且新位置为A + Z,则需要将原始宽度和高度乘以A /(A + Z)。这也适用于较小的负Z值(对象更靠近观察者并且看起来更大)。