three.js - 远离相机的物体会出现锯齿状纹理

时间:2014-10-15 17:24:54

标签: three.js textures

我在场景中稍远一些的物体上使用纹理。纹理变得非常锯齿状,并在相机移动时产生令人不安的效果。我试过改变各向异性,我试过改变min和mag滤波器,但似乎没有任何帮助。

代码我用来加载纹理(所有纹理都是1024px×1024px):

var texture = new THREE.Texture();
var texloader = new THREE.ImageLoader(manager);
texloader.load('static/3d/' + name + '.jpg', function (image) {
    texture.image = image;
    texture.needsUpdate = true;
    texture.anisotropy = 1;
    texture.minFilter = THREE.LinearFilter;
    texture.magFilter = THREE.LinearMipmapLinearFilter;
});

您可以在此处看到它:http://www.90595.websys.sysedata.no/

3 个答案:

答案 0 :(得分:2)

gaitat错了,你确实想要mipmap。 您的代码的问题是它们不会生成。 使用控制台,我发现虽然" generateMipmaps"在纹理中设置为" true",不会生成mipmap,如此屏幕截图所示:http://imgur.com/hAUEaur

我看了你的纹理,我相信由于你的纹理不是2的幂(例如128x128,256x256,512x512),所以没有生成mipmap。尝试制作宽度和高度为2的幂的纹理,我认为将生成mipmap并且它们不会再看起来像锯齿状。

答案 1 :(得分:0)

随着物体远离相机移动,webgl使用自动生成的纹理称为mipmap。这些分辨率较低。如果你不喜欢他们,请通过以下方式禁用它们:

texture.generateMipmaps = false;

答案 2 :(得分:0)

好。所以我想我尝试了所有不同的mipmap过滤器,但显然没有。所以这就是最终做到的伎俩:

texture.minFilter = THREE.NearestMipMapNearestFilter;
texture.magFilter = THREE.LinearMipMapLinearFilter;

根本不需要anisotropy