2017-07-28 57 views
1

我將我的攪拌機模型導出到OBJ並將其加載到Three.js。攪拌機出口到OBJ並加載Three.js,網格法線和麪臨錯誤

  • 對於車輪法線似乎是朝內。
  • 對於軌道,僅出現網格並且看起來沒有正確映射。

我在混合器中重新導入了OBJ,它似乎正確顯示,所以它似乎是Three.js中的問題。

Image in blender showing the normals of the wheels are correct, and the track appears correctly.

Codepen of the Three.js code, and OBJ model is here

var material = new THREE.MeshLambertMaterial({ color: 0xcc8729 }); 

//Loader for the model 
var loader = new THREE.OBJLoader(); 
var geometry = loader.parse(getObjFileAsString()); 
geometry.position.set(0, 0, 0); 
geometry.castShadow = true; 
geometry.receiveShadow = true; 
geometry.traverse(child => { 
    if (child instanceof THREE.Mesh) { 
    child.material = material; 
    } 
}); 
scene.add(geometry); 

我需要重塑車輪和軌道?或者有沒有辦法在Three.js中修復它?

+0

是你的車輪偶然負面的規模? 你能分享你的攪拌機文件嗎? –

回答

0

問題是爲什麼導出到obj翻轉臉部法線?

我唯一的猜測是你的對象有一個負值。因此您必須應用比例和旋轉shift-a快捷方式。那麼你應該仔細檢查你的法線是否仍然朝外。看到我的回答here

在Three.js中,您還可以通過玩material.side值 來解決翻轉的法線,這裏有雙面,背面和正面。 source

node.material.side = THREE.DoubleSide; 
+0

不知何故,即使當我創建新的氣瓶時,它也有同樣的問題。顯然,只有當我將「Cap填充類型」從「Ngon」更改爲「Triangle Fan」時,它才能正確導出到OBJ。 解決了我的問題。 對於曲目,我仍然是上面的問題。 我通過創建一個圓柱體來模擬軌道,去除蓋面,然後擠出外表面。 什麼是最好的方式來建模,並將其正確導出? –