如何在iPhone上与基于OBJ的3D模型进行交互?

时间:2009-10-06 01:54:24

标签: iphone objective-c 3d opengl-es

我有几个不同的OBJ文件,我能够解析和显示。此代码基于Jeff LaMarche的The Start of a WaveFront OBJ File Loader Class。但是,我需要一些方法来检测我在显示的模型中选择的坐标。通常一次只显示一个模型,但有时屏幕上会有两个或更多模型,我想设置一个NSNotificationCenter对象,以通知其他代码部分关于哪个对象被“选中”。我还看了javacom的“用于iPhone的OpenGL ES:一个简单的教程”,并希望模仿我在他之后尝试编程的行为。

这是我目前的逻辑:

  • 设置检测用户触摸屏幕位置的方法
  • 将这些坐标与基于OBJ的模型的当前坐标进行比较
  • 如果匹配,则表示所述触摸在对象的范围内
  • 可触摸的坐标集必须与模型一致。目前该模型能够扩展,因此我很可能需要能够遵循这种扩展。

另请注意,我不需要在屏幕上移动模型。只需检测何时触摸是否显示一个或多个模型。

虽然这很可能很简单,但我已经被这几个月困扰了。我真的很感激别人可以就这个话题提出的任何启示。

1 个答案:

答案 0 :(得分:0)

在触摸坐标上使用gluUnProject来获取从屏幕进入世界的矢量,然后将其与模型相交以查看是否有其中一个被触摸过。默认情况下,gluUnProject不适用于iPhone,但您可以查找它的实现。 http://www.mesa3d.org/有一个开源实现。

在这里阅读gluUnProject:http://web.iiit.ac.in/~vkrishna/data/unproj.html