我将确定我的问题,我有一个2D物体在2D世界(X,Y)中移动,我想在Z轴上伪造一个运动。所以我认为最好的方法是使用它的范围(宽度,高度)和位置。 但是,确定尺寸(w,h)物体的新范围以及从相机向前移动1米(Z轴)的等式是什么?这样一个函数的参数是什么?
提前感谢您的帮助。
答案 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
确定新尺寸很简单。
请注意,没有距离的对象将具有无限大小。
要获得光圈角度的效果,您需要包含另一个因子f
:
new_size = f * size / distance
其中f
是单位大小的距离。
单位大小的距离是图像以其原始大小绘制的距离。
当然,这也不能为零。通过这个距离,你可以无限地定义孔径角。
当我谈到尺寸时,我指的是宽度和高度,因此公式适用于两者。
我希望你能按照我的解释。
答案 2 :(得分:0)
宽度和高度与观察者的距离成反比。如果他们是两倍远,大小将是一半。因此,如果与观察者的“自然”距离为A,并且新位置为A + Z,则需要将原始宽度和高度乘以A /(A + Z)。这也适用于较小的负Z值(对象更靠近观察者并且看起来更大)。