我正在查看这个名为Morfo的酷应用。根据他们的产品描述 -
使用Morfo快速将朋友脸部的照片变成a 说话,跳舞,疯狂的3D角色!一旦被捕获,你可以制作你的 朋友用愚蠢的声音说出你想要的任何东西,摇滚,化妆, 运动一双巨大的绿色猫眼,突然增加300磅,甚至更多。
因此,如果您拍摄史蒂夫作业的普通2D图像&将它提供给这个应用程序,它将其转换为该图像的3D模型&用户可以与之交互。
我的问题如下 -
非常感谢ObjectiveC中的任何指针,指向网站或图书馆的链接。
更新: this product here的这个演示展示了morfo如何使用模板机制进行转换。即,在馈送2D图像之后,需要设置眼睛所在的面部边界,尺寸和尺寸。嘴唇的长度。然后它将其转换为3D模型。这部分是如何完成的?他们可能使用哪些框架或库?
答案 0 :(得分:14)
这是一个广泛的问题,但我可以指出你正确的3D渲染工作方向,相信我这是一个巨大的主题,背后有数十年的工作,并且要放在这里。不知道如何快速了解3D渲染技术,因此我将为您提供纹理的基本概念,并为您指出一套优秀的教程。
他们是怎么做到的?
我们的想法是,在3D渲染中,3D模型可以使用称为纹理贴图的2D图像进行纹理化。您可以使用2D图像将其包裹在3d模型周围,就像一个简单的原始图形,如立方体的球体或更高级的图像,例如经典的茶壶或人体头部的模型e.t.c.可以从任何地方拍摄纹理,我过去使用相机输入来使用来自相机流的视频对网格进行纹理处理,我使用了相机中的照片,这些照片是如何进行的。这就是面部渲染到3D模型的方式。
这有效吗?
在iOS和大多数移动设备上,3D渲染使用OpenGLES进行硬件加速。关于你的问题,这很快取决于你如何实现渲染代码。
它使用anticyclope提到的映射(视频中的缩放旋转模板)的方式允许您使纹理适合模型,并将眼睛放置在渲染代码的一部分。
所以,如果你想选择这个,我建议你从头开始阅读Jeff Lamarche Tutorial作为入门读物:
http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-table-of.html
其次,我已经阅读了大约4本关于OpenGLES的书籍,用于一般设计和平台细节。我推荐这本书:
答案 1 :(得分:9)
在我看来,他们是如何做到的。只是我的想法,没有看到现实生活中的应用。
他们拥有人体头部的3D模型。当您点击2D图像上的某些点时,它们会调整3D模型中的对应点,因此它表示特定面部的特征,如眼睛之间的距离,嘴唇宽度等。接下来,使用该控制点将来自2D图像的纹理应用于3D模型,因此我们具有人类头部的纹理3D模型。鉴于这一事实,我们的感知能够从2D图像重建3D形状(比如,我们看2D照片并仍然想象一个3D人物),没有必要准确地重建3D形状,纹理将完成工作。
答案 2 :(得分:4)
3D图像的渲染存在一个问题,称为UV mapping,它采用3D模型并定义一组边缘,这会创建一个用于为模型生成不同纹理的图像。
现在,如果您注意到Morfo,您可以定义头部,眼睛,嘴巴和鼻子的边缘。有了这些信息,Morfo知道如何将纹理放置到已定义的模型中。
在模型上加载纹理的过程并不复杂,这可以在任何支持某些技术的设备上完成,例如OpenGL
答案 3 :(得分:1)
将2D图像渲染并转换为3D是不是计算密集?
Apple正在开发定制芯片组数十亿美元,考虑到电池寿命和低工作温度(没有风扇),最近的型号具有令人印象深刻的性能。