Skip to content
Snippets Groups Projects
Commit a9dce2e6 authored by HERRY Matteo's avatar HERRY Matteo
Browse files

verre transparent + reflets

parent c9db4b1a
No related branches found
No related tags found
No related merge requests found
...@@ -251,31 +251,48 @@ var mtlLoader1 = new MTLLoader(); ...@@ -251,31 +251,48 @@ var mtlLoader1 = new MTLLoader();
console.error('An error happened', error); console.error('An error happened', error);
} }
); );
var loader5 = new OBJLoader(); var loader5 = new OBJLoader();
loader5.load( loader5.load(
'verre.obj', 'verre.obj',
function (object) { function (object) {
normalizeAndPosition(object, 0.8, new THREE.Vector3(2.6, 3.3, -0.1)); normalizeAndPosition(object, 0.8, new THREE.Vector3(2.6, 3.3, -0.1));
object.rotation.x = 4 object.rotation.x = 4;
object.rotation.y = -0.2 object.rotation.y = -0.2;
object.rotation.z =1.0 object.rotation.z = 1.0;
var material = new THREE.MeshPhysicalMaterial({ var material = new THREE.MeshPhysicalMaterial({
color: new THREE.Color(107 / 255, 109 / 255, 115 / 255), // Couleur de base color: new THREE.Color(107 / 255, 109 / 255, 115 / 255),
roughness: 0.5, // Simuler un verre lisse roughness: 0.05, // Plus c'est bas, plus ça brille
metalness: 0, // Le verre n'est pas métallique metalness: 1, // Met à fond pour des reflets comme un vrai miroir
transparent: true, // Transparent transparent: true,
opacity: 0.9, // Niveau de transparence opacity: 0.9,
transmission: 1.0, transmission: 1.0,
clearcoat: 1.0, // Effet de brillance clearcoat: 1.0,
clearcoatRoughness: 0.1, clearcoatRoughness: 0.05,
reflectivity: 1,
ior: 1.52, // Indice de réfraction (comme le vrai verre)
envMapIntensity: 2.5, // J'ai monté encore plus fort
}); });
// 🪞 Création de la caméra pour gérer les reflets
const cubeRenderTarget = new THREE.WebGLCubeRenderTarget(128);
const camera = new THREE.CubeCamera(1, 1000, cubeRenderTarget);
scene.add(camera);
material.envMap = cubeRenderTarget.texture;
// Appliquer le matériau à chaque maillage de l'objet // Appliquer le matériau à chaque maillage de l'objet
object.traverse(function(child) { object.traverse(function(child) {
if (child.isMesh) { if (child.isMesh) {
child.material = material; child.material = material;
} }
}); });
scene.add(object); scene.add(object);
// 🎯 Stocker la caméra pour la mettre à jour à chaque frame
object.userData.cubeCamera = camera;
}, },
function (xhr) { function (xhr) {
console.log((xhr.loaded / xhr.total * 100) + '% loaded'); console.log((xhr.loaded / xhr.total * 100) + '% loaded');
...@@ -284,6 +301,7 @@ var mtlLoader1 = new MTLLoader(); ...@@ -284,6 +301,7 @@ var mtlLoader1 = new MTLLoader();
console.error('An error happened', error); console.error('An error happened', error);
} }
); );
CreationTable(); CreationTable();
CreationNappe(); CreationNappe();
...@@ -298,6 +316,16 @@ function animate() { ...@@ -298,6 +316,16 @@ function animate() {
function render() { function render() {
var delta = clock.getDelta(); var delta = clock.getDelta();
cameraControls.update(delta); cameraControls.update(delta);
// Mise à jour des reflets pour l'objet en verre
scene.traverse(function(obj) {
if (obj.userData.cubeCamera) {
obj.visible = false; // Cache temporairement l'objet pour éviter les artefacts
obj.userData.cubeCamera.update(renderer, scene);
obj.visible = true; // Ré-affiche l'objet avec les reflets
}
});
renderer.render(scene, camera); renderer.render(scene, camera);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment