2016-05-31 177 views
1

我很難過。我查看了所有可以找到的相關主題,但都沒有詳細描述我的問題。Blender to Three.js(.JSON)和OBJ to .JS紋理映射問題

我試圖讓一個.JSON或.JS版本的模型導出和紋理映射與通過WebGL渲染時的.OBJ版本相同。下面是說明發生了什麼事的形象:

WebGL rendered MODEL EXAMPLES

設置: 的Win7,攪拌機2.77,three.js所(下載16年5月22日),three.js所(以.json)攪拌機出口商, Python的OBJ>的.js轉換腳本(convert_obj_three.py)

python convert_obj_three.py -i xxx.obj -o xxx.js 

步驟:

  • 魔獸模型魔獸世界從出口ModelViewer作爲.OBJ
  • 魔獸導入到Blender的
  • 攪拌機編輯模式, 「刪除雙打」
  • 攪拌機出口模式.OBJ
  • three.js所THREE.OBJLoader()腳本對Web測試

結果爲 「GOOD」 示例(在圖像左殼體)

  • 攪拌機出口到以.json(嘗試每一種可以想象的配置,然後一些)
  • three.js所THREE.JSONLoader()腳本的Web中的 「BAD」 例如

結果測試(在中間的情況下,圖像)

  • 攪拌機導出到.OBJ
  • CMD線Python腳本做從OBJ轉換到.JS
  • three.js所THREE.JSONLoader()的腳本來測試ö N個Web在 「WORSE」 示例

結果(在圖像中的情況下)。出於某種原因,在最後一個例子中,不僅僅是頭髮紋理,而且模型臉部的部分皮膚也會變得不穩固。

您可能會注意到,在每種情況下,光線渲染也會有所不同。

我看着.JSON和.JS文件,不知道如何手動編輯,如果這是最終需要的。

也許某些模型不會正常紋理?

+0

什麼問題是什麼呢?左邊的照片對我來說很好看? –

+0

如果您認爲這是一個three.js錯誤,請在three.js網站上提交一個錯誤報告,並提供一個包含所有項目文件的zip文件的鏈接,包括一個簡單的演示。 – WestLangley

+0

嗨,問題是我需要讓它在.JSON或.JS中正常工作才能使用Three.js框架進行動畫製作。我解決了照明問題,以及最右邊的圖像上的奇怪的war ling聲。它是由一個已經從Blender保存一次的.OBJ開始引起的。唯一剩下的問題是我無法弄清頭髮使用的座標映射。 – aoedipus

回答

0

您的模型頭部的UV值超出範圍[0,1]。

當你加載你的JSON模式,建立

texture.wrapS = texture.wrapT = THREE.RepeatWrapping; 

three.js所r.77

+0

謝謝!儘管如此,仍感覺遲緩。事實上,在.js文件中有[0,1]範圍外的UV參考,如果被移除,紋理的頭髮區域會變黑。但是,我試圖簡單的包裝變化沒有任何影響:'var loader = new THREE.JSONLoader(); loader.load(「xx/model.js」,function(geometry,materials){ var hairTexture = new THREE.TextureLoader()。load(「xx/hair.png」); hairTexture.wrapS = hairTexture.wrapT = THREE.RepeatWrapping; mesh = new THREE.Mesh(geometry,new THREE.MeshFaceMaterial(materials)); scene.add(mesh); });' – aoedipus

+0

問題已解決。我在Blender中學習了UV編輯的樂趣,收集了所有那些漂浮在紋理圖像邊界外的小網格物體,將它們正確放置,重新導出OBJ,並用Python腳本進行轉換...等等。一旦我掌握了它的一竅不通,那麼無意義的樂趣。再次感謝您試圖幫助這個老noob ... – aoedipus