diff --git a/DUFOUR/chambre.js b/DUFOUR/chambre.js
index 03153a2bcd6f484f0601370f53fa9d06db45ae4a..c15ede81bad8f86977be34194035a6ef9c92976d 100644
--- a/DUFOUR/chambre.js
+++ b/DUFOUR/chambre.js
@@ -1,349 +1,217 @@
-"use strict";
-import * as THREE from 'three';
-import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
-import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
-import { OBJLoader } from 'three/addons/loaders/OBJLoader.js'; // Ajout de l'import OBJLoader
-import { Coordinates } from '../lib/Coordinates.js';
-
-var camera, renderer;
-// var windowScale;
-window.scene = new THREE.Scene();
-var cameraControls;
-var clock = new THREE.Clock();
-var transparentCube;
-
-const loader = new GLTFLoader();
-
-function fillScene() {
-    scene = new THREE.Scene();
-    scene.fog = new THREE.Fog(0x808080, 3000, 4000);
-
-    // LIGHTS
-    scene.add(new THREE.AmbientLight(0x222222));
-
-    var light = new THREE.DirectionalLight(0xFFFFFF, 0.7);
-    light.position.set(200, 500, 500);
-    scene.add(light);
-
-    light = new THREE.DirectionalLight(0xFFFFFF, 0.9);
-    light.position.set(-200, -100, -400);
-    scene.add(light);
-
-    Coordinates.drawGround({ size: 800 });
-
-    // Cube Transparent au Centre
-    var transparentMaterial = new THREE.MeshBasicMaterial({
-        transparent: true,
-        opacity: 0
-    });
-
-    var cubeGeometry = new THREE.BoxGeometry(100, 100, 100);
-    transparentCube = new THREE.Mesh(cubeGeometry, transparentMaterial);
-    transparentCube.position.set(0, 50, 0);
-    scene.add(transparentCube);
-
-    // Sol
-    var floorTexture = new THREE.TextureLoader().load('elements/sol_boiserie.jpg');
-    floorTexture.wrapS = THREE.RepeatWrapping;
-    floorTexture.wrapT = THREE.RepeatWrapping;
-    floorTexture.repeat.set(2, 2); // Réduire la répétition du sol
-    var floorMaterial = new THREE.MeshBasicMaterial({ map: floorTexture });
-    var floor = new THREE.Mesh(new THREE.PlaneGeometry(400, 400), floorMaterial); // Réduit la taille du sol
-    floor.rotation.x = -Math.PI / 2;
-    floor.position.y = 0;
-    scene.add(floor);
-
-    // Murs
-    var wallTexture = new THREE.TextureLoader().load('elements/mur_bleu.jpg');
-    var wallMaterial = new THREE.MeshBasicMaterial({ map: wallTexture });
-
-    var backWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial); // Réduit la taille du mur
-    backWall.position.set(0, 150, -200); // Ajuster la position
-    scene.add(backWall);
-
-    var leftWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial); // Réduit la taille du mur
-    leftWall.rotation.y = Math.PI / 2;
-    leftWall.position.set(-200, 150, 0); // Ajuster la position
-    scene.add(leftWall);
-
-    var rightWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial); // Réduit la taille du mur
-    rightWall.rotation.y = -Math.PI / 2;
-    rightWall.position.set(200, 150, 0); // Ajuster la position
-    scene.add(rightWall);
-
-    var frontWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial); // Réduit la taille du mur
-    frontWall.rotation.y = Math.PI;
-    frontWall.position.set(0, 150, 200); // Ajuster la position
-    scene.add(frontWall);
-
-    // lit
-    loader.load('elements/wooden_bed.glb', function (gltf) {
-        let bed = gltf.scene;
-        bed.position.set(130 - 50, 0, 127); // Le lit est collé au mur droit, position ajustée
-        bed.scale.set(100, 100, 100);
-        bed.rotation.y =11;  // Faire tourner le lit pour que les pieds soient devant l'utilisateur
-        scene.add(bed);
-    });
-
-    //chaise 
-    loader.load('elements/wooden_chair.glb', function (gltf) {
-        let chair1 = gltf.scene.clone();
-        let chair2 = gltf.scene.clone();
-        
-        chair1.position.set(100, 0, 0); // Première chaise à côté du lit
-        chair1.rotation.y =12;
-        chair2.position.set(-100, 0, -150); // Deuxième chaise à côté de la première
-        chair2.rotation.y =12;
-        
-        chair1.scale.set(100, 100, 100);
-        chair2.scale.set(100, 100, 100);
-        
-        scene.add(chair1);
-        scene.add(chair2);
-
-        // Charger la table au format OBJ
-        const objLoader = new OBJLoader();
-        objLoader.load('elements/wooden_table.obj', function (object) {
-            // Appliquer un matériau à tous les enfants de l'objet
-            object.traverse(function (child) {
-                if (child instanceof THREE.Mesh) {
-                    child.material = new THREE.MeshStandardMaterial({
-                        color: 0x8B4513, // Couleur bois
-                        roughness: 0.8,
-                        metalness: 0.2
-                    });
-                }
-            });
-            
-            // Ajuster la position, la taille et la rotation de la table
-            object.position.set(100, 0, -110); // Position entre les chaises
-            object.scale.set(100, 100, 100); // Échelle à ajuster selon le modèle
-            object.rotation.y = Math.PI / 4;
-            
-            // Ajouter la table à la scène
-            scene.add(object);
-
-
-            // Charger la théière et la placer sur la table
-            objLoader.load('elements/tea.obj', function (teapot) {
-                // Appliquer un matériau à la théière
-                teapot.traverse(function (child) {
-                    if (child instanceof THREE.Mesh) {
-                        child.material = new THREE.MeshStandardMaterial({
-                            color: 0x0000FF, // Couleur bleu
-                            roughness: 0.2,
-                            metalness: 0.8
-                        });
-                    }
-                });
-                
-                // Positionner la théière sur la table
-                teapot.position.set(100, 105, -110); // Même position X/Z que la table mais plus haut en Y
-                teapot.scale.set(10, 10, 10); // Échelle appropriée pour la théière
-                teapot.rotation.y = Math.PI / 4; // Même rotation que la table
-                
-                // Ajouter la théière à la scène
-                scene.add(teapot);
-
-
-
-                // Charger le vase et le placer à côté de la théière
-                objLoader.load('elements/vase.obj', function (vase) {
-                    // Appliquer un matériau au vase
-                    vase.traverse(function (child) {
-                        if (child instanceof THREE.Mesh) {
-                            child.material = new THREE.MeshStandardMaterial({
-                                color: 0x0000FF, // Couleur orange-rouge
-                                roughness: 0.1,
-                                metalness: 0.2
-                            });
-                        }
-                    });
-
-                    // Positionner le vase à côté de la théière sur la table
-                    vase.position.set(80, 84, -130); // Position décalée par rapport à la théière
-                    vase.scale.set(1, 1, 1); // Ajuster l'échelle selon la taille du modèle
-                    vase.rotation.x = -(Math.PI / 2); // 90 degrés
-                    
-                    // Ajouter le vase à la scène
-                    scene.add(vase);
-
-                    // Créer un verre simple avec une géométrie de cylindre
-                    const glassGeometry = new THREE.CylinderGeometry(3, 2.5, 8, 16);
-                    const glassMaterial = new THREE.MeshPhysicalMaterial({
-                        color: 0x0066FF,        // Couleur bleue
-                        transparent: true,       // Transparent pour l'effet verre
-                        opacity: 0.6,           // Semi-transparent
-                        roughness: 0.1,         // Lisse
-                        metalness: 0.0,         // Non métallique
-                        clearcoat: 1.0,         // Effet de vernis
-                        clearcoatRoughness: 0.1 // Vernis lisse
-                    });
-                    
-                    const glass = new THREE.Mesh(glassGeometry, glassMaterial);
-                    
-                    // Positionner le verre à côté du vase sur la table
-                    glass.position.set(65, 87, -130); // Ajusté pour être à côté du vase
-                    glass.scale.set(1, 1, 1);
-                    
-                    // Ajouter le verre à la scène
-                    scene.add(glass);
-
-
-
-                    // Ajouter deux bougies sur la table
-                    objLoader.load('elements/candle.obj', function (candle) {
-                        // Appliquer un matériau à la bougie
-                        candle.traverse(function (child) {
-                            if (child instanceof THREE.Mesh) {
-                                child.material = new THREE.MeshStandardMaterial({
-                                    color: 0xF5DEB3, // Couleur crème
-                                    roughness: 0.7,
-                                    metalness: 0.1
-                                });
-                            }
-                        });
-                        
-                        // Créer un clone pour la deuxième bougie
-                        const candle1 = candle;
-                        const candle2 = candle.clone();
-                        
-                        // Positionner les bougies sur la table
-                        candle1.position.set(110, 84, -90); // Premier emplacement
-                        candle1.scale.set(3, 3, 3); // Ajuster la taille selon le modèle
-                        candle1.rotation.y = Math.PI / 6; // Légère rotation
-                        
-                        candle2.position.set(110, 84, -100); // Deuxième emplacement
-                        candle2.scale.set(3, 3, 3);
-                        candle2.rotation.y = -Math.PI / 8; // Rotation différente
-                        
-                        // Ajouter les bougies à la scène
-                        scene.add(candle1);
-                        scene.add(candle2);
-                    });
-
-
-                    
-                });
-            });
-
-
-
-            
-            
-        });
-    });
-
-   // Fenêtre
-    loader.load('elements/wooden_window.glb', function (gltf) {
-    let window = gltf.scene;
-
-    // Créer un matériau transparent pour la fenêtre
-    let transparentMaterial = new THREE.MeshBasicMaterial({
-        transparent: true,
-        opacity: 0.3,  // Augmenter l'opacité pour tester si cela résout le problème
-        color: new THREE.Color(0x0A3613)  // Utilisation de la couleur en hexadécimal
-    });
-
-    
-
-    
-
-    // Appliquer le matériau transparent à tous les objets de la fenêtre
-    window.traverse(function (child) {
-        if (child.isMesh) {
-            child.material = transparentMaterial;  // Appliquer à chaque mesh de la fenêtre
-        }
-    });
-
-    // Positionner et ajouter la fenêtre à la scène
-    window.position.set(247 - 50, 160, 100);
-    window.rotation.y = 11;
-    window.scale.set(100, 100, 100);
-    scene.add(window);
-
-/*
-   // Créer un carré jaune derrière la fenêtre
-    var squareMaterial = new THREE.MeshBasicMaterial({
-        color: new THREE.Color(0xb8eb7d)  // Utilisation de la couleur en hexadécimal
-    });
-
-
-    var squareGeometry = new THREE.PlaneGeometry(60, 100); // Taille du carré
-    var Square = new THREE.Mesh(squareGeometry, squareMaterial);
-
-    // Positionner le carré juste derrière la fenêtre
-    Square.position.set(248 - 50, 160, -10); // Juste derrière la fenêtre
-    Square.rotation.y = 11; // Aligner la rotation du carré avec celle de la fenêtre
-
-    // Ajouter le carré jaune à la scène
-    scene.add(Square);*/
-});
-
-
-    // Portes face à face
-    var doorTexture = new THREE.TextureLoader().load('elements/porte.jpg');
-    var doorMaterial = new THREE.MeshBasicMaterial({ map: doorTexture });
-
-    var door1 = new THREE.Mesh(new THREE.PlaneGeometry(150, 250), doorMaterial);
-    door1.position.set(0, 125, 199); // Ajuster la position verticale des portes
-    scene.add(door1);
-
-    var door2 = new THREE.Mesh(new THREE.PlaneGeometry(150, 250), doorMaterial);
-    door2.position.set(0, 125, -199); // Ajuster la position verticale des portes
-    scene.add(door2);
-}
-
-function init() {
-    var canvasWidth = 900;
-    var canvasHeight = 500;
-    var canvasRatio = canvasWidth / canvasHeight;
-
-    // RENDERER
-    renderer = new THREE.WebGLRenderer({ antialias: true });
-    renderer.gammaInput = true;
-    renderer.gammaOutput = true;
-    renderer.setSize(canvasWidth, canvasHeight);
-    renderer.setClearColor(0xAAAAAA, 1.0);
-
-    // CAMERA
-    camera = new THREE.PerspectiveCamera(45, canvasRatio, 1, 4000);
-    // orientation, hauteur, profondeur
-    camera.position.set(-400, 400, 20); // Déplacer la caméra plus près du centre
-    camera.lookAt(new THREE.Vector3(0, 0, 0));
-
-    // CONTROLS
-    cameraControls = new OrbitControls(camera, renderer.domElement);
-    cameraControls.enableDamping = true;
-    cameraControls.dampingFactor = 0.05;
-    cameraControls.rotateSpeed = 1.0;
-}
-
-function addToDOM() {
-    var container = document.getElementById('webGL');
-    var canvas = container.getElementsByTagName('canvas');
-    if (canvas.length > 0) {
-        container.removeChild(canvas[0]);
-    }
-    container.appendChild(renderer.domElement);
-}
-
-function animate() {
-    requestAnimationFrame(animate);
-    render();
-}
-
-function render() {
-    var delta = clock.getDelta();
-    cameraControls.update();
-    renderer.render(window.scene, camera);
-}
-
-try {
-    init();
-    fillScene();
-    animate();
-    addToDOM();
-} catch (e) {
-    console.error("Erreur lors du rendu:", e);
-}
+import * as THREE from 'three';
+import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+import { OBJLoader } from 'three/addons/loaders/OBJLoader.js'; // Remplacer GLTFLoader par OBJLoader
+import { Coordinates } from '../lib/Coordinates.js';
+
+var camera, renderer;
+window.scene = new THREE.Scene();
+var cameraControls;
+var clock = new THREE.Clock();
+var transparentCube;
+
+const objLoader = new OBJLoader(); // Utilisation de OBJLoader au lieu de GLTFLoader
+
+function fillScene() {
+    scene.fog = new THREE.FogExp2(0xB0BEC5, 0.001);
+
+    // LIGHTS
+    scene.add(new THREE.AmbientLight(0x222222));
+
+    var light = new THREE.DirectionalLight(0xFFFFFF, 4);
+    light.position.set(200, 400, 400);
+    light.castShadow = true; // Cette lumière génère des ombres
+    scene.add(light);
+
+    light = new THREE.DirectionalLight(0xFFFFFF, 3);
+    light.position.set(-200, -100, -400);
+    light.castShadow = true; // Cette lumière génère des ombres
+    scene.add(light);
+
+    // Optionally adjust the shadow for the light
+    light.shadow.mapSize.width = 1024;
+    light.shadow.mapSize.height = 1024;
+    light.shadow.camera.near = 1;
+    light.shadow.camera.far = 1000;
+    light.shadow.bias = -0.005;
+
+    Coordinates.drawGround({ size: 800 });
+
+    // Cube Transparent au Centre
+    var transparentMaterial = new THREE.MeshBasicMaterial({
+        transparent: true,
+        opacity: 0
+    });
+    var cubeGeometry = new THREE.BoxGeometry(100, 100, 100);
+    transparentCube = new THREE.Mesh(cubeGeometry, transparentMaterial);
+    transparentCube.position.set(0, 50, 0);
+    transparentCube.castShadow = true; // Activer la projection d'ombre
+    transparentCube.receiveShadow = true; // Activer la réception d'ombre
+    scene.add(transparentCube);
+
+    // Sol
+    var floorTexture = new THREE.TextureLoader().load('elements/sol_boiserie.jpg');
+    var floorMaterial = new THREE.MeshStandardMaterial({ map: floorTexture });
+    var floor = new THREE.Mesh(new THREE.PlaneGeometry(400, 400), floorMaterial);
+    floor.rotation.x = -Math.PI / 2;
+    floor.position.y = 0;
+    floor.receiveShadow = true; // Le sol reçoit des ombres
+    scene.add(floor);
+
+    // Murs
+    var wallTexture = new THREE.TextureLoader().load('elements/mur_bleu.jpg');
+    var wallMaterial = new THREE.MeshStandardMaterial({ map: wallTexture });
+
+    var backWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial);
+    backWall.position.set(0, 150, -200);
+    scene.add(backWall);
+
+    var leftWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial);
+    leftWall.rotation.y = Math.PI / 2;
+    leftWall.position.set(-200, 150, 0);
+    scene.add(leftWall);
+
+    var rightWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial);
+    rightWall.rotation.y = -Math.PI / 2;
+    rightWall.position.set(200, 150, 0);
+    scene.add(rightWall);
+
+    var frontWall = new THREE.Mesh(new THREE.PlaneGeometry(400, 300), wallMaterial);
+    frontWall.rotation.y = Math.PI;
+    frontWall.position.set(0, 150, 200);
+    scene.add(frontWall);
+
+    // Lit 
+    objLoader.load('elements/wooden_bed.obj', function (object) {
+        let bed = object;
+        bed.position.set(130 - 50, 0, 127);
+        bed.scale.set(100, 100, 100);
+        bed.rotation.y = 11;
+        bed.castShadow = true; // Activer la projection d'ombre
+        bed.receiveShadow = true; // Activer la réception d'ombre
+        scene.add(bed);
+    });
+
+    // Chaise
+    objLoader.load('elements/wooden_chair.obj', function (object) {
+        let chair1 = object.clone();
+        let chair2 = object.clone();
+        
+        chair1.position.set(100, 0, 0); // Première chaise à côté du lit
+        chair1.rotation.y = 12;
+        chair2.position.set(-100, 0, -150); // Deuxième chaise à côté de la première
+        chair2.rotation.y = 12;
+        
+        chair1.scale.set(100, 100, 100);
+        chair2.scale.set(100, 100, 100);
+        
+        chair1.castShadow = true; // Activer la projection d'ombre
+        chair1.receiveShadow = true; // Activer la réception d'ombre
+        chair2.castShadow = true; // Activer la projection d'ombre
+        chair2.receiveShadow = true; // Activer la réception d'ombre
+
+        scene.add(chair1);
+        scene.add(chair2);
+    });
+
+    // Table 
+    objLoader.load('elements/wooden_table.obj', function (object) {
+        object.traverse(function (child) {
+            if (child instanceof THREE.Mesh) {
+                child.material = new THREE.MeshStandardMaterial({
+                    color: 0x8B4513, // Couleur bois
+                    roughness: 0.8,
+                    metalness: 0.2
+                });
+            }
+        });
+
+        object.position.set(100, 0, -110);
+        object.scale.set(100, 100, 100);
+        object.rotation.y = Math.PI / 4;
+        object.castShadow = true; // Activer la projection d'ombre
+        object.receiveShadow = true; // Activer la réception d'ombre
+        scene.add(object);
+    });
+
+    // Fenêtre 
+    var windowTexture = new THREE.TextureLoader().load('elements/window.jpg');
+    var windowMaterial = new THREE.MeshStandardMaterial({ map: windowTexture });
+    var window = new THREE.Mesh(new THREE.PlaneGeometry(75, 125), windowMaterial);
+    window.position.set(199, 160, -80);
+    window.rotation.y = 11;
+    scene.add(window);
+
+    // Portes face à face
+    var doorTexture = new THREE.TextureLoader().load('elements/porte.jpg');
+    var doorMaterial = new THREE.MeshStandardMaterial({ map: doorTexture });
+
+    var door1 = new THREE.Mesh(new THREE.PlaneGeometry(150, 250), doorMaterial);
+    door1.position.set(-60, 125, 199);
+    door1.rotation.y = 22;
+    door1.castShadow = true; // Activer la projection d'ombre
+    door1.receiveShadow = true; // Activer la réception d'ombre
+    scene.add(door1);
+
+    var door2 = new THREE.Mesh(new THREE.PlaneGeometry(150, 250), doorMaterial);
+    door2.position.set(0, 125, -199);
+    door2.castShadow = true; // Activer la projection d'ombre
+    door2.receiveShadow = true; // Activer la réception d'ombre
+    scene.add(door2);
+}
+
+function init() {
+    var canvasWidth = 900;
+    var canvasHeight = 500;
+    var canvasRatio = canvasWidth / canvasHeight;
+
+    // RENDERER
+    renderer = new THREE.WebGLRenderer({ antialias: true });
+    renderer.gammaInput = true;
+    renderer.gammaOutput = true;
+    renderer.setSize(canvasWidth, canvasHeight);
+    renderer.setClearColor(0xAAAAAA, 1.0);
+
+    // Activer les ombres
+    renderer.shadowMap.enabled = true;
+    renderer.shadowMap.type = THREE.PCFSoftShadowMap;
+
+    // CAMERA
+    camera = new THREE.PerspectiveCamera(45, canvasRatio, 1, 4000);
+    camera.position.set(-400, 400, 20);
+    camera.lookAt(new THREE.Vector3(0, 0, 0));
+
+    // CONTROLS
+    cameraControls = new OrbitControls(camera, renderer.domElement);
+    cameraControls.enableDamping = true;
+    cameraControls.dampingFactor = 0.05;
+    cameraControls.rotateSpeed = 1.0;
+}
+
+function addToDOM() {
+    var container = document.getElementById('webGL');
+    var canvas = container.getElementsByTagName('canvas');
+    if (canvas.length > 0) {
+        container.removeChild(canvas[0]);
+    }
+    container.appendChild(renderer.domElement);
+}
+
+function animate() {
+    requestAnimationFrame(animate);
+    render();
+}
+
+function render() {
+    var delta = clock.getDelta();
+    cameraControls.update();
+    renderer.render(window.scene, camera);
+}
+
+try {
+    init();
+    fillScene();
+    animate();
+    addToDOM();
+} catch (e) {
+    console.error("Erreur lors du rendu:", e);
+}