OpenGL中瞳孔收缩/眼睛模型扩张的基本方法

时间:2012-04-26 17:14:05

标签: animation opengl-es blender 3d-modelling

我是OpenGL-ES的新手,正在寻找最好的方法来创建一个真实的眼睛模型,其瞳孔可以扩张和收缩,所以我在运行教程时有一个计划。

  1. 我在搅拌器中制作了一个网格,它基本上是一个带孔的球体(“极”或中心顶点被移除,一对环绕着圆边)。

  2. 我计划将虹膜纹理直接添加到球洞周围的多边形中。

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

  4. 我将在Objective-C应用程序中使用OpenGL。我有Jeff Lamarche's Objective C export script。从混合器中仅导出网格是否标准,并在xcode中稍后在代码中添加纹理?或者首先在blender中的网格上设置纹理更容易/更好,并将更多成品的数据导出到xcode?

1 个答案:

答案 0 :(得分: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转换器取得了更大的成功。所以我一直从blender导出到.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/