How to get uniform lighting between two adjacent mesh?

Hello, I have a basic scene with two MeshStandardMaterials, and I’m using noise to displace the vertices. I have lighting and shadows enabled, but I can’t seem to get uniform lighting to work between the two meshes.: Here is my code

Try to calculate normal vectors by yourself, instead of using computeVertexNormals:

function addNoise(quad){
	const v = new THREE.Vector3();   // create once
	const u = new THREE.Vector3();   // create once
	const w = new THREE.Vector3();   // create once

	for (let i = 0; i  < quad.geometry.attributes.position.count; i++) {
  		v.fromBufferAttribute(quad.geometry.attributes.position, i);
		quad.localToWorld( v );
		v.z = noise3D(v.x/3,v.y/3,v.z/3);
		quad.geometry.attributes.position.setZ(i,v.z )
		u.x += 0.1;
		u.z = noise3D(u.x/3,u.y/3,u.z/3);

		w.y += 0.1;
		w.z = noise3D(w.x/3,w.y/3,w.z/3);

	quad.geometry.attributes.position.needsUpdate = true
	quad.geometry.attributes.normal.needsUpdate = true

1 Like