我正在制作一个基于画布的游戏引擎,我想知道是否有人对如何实现俯视视角有任何好的信息。我正在寻找的是介于传统鸟瞰图和旧 SNES mode7 视图之间的某个位置。只是一个轻微的角度,给人一种 3D 的错觉。
我试图找出处理透视倾斜的最佳方法。我没有进行旋转,所以 3D 矩阵的东西会过火,但我需要能够处理以一致的角度渲染地图图层,如果角度是可调节的,那就太好了。我还需要处理深度扭曲。基本上,像素的底行应该是 1:1 的像素宽度和高度,然后对于每一行,它会得到,例如,小 5% 或类似的东西。我想要的是能够提供一个大画布作为纹理,然后提供一个 0 到 90 之间的摄像机角度,其中 0 是完全水平的,90 是鸟瞰图。
任何人有任何相关的教程或示例代码?我在网上搜索了一下,但我发现的所有东西似乎要么不适合在这个特定的应用程序中使用,要么过于复杂,做各种疯狂的 3D 倾斜和旋转的东西。我想要的只是采用正常的平铺网格并将其向后倾斜一点,不要旋转或类似的复杂东西。
这是我想要的一个例子; 这是一个例子。http://img801.imageshack.us/img801/2176/perspectivesample.jpg
底部像素行是 1:1 的像素比,其上方的每一行在水平和垂直方向上逐渐变短。顶部中心区域的源纹理通常约为底部中心区域高度的一半,但它已在垂直和水平方向收缩以适应透视图。
我认为可能最有效的方法是将当前视口状态渲染到另一个平面鸟瞰画布上,顶部和侧面大约有 50% 的额外空间,然后从中切出一个向上的三角形区域并将其绘制到实际可见的画布。
唯一的问题是,在计算角度等方面,我的数学很烂。