2.5d iphone游戏中通过移动顶点实现iphone中quartz 2d/openGl/cocos2d图像失真

2.5d iphone游戏中通过移动顶点实现iphone中quartz 2d/openGl/cocos2d图像失真,iphone,opengl-es,cocos2d-iphone,Iphone,Opengl Es,Cocos2d Iphone,我们试图在iphone游戏中实现以下目标: 使用2d png文件,设置一个看起来像3d的场景。当用户移动设备时,单个png文件将相应地扭曲/扭曲,以产生深度效果 一个场景:一个空房间,5个墙和一把椅子在中间。6个png文件分层 我们已经成功地使用诸如skew和scale之类的本机函数实现了这一点。通过对各种墙壁和椅子应用变换,当设备倾斜移动时,墙壁将倾斜/缩放/平移。但是,问题是因为我们使用6个png文件,所以移动设备时边缘不会相交。我们需要一个使用真正引擎的新解决方案 问题: 我们考虑的不是应

我们试图在iphone游戏中实现以下目标:

使用2d png文件,设置一个看起来像3d的场景。当用户移动设备时,单个png文件将相应地扭曲/扭曲,以产生深度效果

一个场景:一个空房间,5个墙和一把椅子在中间。6个png文件分层

我们已经成功地使用诸如skew和scale之类的本机函数实现了这一点。通过对各种墙壁和椅子应用变换,当设备倾斜移动时,墙壁将倾斜/缩放/平移。但是,问题是因为我们使用6个png文件,所以移动设备时边缘不会相交。我们需要一个使用真正引擎的新解决方案

问题:

我们考虑的不是应用倾斜/缩放变换,而是如果给定移动矩形图像顶点的自由度,我们可以精确扭曲图像并保持所有边100%对齐


在最短的时间内完成这项工作的最佳框架是什么?我们这样做是正确的吗?

如果您要像在3D场景中扭曲纹理一样扭曲纹理,那么为什么不让图形硬件为您完成这项艰巨的工作,将纹理映射到3D多边形,然后更改投影或移动多边形


我怀疑你能把自己限制在2D变换上做得更快——硬件已经准备好做3x3(好吧,4x4同质)矩阵乘法。

如果你要像在3D场景中扭曲纹理那样扭曲纹理,那么,为什么不让图形硬件为您完成繁重的工作,将纹理映射到3D多边形,然后更改投影或移动多边形


我怀疑你能不能把自己限制在2D变换上更快——硬件已经准备好做3x3(好吧,4x4同质)矩阵乘法。

你应该能够使用核心动画层和适当的3D变换来实现这种效果(至少在应用于墙壁的透视图方面)

在John Blackburn提供的示例中可以找到一个构建这样一个场景的好例子。他演示了如何设置层来表示迷宫中的墙,方法是对这些层应用适当的旋转和平移,然后使用改变场景CATTransferM3D的
m34
组件的技巧来提供场景透视图

我不确定用这样的东西你的平板椅看起来会怎么样,但你肯定可以让你的墙壁有一个很好的透视图。使用层和核心动画可以让您使用比使用OpenGL ES实现少得多的代码实现所需的功能


改变相机角度就像根据设备方向的变化旋转场景一样简单。

使用核心动画层和适当的三维变换,您应该能够实现这种效果(至少在应用于墙壁的透视方面)

在John Blackburn提供的示例中可以找到一个构建这样一个场景的好例子。他演示了如何设置层来表示迷宫中的墙,方法是对这些层应用适当的旋转和平移,然后使用改变场景CATTransferM3D的
m34
组件的技巧来提供场景透视图

我不确定用这样的东西你的平板椅看起来会怎么样,但你肯定可以让你的墙壁有一个很好的透视图。使用层和核心动画可以让您使用比使用OpenGL ES实现少得多的代码实现所需的功能


改变相机角度非常简单,只要根据设备方向的变化旋转场景即可。

您不知道现在使用的是什么方法。如果您使用的是OpenGL,那么它听起来像是一个对话框,您需要一个立方体贴图。如果这不够灵活,那么制作一个顶点数组肯定会奏效。今天我们使用的都是原生iphone(cocoa)。遗憾的是,这是最后一刻提出的要求。因此,我们正在集思广益,讨论如何在最后一分钟进行“更改”,以添加这种3d效果。谢谢。这正是我们使用100%2d图形所要做的。使用2d图像时,效果不会那么明显。你没有说你现在用的是什么方法。如果您使用的是OpenGL,那么它听起来像是一个对话框,您需要一个立方体贴图。如果这不够灵活,那么制作一个顶点数组肯定会奏效。今天我们使用的都是原生iphone(cocoa)。遗憾的是,这是最后一刻提出的要求。因此,我们正在集思广益,讨论如何在最后一分钟进行“更改”,以添加这种3d效果。谢谢。这正是我们使用100%2d图形所要做的。使用2d图像时,效果不会那么明显。非常感谢。您会为此推荐什么样的框架?我曾考虑使用真3d,但担心这将是一个巨大的变化。PS:这是我们尝试使用2d图形实现的效果,我从未使用过它,但很明显,您当前的cocos2d框架支持3d。最近发布的cocos3d变体似乎也让这些事情变得更简单:谢谢!您会为此推荐什么样的框架?我曾考虑使用真3d,但担心这将是一个巨大的变化。PS:这是我们尝试使用2d图形实现的效果,我从未使用过它,但很明显,您当前的cocos2d框架支持3d。最近发布的cocos3d变体似乎也让这些事情变得更容易: