2013-01-12 48 views
3

在我使用Three.js(r52)的遊戲中,我在照明方面遇到了一些麻煩。爲什麼我牆上的照明看起來很有趣? Three.js

這個地牢等級使用簡單的長方體作爲牆壁和屋頂。出於某種原因,每個網格開始時照明都很亮,但是隨後會漸漸變暗而朝向另一側。

請注意,地板沒有文物,這是因爲它是一個巨大的四邊形。 enter image description here

使用的光是PointLight。我網格的材料只是這樣創建:

var texture = new THREE.Texture(image, 
    new THREE.UVMapping(), 
    THREE.RepeatWrapping, 
    THREE.RepeatWrapping, 
    THREE.NearestFilter, 
    THREE.NearestMipMapLinearFilter); 

    return new THREE.MeshLambertMaterial({ 
    map : texture 
    }); 

長方體從3DS出口OBJ車型最多,轉化利用GW :: OBJ-出口國。這是我的出口設置:

enter image description here

任何想法?

回答

3

顯然你打相同的問題在這個線程:https://github.com/mrdoob/three.js/issues/1258

你需要使用類似material.shading = THREE.FlatShading;

+0

非常感謝你,你是一個拯救生命的人! :D – Nick

+3

實際上,你問「爲什麼?」。原因在於立方體面的_left edge_上的頂點法線不平行於立方體面的_right edge_上的頂點法線。因此,在兩個立方體相遇的接縫處存在不連續性。使用THREE.FlatShading會忽略頂點法線,而是在光照計算中使用面法線。如果你的頂點法線是平行的,你就不會看到這個神器。 – WestLangley

相關問題