2013-01-12 49 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

相关问题