【问题标题】:opengles display human face in iphoneopengles在iphone中显示人脸
【发布时间】:2013-07-15 11:14:20
【问题描述】:

我需要将人的 2D 人脸转换为 3D 人脸。 我使用this link 加载“.obj”文件并映射纹理。此示例仅适用于立方体和金字塔。我加载了一个人脸“.obj”文件。

这会加载 .obj 文件并可以正确获取人脸,如下所示。

但我的问题是我需要在不更改“.obj”文件的情况下显示不同的人脸。只是通过纹理映射。

但是纹理没有正确映射,因为 obj 文件的模型不同。我刚刚尝试更改用作纹理的“.png”文件,结果如下,纹理被映射但不完全符合我的预期,如下所示。

以下是我的几个问题:

1) 我需要在具有不同图像的同一模型(具有相同的 .obj 文件)上加载纹理。在opengles中可以吗?

2) 如果上述问题的解决方案是“形状匹配”,我该如何使用opengles?

3)最后一个基本问题,我需要大面积显示图片,如何让显示面积更大?

【问题讨论】:

  • 你能附上你正在使用的OBJ的原始纹理吗?这就是您的第一张图片中显示的纹理
  • 有人可以在这里加点吗?

标签: ios objective-c opengl-es 3d glkit


【解决方案1】:

mtl2opengl其实是我的项目,感谢使用!

1) 实现完美纹理交换而不失真的唯一方法是,两个纹理都以完全相同的方式映射到 UV 顶点。看看下面的图片:

如您所见,纹理是根据模型制作的。因此,任何与不同几何目标的交换都会导致失真。简化后的人头/面部有两个组成部分:内部(骨骼/几何)和外部(皮肤/纹理)。内部方面显然定义了外部,因此在同一个 .obj 文件上完美的纹理交换将不起作用,除非您通过交换更改模型的几何形状。

2) 这可以通过一种称为displacement mapping 的技术实现,该技术可以在 OpenGL ES 中实现,尽管对于多个头/面来说预计会有困难。这将要求您的目标 .obj 几何体从一个非常通用的模型开始,例如人体模型,然后使用每个纹理来移动模型顶点的位置。我认为您需要对建模、图形、着色器和数学非常熟悉才能实现这一目标!

3) 我将在下一次更新中添加更多变换选项(缩放和平移)。 Xcode 项目实际上是为了展示 PERL 脚本,而不是作为 iOS 上 OpenGL ES 的入门。现在,找到modelViewMatrix 并摆弄这个小点:

GLKMatrix4Scale(_modelViewMatrix, 0.30, 0.33, 0.30);

希望能回答你所有的问题!

【讨论】:

  • 谢谢!我希望你在你的项目上取得良好的进展,因为它看起来很有趣。我还将尝试扩展mtl2opengl 并在未来包含一个文档
  • 是的。非常感谢。到目前为止进展顺利。我在opengles中摸不着头脑。我现在还没有解决这个问题stackoverflow.com/questions/15384079/…。你可以随时查看我的问题部分,我现在添加了几个问题!!!这里有一个示例stackoverflow.com/questions/15432468/…
  • 您好,是否可以使用适合所有人体模型的唯一 obj 文件来实现上述目标?你有这样的obj文件吗?如果有可以请提供给我吗?
  • 抱歉回复晚了...这个female mannequin head 可能是一个很好的起点,但它不是免费的,它更适合我回答中的女模特而不是你问题中的男模特.另外,一件小事,但你认为你也可以“接受”我的回答吗?谢谢!
  • 是否有任何 OpenGLES API 可用于置换贴图.. 你能提供任何参考...
猜你喜欢
  • 2016-06-24
  • 2011-12-28
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
  • 2011-10-12
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多