i have discovered why the bottom of object with metalic matérial are black , the top was strange , and found some plant on side .
it is because when i use to const envMap = generator.fromScene( scene ,0,0.1,1300 );
it is create an envMap like it was in the center of the world ( = 0 ,0 ,0 ) and not in the center of the object
but my scene i need is at 160 meter of altitude and my metallic objet is above 160 meter .
so how can i use PMREMGenerator to do like it is at the same position of my metallic object ?
Edit : i ve found a solution which is not the best practice but it is working . so i take the position of my metal objet , i translates all the scene like this objet is in the center of the world and after i do inverse translation .
var sphereTest = scene.getObjectByName('spheretest');
var metalx = sphereTest.position.x ;
var metaly = sphereTest.position.y;
var metalz = sphereTest.position.z;
const generator = new THREE.PMREMGenerator( renderer );
const envMap = generator.fromScene( scene ,0,0.1,1300 );
envMap.mapping = THREE.CubeRefractionMapping;;
envMap.texture.encoding = THREE.sRGBEEncoding ;
sphereTest.material.envMap = envMap.texture;
sphereTest.material.envMapIntensity = 1 ;
see the result
Edit 2 : i want to say that i dont really understand what i m doing , i try and see the result until something working . I ve just discovered that the line envMap.mapping = THREE.CubeRefractionMapping;
is not good , change Refraction by Reflection , no change , remove the line and get same result see the result without this line ( same result that above picture )
edit3 : it is very great , i have used a cube , apply quaternion and it look like a mirror which spinning . It is like envMap stay at the same position and the object3D can turn .
to simulate night i decrease intensity cube.material.envMapIntensity