我需要将人类 2D 脸部制作为 3D 脸部。
我用了这个链接加载“.obj”文件并映射纹理。此示例仅适用于立方体和金字塔。我加载了人脸“.obj”文件。
This loads the .obj file and can get the human face properly as below.
但我的问题是我需要在不更改“.obj”文件的情况下显示不同的人脸。仅通过纹理映射。
但纹理未正确映射,因为 obj 文件具有不同的模型。我只是尝试更改用作纹理的“.png”文件,下面是结果,其中纹理被映射,但不完全符合我的预期,如下所示。
![enter image description here](https://i.stack.imgur.com/p9qpx.png)
以下是我对此的几个问题:
1)我需要使用不同的图像在同一模型(具有相同的.obj文件)上加载纹理。在 opengles 中可能吗?
2)如果上述问题的解决方案是“形状匹配”,我该如何用opengles做到这一点?
3)最后一个基本问题,我需要大面积显示图像,如何使显示区域更大?
mtl2opengl实际上是我的项目,所以感谢您使用它!
1) 实现完美纹理交换而不失真的唯一方法是两个纹理以完全相同的方式映射到 UV 顶点。看看下面的图片:
![Texture Swapping with misaligned vertices](https://i.stack.imgur.com/BzqNz.jpg)
正如您所看到的,纹理是为了适合模型而制作的。因此,任何交换到不同的几何目标都会导致失真。简单地说,人类头部/面部有两个组成部分:内部(骨骼/几何)和外部(皮肤/纹理)。内部方面显然定义了外部,因此同一 .obj 文件上的完美纹理交换将不起作用,除非您通过交换更改模型的几何形状。
2)这可以通过一种称为位移贴图可以在 OpenGL ES 中实现,但预计多个头/面会遇到困难。这需要您的目标 .obj 几何体从一个非常通用的模型(例如人体模型)开始,然后使用每个纹理来移动模型顶点的位置。我认为您需要非常熟悉建模、图形、着色器和数学才能完成这一任务!
![enter image description here](https://i.stack.imgur.com/lq6km.jpg)
3)我将在下次更新中添加更多变换选项(缩放和平移)。 Xcode 项目实际上是为了展示 PERL 脚本,而不是作为 iOS 上 OpenGL ES 的入门读物。现在,找到modelViewMatrix
并摆弄这一点:
GLKMatrix4Scale(_modelViewMatrix, 0.30, 0.33, 0.30);
希望能回答您所有的问题!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)