2013-03-11 82 views
4

我需要將人臉2D製作成3D人臉。 我用this link加載一個「.obj」文件並映射紋理。這個例子只適用於立方體和金字塔。我加載了一張人臉「.obj」文件。opengles在iphone中顯示人臉

這會加載.obj文件,並可以正確獲取人臉,如下所示。 enter image description here

但我這裏的問題是我需要顯示不同的人臉而不更改「.obj」文件。只是通過紋理映射。

但是由於obj文件的模型不同,紋理沒有正確映射。我只是試着改變用作紋理的「.png」文件,下面是紋理映射的結果,但不是我所期望的,如下所示。

enter image description here

下面是它我幾個問題:

1)我需要不同的圖像上加載相同的模型紋理(有相同的obj文件)。在opengles中可能嗎?

2)如果上述問題的解決方案是「形狀匹配」,我怎樣才能用opengles做到這一點?

3)最後一個基本問題,我需要在大面積顯示圖像,如何使顯示區域變大?

+0

你能附加你正在使用的OBJ的原始紋理嗎?這就是你的第一張圖片中顯示的紋理 – talkol 2013-03-11 17:14:19

+0

有人可以在這裏添加更多點嗎? – 2vision2 2013-03-20 04:05:29

回答

9

mtl2opengl實際上是我的項目,所以感謝使用它!

1)如果兩個紋理都以完全相同的方式映射到UV頂點,則您可以實現完美紋理交換而不失真的唯一方法。看看下面的圖片:

Texture Swapping with misaligned vertices

正如你所看到的,紋理做適合的型號。所以任何交換到不同的幾何目標都會導致失真。簡化的人體頭部/面部有兩個部分:內部(骨骼/幾何)和外部(膚色/紋理)。內部方面明顯定義了外觀,因此,除非使用交換來更改模型的幾何圖形,否則在同一個.obj文件上完美的紋理交換將不起作用。

2)這是可以用一種叫做displacement mapping的技術來實現的,可以在OpenGL ES中實現,但預計會有多個頭部/面部的困難。這需要你的目標.obj幾何體以一個非常通用的模型(如人體模型)開始,然後使用每個紋理來移動模型頂點的位置。我認爲你需要對建模,圖形,着色器和數學非常滿意,才能把這個關掉!

enter image description here

3)我會添加更多的變換在下次更新選項(規模&翻譯)。 Xcode項目實際上是爲了展示PERL腳本,而不是作爲iOS上的OpenGL ES的入門。現在,找到modelViewMatrix,並用這一點點搗鼓:

GLKMatrix4Scale(_modelViewMatrix, 0.30, 0.33, 0.30); 

希望這能回答你所有的問題!

+0

感謝您的回答!值得一試! – 2vision2 2013-03-14 03:39:14

+0

謝謝!我希望你在你的項目上取得很好的進展,因爲它看起來很有趣。我也會嘗試擴展'mtl2opengl'並在將來包含一個doc – 2013-03-15 14:27:49

+0

是的。非常感謝。迄今爲止進展順利。我在操作系統中失敗了。而我現在還沒有解決這個問題http://stackoverflow.com/questions/15384079/texture-mapping-not-working-in-glkit-only-in-devices。你可以隨時查看我的問題部分,我現在增加了幾個問題!這裏的示例http://stackoverflow.com/questions/15432468/make-a-layer-over-an-image-and-adjust-its-co-ordinates-by-touch – 2vision2 2013-03-15 14:40:12