Three.js 使用MeshPhongMaterial的envMap反射上的3.js[r84]奇怪的1像素垂直线
看来MeshPhongMaterial的envMap实现中可能存在错误 我构建了一个简单的场景,其中包含一个球体和一个带有envMap纹理(半白半黑)的MeshPhongMaterial 您将在附加的图像中看到,反射中出现了一条垂直的1px线,而这条线不应该出现在那里 有人有这个问题吗?有什么解决办法吗 这是我使用的代码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:
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次方),但运气不佳。