我会准确阐述我的问题,我有一个在二维世界(X,Y)中移动的二维物体,并且我想在Z轴上伪造一个运动。因此,我认为最好的方法是稍微调整其范围(宽度、高度)和位置。
但是,如何确定一个大小为(w,h)并从相机向前移动1米(Z轴)的对象的新范围方程式是什么?这种函数的参数是什么?
感谢您的帮助。
感谢您的帮助。
使用投影将对象的真实 (X,Y,Z)
坐标存储,并通过相机 K
个单位以上的平面进行显示,通过二维投影 (K*X/(Z+K),K*Y/(Z+K))
,其中+Z
远离相机。
要更改高度和宽度,请遵循类似的模式,使用 (DX,DY)
精灵的真实大小和 (K*DX/(Z+K),K*DY/(Z+K))
表现(绘制)大小。
要正确执行此操作,您可以遵循此 FlipCode 文章中的建议。
new_size = size / distance
可以简单地确定新的大小。
请注意,没有距离的物体将具有无限大小。
为了获得光圈角度的效果,您需要包括另一个因素f
:
new_size = f * size / distance
其中f
是单位尺寸的距离。
单位尺寸的距离是图像以其原始大小绘制的距离。
当然,这个距离也不能为零。通过这个距离,您隐含地定义了光圈角度。宽度和高度将与观察者的距离成反比。如果它们距离观察者的距离是原来的两倍,那么大小将减半。因此,如果您与观察者的“自然”距离为A,而新位置在A+Z处,则需要将原始宽度和高度乘以A/(A+Z)。这也适用于小的负Z值(物体更靠近观察者,看起来更大)。