2vi*_*on2 4 3d opengl-es objective-c ios glkit
我需要将人脸2D脸部制作成3D脸部.我使用此链接加载".obj"文件并映射纹理.此示例仅适用于立方体和金字塔.我加载了一个人脸".obj"文件.
这将加载.obj文件,并可以正确获取人脸,如下所示.
但我的问题是我需要在不改变".obj"文件的情况下显示不同的人脸.只是通过纹理映射.
但是纹理没有正确映射,因为obj文件具有不同的模型.我只是尝试更改用作纹理的".png"文件,下面是结果,其中纹理被映射但不完全符合我的预期,如下所示.

以下是我的几个问题:
1)我需要在具有不同图像的相同模型(具有相同的.obj文件)上加载纹理.在opengles中有可能吗?
2)如果上述问题的解决方案是"形状匹配",我怎么能用opengles做呢?
3)最后一个基本问题,我需要在大面积上显示图像,如何使显示区域更大?
mtl2opengl实际上是我的项目,所以感谢您使用它!
1)只有两种纹理以完全相同的方式映射到UV顶点上,才能实现完美的纹理交换而不失真.看看下面的图片:

如您所见,纹理适合模型.因此,任何交换到不同几何目标都会导致失真.简化的人头/面具有两个组件:内部(骨骼/几何)和外部(皮肤/纹理).内部方面明显定义了外观,因此除非您使用交换更改模型的几何图形,否则在相同.obj文件上的完美纹理交换将不起作用.
2)这可以通过一种称为位移映射的技术实现,该技术可以在OpenGL ES中实现,尽管预期多个头/面难以实现.这将要求您的目标.obj几何体以非常通用的模型(如人体模型)开始,然后使用每个纹理来移动模型顶点的位置.我认为您需要对建模,图形,着色器和数学非常熟悉才能完成这一切!

3)我将在下次更新中添加更多变换选项(缩放和翻译).Xcode项目实际上是为了展示PERL脚本,而不是作为iOS上OpenGL ES的入门.现在,找到modelViewMatrix并摆弄这一点:
GLKMatrix4Scale(_modelViewMatrix, 0.30, 0.33, 0.30);
Run Code Online (Sandbox Code Playgroud)
希望能回答您的所有问题!
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |