我们正试图在iPhone游戏中实现以下目标:
使用2d png文件,设置一个看似3d的场景。当用户移动设备时,各个png文件会相应地扭曲/扭曲以产生深度效果。
场景示例:空房间,5个墙壁和中间的椅子。 = 6个png文件分层。
我们使用偏斜和缩放等原生函数成功完成了这项工作。通过将变换应用于各种墙壁和椅子,当装置倾斜移动时,墙壁将倾斜/缩放/平移。但问题是因为我们使用的是6个png文件,所以当我们移动设备时边缘不会满足。我们需要一个使用真实引擎的新解决方案。
问题:
我们正在考虑不应用偏斜/缩放变换,如果给予移动矩形图像顶点的自由度,我们可以精确地扭曲图像并保持所有边缘100%对齐。
在最短的时间内完成此任务的最佳框架是什么?我们是否正确地采用这种方式?
答案 0 :(得分:1)
您应该能够使用Core Animation图层和适当的3-D变换来实现此效果(至少在应用于墙壁的视角方面)。
在John Blackburn提供的here示例中可以找到构建此类场景的一个很好的示例。他展示了如何通过对它们应用适当的旋转和平移来设置层来表示迷宫中的墙,然后通过使用改变场景的CATransform3D的m34
组件的技巧来给出场景透视。 / p>
我不确定你的平板椅看起来有多好,但你肯定可以让你的墙壁对他们有一个很好的视角。使用图层和核心动画可以让您使用远远少于使用OpenGL ES实现此功能的代码来实现您的目标。
改变相机角度就像旋转场景一样简单,以响应设备方向的变化。
答案 1 :(得分:0)
如果您要在3D场景中扭曲纹理,那么为什么不让图形硬件通过将纹理映射到3D多边形,然后更改投影或移动多边形?
我怀疑你可以通过限制自己进行2D变换来加快速度 - 硬件可以做到3x3(井,4x4同质)矩阵乘法。