level 12
厉风
楼主

看上图,我们假定观察者(比如我们)和游戏中的角色(和我们差不多高的真人)同样站立在地面上,大方框的十字中心(粉色)恰好是我们眼睛的位置。格斗角色头顶和脚底分别与我们眼睛连线,可以看作格斗角色头顶和脚底分别射入我们眼睛里的光线。
眼睛接受来自其格斗角色的光,使我们脑中形成格斗角色的影像,因此,这个影像应该处于两条光路路径所限制的范围中。
这个影像应该是投影在一个投影屏幕上的,而我们看到的格斗游戏画面应该就是这个屏幕上的画面。
因此,格斗角色的影像在光路限制范围内的那个位置(本文中所有“位置”都指的是中轴线的位置)就应该是投影屏幕相对我们观察者的位置。
我们现在只需要格斗角色实际距离我们多远,以及格斗角色的影像相当于多大,就可以得到这个投影屏幕的实际位置了。
已知格斗角色所在位置如图所示,距离我们观察者有12个长度单位远。
为了获得格斗角色的影像相当于实物的多大,我们假想这个大方框就是游戏画面相当于实物的比例。
如果大方框恰好是640x480的游戏画面大小,那么我们就要把8个单位长度看作是相当于游戏中的320像素(相当于每个单位40像素)。
我们都知道游戏中角色站立的位置距离游戏画面下边缘刚好40像素(相当于我们一个单位长度)。
所以,距离地面一个单位高的位置应该就是“格斗角色实际站立的地面位置投影到投影屏幕中的高度”。
由于游戏中的角色在画面上的高度大约为200像素,也就相当于图中“格斗角色的影像”的大小,这样我们就得到了格斗角色的影像相当于实物的多高了。
把这个高度的格斗角色影像放进光路限制范围,保持着让这个影像的头顶顶点被格斗角色头顶发出的光线穿过的条件来移动影像,使得这个影像的脚底顶点刚好被格斗角色脚底发出的光线穿过时,我们就确定了这个影像的合适位置,也就是投影屏幕的位置(距离观察者大约10个长度单位远)。
我们之所以要找到这个屏幕的位置,就是要利用它来绘制画面中的3d投影网格,因为这些网格的分布完全由这个投影屏幕决定。





