Three.js 使用MeshPhongMaterial的envMap反射上的3.js[r84]奇怪的1像素垂直线

Three.js 使用MeshPhongMaterial的envMap反射上的3.js[r84]奇怪的1像素垂直线,three.js,Three.js,看来MeshPhongMaterial的envMap实现中可能存在错误 我构建了一个简单的场景,其中包含一个球体和一个带有envMap纹理(半白半黑)的MeshPhongMaterial 您将在附加的图像中看到,反射中出现了一条垂直的1px线,而这条线不应该出现在那里 有人有这个问题吗?有什么解决办法吗 这是我使用的代码 var mat1= new THREE.MeshPhongMaterial({ color:0x999999, specular:

看来MeshPhongMaterial的envMap实现中可能存在错误

我构建了一个简单的场景,其中包含一个球体和一个带有envMap纹理(半白半黑)的MeshPhongMaterial

您将在附加的图像中看到,反射中出现了一条垂直的1px线,而这条线不应该出现在那里

有人有这个问题吗?有什么解决办法吗

这是我使用的代码

    var mat1= new THREE.MeshPhongMaterial({
        color:0x999999, 
        specular:0xFFFFFF,
        reflectivity:1,

    });

    var loader = new THREE.TextureLoader();
    loader.load('test1.png',function ( texture ) {

       texture.wrapS = THREE.RepeatWrapping;
       texture.wrapT = THREE.RepeatWrapping;
       texture.mapping = THREE.EquirectangularReflectionMapping;
       texture.repeat.set( 1 , 1 ); 

       mat1.envMap=texture;
       mat1.needsUpdate=true;
    });


    var mesh = new THREE.Mesh(new THREE.SphereGeometry( 35, 32, 32 ), 
                              mat1 );      
    scene.add(mesh);

谢谢

如果您使用
THREE.SphereCalReflectionMapping
?我试过了,但效果不同。使用SphereCalReflectionMapping时,反射不会随着相机的移动而改变。仅作为一种解决方法,请尝试将uv坐标从1.0更改为0.99。我猜您的图像是536x283,这会导致映射问题。由于envMap依赖于添加着色器辅助对象,因此我会将图像的大小调整为512x256,最好是256x256或512x512,依此类推。Gaitat的建议也可以弥补这个问题。我尝试设置Texture.repeat(0.99,0,99),但在贴图为“等角反射贴图”时没有效果。我也尝试了512x512纹理(任意2次幂),但运气不好。如果使用
3.SphereCalReflectionMapping
,会怎么样?我尝试过,但效果不同。使用SphereCalReflectionMapping时,反射不会随着相机的移动而改变。仅作为一种解决方法,请尝试将uv坐标从1.0更改为0.99。我猜您的图像是536x283,这会导致映射问题。由于envMap依赖于添加着色器辅助对象,因此我会将图像的大小调整为512x256,最好是256x256或512x512,依此类推。Gaitat的建议也可以弥补这个问题。我尝试设置Texture.repeat(0.99,0,99),但在贴图为“等角反射贴图”时没有效果。我也尝试了512x512纹理(任意2次方),但运气不佳。