3

我是 OpenGL-ES 的新手,正在寻找创建逼真的眼睛模型的最佳方法,该模型的瞳孔可以扩张和收缩,因此我在阅读教程时有一个计划。

  1. 我在搅拌机中制作了一个网格,它基本上是一个带孔的球体(“极点”或中心顶点被移除,并且周围有几个圆形边缘)。

  2. 我计划将虹膜纹理直接添加到围绕孔的球体多边形上。

  3. 要更改瞳孔大小,我是否只需要一个函数来重新定位孔的顶点以使孔扩大或收缩?

  4. 我将在 Objective-C 应用程序中使用 OpenGL。我有Jeff Lamarche 的 Objective C 导出脚本。仅从搅拌机中导出网格并稍后在 xcode 中在代码中添加纹理是标准的吗?还是先在搅拌机中设置网格上的纹理并将更多成品数据导出到 xcode 更容易/更好?

4

1 回答 1

1

你的问题有点老了,所以我不确定你取得了多大的进步,但是当我自己一直在攀登学习曲线时,我想我会尝试回答一下。

如果您想为模型的各个顶点设置动画,我相信您需要的方法是 Vertex Skinning。在这方面我不能说太多,因为我还没有理由尝试它,尽管它是一种仅在 OpenGL ES 2.0 中可用的技术。(无论如何,这可能是您想要开始的地方,超过 1.1 增加的灵活性比任何额外的学习曲线倾斜都值得。)

您的纹理问题的答案有些复杂。您需要在 OpenGL 中实际应用纹理。但是 Blender 可以为您做的是确定纹理坐标。网格的每个顶点都有一个与之关联的纹理坐标。纹理坐标将是映射到纹理图像上某个位置的 X、Y 坐标。坐标在 0.0 到 1.0 的范围内——因此,由于您的图像纹理是一个矩形,纹理坐标 {0, 0} 映射到左下角;{1 , 1} 映射到右上角;{0.5, 0.5} 映射到图像的确切中心。

因此,在搅拌机中,您需要继续使用 UV 映射对对象进行纹理处理。导出时,虽然导出的网格不包含任何图像内容,但它会保留映射到图像内容的纹理坐标。这将允许您在 OpenGL 中应用纹理,以便纹理的应用方式与它在搅拌机中出现的方式相同。

我个人在让 Jeff Lamarche 的脚本吐出纹理坐标时遇到了一些麻烦,因为 Blender api 似乎在每个版本中都会发生显着变化。我使用 .obj 转换器取得了更大的成功。所以我一直从搅拌机导出到.obj,并使用命令行工具从.obj 到C 头文件。

如果您在使用 Lamarche 的脚本时遇到类似问题,这篇文章可能有助于解决它:http: //38leinad.wordpress.com/2012/05/29/blender-2-6-exporting-uv-texture-coordinates/

这是 .obj 到 .h 脚本的一个很好的资源:http: //heikobehrens.net/2009/08/27/obj2opengl/

于 2012-10-06T18:57:55.560 回答