2013-05-15 54 views
0

我一直在努力Three.js一個月,主要是學習它如何工作,我該怎麼做。現在,我正在通過上傳汽車的.obj模型來做汽車博覽會。我的問題是,從圖像中的某些角度看,汽車的某些面部是不可見的。.obj模型和法線

我正在使用Maya 2012和Blender 2.5來模擬不正常嘗試面對法線或頂點它們,但沒有任何工作。 對於上傳,我在存儲庫中使用.obj和mtl加載器。

希望你能幫助我,在此先感謝。

https://f.cloud.github.com/assets/3899568/507362/4e3a7bf0-bd6e-11e2-8a54-47b1949bba69.jpg

+0

如果您在材質定義中添加了'side:THREE.DoubleSide',模型是否顯示正確?如果是這樣,那麼你的法線是不正確的。 – gaitat

+0

對不起,我不知道在哪裏定義.obj的材料。 這是我上傳代碼模式。希望能幫助到你。至少,當我檢查瑪雅的模型時,法線看起來不錯。 var loader = new THREE.OBJMTLLoader(); loader.addEventListener( '負載',函數(事件){ \t變種對象= event.content; \t object.position.y = -1; \t object.rotation.y = 0.8; \t scene.add(對象); \t THREE.GeometryUtils.center(geometry); }); loader.load('obj/auto_1/autote.obj','obj/auto_1/autote.mtl'); – Tro1ka

+0

說明:在THREE.GeometryUtils.center(geometry)' – gaitat

回答

0

問題不在於法線和紋理座標。如果使用gl.DrawElements和OBJMTLLoader的當前實現,那麼目前WebGL的限制只能引用每個繪製調用的65k個頂點。所以你的汽車模型(順便說一下,很棒的車型)不能被視爲現實。你需要分解它。你可以看看three.js/utils/converters/obj/split_obj.py。但是這個腳本存在一個問題,記錄在https://github.com/mrdoob/three.js/issues/2397。所以你將無法看到材料。因此,從Maya或Blender中導出許多模型,並確保生成的obj沒有大於65535的臉部索引。否則再次分割。

也在下一個版本(three.js r59)中,我相信會有一個NormalHelper函數,因此您將能夠查看您的法線。

+0

謝謝!! 現在我明白了爲什麼它沒有工作。我會爲這個項目嘗試更簡單的對象。 – Tro1ka

0

請參閱從R49移植到R50:

紋理座標不再被翻轉的幾何形狀,而不是紋理有flipY屬性(默認值是true);所有模型都需要重新導出/重新轉換(工具也已更新)。 解決方法:uv.v = 1 - uv.v;

我有一個類似的問題,將flipY設置爲false來解決紋理問題。

+0

感謝您的幫助 我在哪裏必須設置flipY爲false?在mtl文件中? – Tro1ka