diff --git a/MEHIAOUI/projet.js b/MEHIAOUI/projet.js
index b2d6fd337ff54420df0c6cf565966fc8a22b4b92..1e96966382184b951dccaf34759e52e44321dfc9 100644
--- a/MEHIAOUI/projet.js
+++ b/MEHIAOUI/projet.js
@@ -18,33 +18,66 @@ var cameraControls;
 
 var clock = new THREE.Clock();
 
+var lathe;
+var torus1, torus2, cylinder;
+
 function fillScene() {
-    window.scene.fog = new THREE.Fog( 0x808080, 2000, 4000 );
+    window.scene.fog = new THREE.Fog( 0x808080, 50, 200 );
 
     // LIGHTS
     var ambientLight = new THREE.AmbientLight( 0x222222 );
-    var light = new THREE.DirectionalLight( 0xFFFFFF, 1.0 );
-    light.position.set( 200, 400, 500 );
+    var light = new THREE.DirectionalLight( 0xFFFFFF, 0);
+    light.position.set(200, 400, 500 );
 
-    var light2 = new THREE.DirectionalLight( 0xFFFFFF, 1.0 );
+    var light2 = new THREE.DirectionalLight( 0xFFFFFF, 0 );
     light2.position.set( -500, 250, -200 );
 
     window.scene.add(ambientLight);
     window.scene.add(light);
     window.scene.add(light2);
 
+    // SpotLight pour éclairer la table, le bol et le vase
+    var spotLight = new THREE.SpotLight(0xFFFFFF, 8000);
+    spotLight.position.set(0, 50, 50);
+    spotLight.angle = Math.PI / 6;
+    spotLight.penumbra = 0.5;
+    spotLight.decay = 2;
+    spotLight.distance = 200;
+    spotLight.castShadow = true;
+    spotLight.shadow.mapSize.width = 1024;
+    spotLight.shadow.mapSize.height = 1024;
+    spotLight.shadow.camera.near = 10;
+    spotLight.shadow.camera.far = 200;
+    spotLight.shadow.camera.fov = 30;
+    spotLight.lookAt(new THREE.Vector3(0, 25, -5.5)); // Orienter le projecteur vers la table, le bol et le vase
+    window.scene.add(spotLight);
+
     //Chargement textures
     var texture_bowl = new THREE.TextureLoader().load('textures/bowl_texture.jpg');
+    var texture_wall = new THREE.TextureLoader().load('textures/texture_wall1.jpg');
+    var texture_vase = new THREE.TextureLoader().load('textures/texture_vase.jpg');
+    texture_vase.wrapS = THREE.MirroredRepeatWrapping;
+	texture_vase.wrapT = THREE.MirroredRepeatWrapping;
+	texture_vase.repeat.set(2, 2.6);
 
     // table
-    var table = new THREE.Mesh(new THREE.CylinderGeometry(10, 10, 1, 32), new THREE.MeshPhongMaterial({color: 0xE3963E}));
-    table.position.set(-10, 0, 5); 
+
+    var tableMaterial = new THREE.MeshPhongMaterial({
+        color: 0x8B4513,
+        shininess: 100,
+        specular: 0x555555,
+        transparent: true,
+        opacity: 0.9
+    });
+
+    var table = new THREE.Mesh(new THREE.CylinderGeometry(10, 10, 1, 32), tableMaterial);
+    table.position.set(0, 0, 5); 
 
     // bol de fruits
     var bolGeometry = new THREE.SphereGeometry(5, 32, 32, 0, Math.PI * 2, 0, Math.PI / 2);
     var bolMaterial = new THREE.MeshPhongMaterial({side: THREE.DoubleSide, map: texture_bowl });
     var bol = new THREE.Mesh(bolGeometry, bolMaterial);
-    bol.position.set(-15, 5, 5);
+    bol.position.set(-5, 5, 5);
     bol.rotation.x = Math.PI;
 
     //fonction pour creer une pomme
@@ -58,69 +91,114 @@ function fillScene() {
         window.scene.add(apple);
     }
     //Remplir le bol de pommes à des positions différentes
-    createApple(-15, 2, 5, 0xFF0000);
-    createApple(-14, 4, 7, 0x00FF00);
-    createApple(-17, 3, 6, 0xFFFF00);
-    createApple(-16, 5, 5, 0xFF0000);
-    createApple(-17, 3, 3, 0x00FF00);
-    createApple(-13, 3, 3, 0xFFFF00);
-    createApple(-14, 5, 3, 0xFF0000);
-    
-    
+    createApple(-5, 2, 5, 0xFF0000);
+    createApple(-4, 4, 7, 0x00FF00);
+    createApple(-7, 3, 6, 0xFFFF00);
+    createApple(-6, 5, 5, 0xFF0000);
+    createApple(-7, 3, 3, 0x00FF00);
+    createApple(-3, 3, 3, 0xFFFF00);
+    createApple(-4, 5, 3, 0xFF0000);
     
-    // Créer un vase de fleurs à côté du bol sur l'autre côté de la table
-    var vase = new THREE.Group();
+    // vase : exemple trouvé sur Internet
 
-    //Materiaux transparant rouge pour le vase
-    var glassMaterial = new THREE.MeshPhongMaterial({
-        color: 0xFF0000,
-        transparent: true,
-        opacity: 0.6,
-        shininess: 100,
-        side: THREE.DoubleSide
-    });
+    // Points of curve
+    var points = [];
+    points.push( new THREE.Vector2( 7.75, -15.88) );
+    points.push( new THREE.Vector2( 7.8, -13.95 ) );
+    points.push( new THREE.Vector2( 8.3, -12.02) );
+    points.push( new THREE.Vector2( 8.97, -10.01 ) );
+    points.push( new THREE.Vector2( 9.7, -8.01 ) );
+    points.push( new THREE.Vector2( 10.55, -5.94 ) );
+    points.push( new THREE.Vector2( 11.45, -3.99 ) );
+    points.push( new THREE.Vector2( 12.3, -1.9 ) );
+    points.push( new THREE.Vector2( 13.09, 0.83 ) );
+    points.push( new THREE.Vector2( 13.36, 3.21 ) );
+    points.push( new THREE.Vector2( 13.21, 6.01 ) );
+    points.push( new THREE.Vector2( 12.63, 8.04) );
+    points.push( new THREE.Vector2( 11.73, 9.93 ) );
+    points.push( new THREE.Vector2( 10.43, 11.46 ) );
+    points.push( new THREE.Vector2( 9.25, 12.41) );
+    points.push( new THREE.Vector2( 7.91, 13.35) );
+    points.push( new THREE.Vector2( 7, 14.28) );
+    points.push( new THREE.Vector2( 6.53, 15.86) );
 
-    //corps du vase : rectangle
-    var corpsGeometry = new THREE.BoxGeometry(3, 13, 3);
-    var corps = new THREE.Mesh(corpsGeometry, glassMaterial);
-    corps.position.set(-9, 1, -1);
-    vase.add(corps);
+    // Add objects
+    var geometry = new THREE.LatheGeometry(points, 30, 0, 2 * Math.PI);
+    var outer_material = new THREE.MeshPhongMaterial({ map: texture_vase, side: THREE.FrontSide, specular: 0x121212, shininess: 26 });
+    var inner_material = new THREE.MeshPhongMaterial({ color: "black", side: THREE.BackSide });
+    var materials = [inner_material, outer_material];
 
-    // Partie supérieure du vase : trapèze
-    var hautGeometry = new THREE.CylinderGeometry(2, 3.2, 3, 4);
-    var haut = new THREE.Mesh(hautGeometry, glassMaterial);
-    haut.position.set(-9, 9, -1);
-    vase.add(haut);
+    // Create multi-material object
+    var lathe = new THREE.Group();
+    var outerMesh = new THREE.Mesh(geometry, outer_material);
+    var innerMesh = new THREE.Mesh(geometry, inner_material);
+    lathe.castShadow = true;
+    lathe.add(outerMesh);
+    lathe.add(innerMesh);
 
-    // retourner le trapeze pour sa base soit en bas
-    haut.rotation.x = Math.PI;
-    haut.rotation.y = Math.PI / 4;
+    var geometry2 = new THREE.TorusGeometry(7, 0.45, 30, 100);
+    var material2 = new THREE.MeshPhongMaterial({ color: "black" });
+    var torus1 = new THREE.Mesh(geometry2, material2);
+    torus1.position.y = 15.8;
+    torus1.rotation.x += 1.57;
+    torus1.castShadow = true;
 
-    
+    var geometry3 = new THREE.TorusGeometry( 8, 0.3, 30, 100 );
+    var material3 = new THREE.MeshPhongMaterial( { color: "black" } );
+    torus2 = new THREE.Mesh( geometry3, material3 );
+    torus2.position.y = -15.7;
+    torus2.rotation.x += 1.57;
+    torus2.castShadow = true;
+
+    var geometry4 = new THREE.CylinderGeometry( 8, 8, 0.8, 32 );
+    var material4 = new THREE.MeshPhongMaterial( {color: "black" } );
+    cylinder = new THREE.Mesh( geometry4, material4 );
+    cylinder.position.y = -15.7;
+    cylinder.castShadow = true;
 
+    lathe.add(torus1)
+    lathe.add(torus2);
+    lathe.add(cylinder);
+    
+    // Redimensionner le vase pour qu'il tienne sur la table
+    lathe.scale.set(0.3, 0.3, 0.3);
+    lathe.position.set(5, 5.25, 1);
     
 
-    // mur derrière la table
-    var mur = new THREE.Mesh(new THREE.BoxGeometry(50, 50, 1), new THREE.MeshPhongMaterial({color: 0x8B413}));
-    mur.position.set(0, 25, -5.5); 
+    //Mur derrière la table
+
+    var mur = new THREE.Mesh(new THREE.BoxGeometry(50, 50, 1), new THREE.MeshPhongMaterial({side: THREE.DoubleSide, map: texture_wall }));
+    mur.receiveShadow = true;
+    mur.position.set(0, 25, -5.5);
+
+
+    // Sol marron foncé
+    var solMaterial = new THREE.MeshPhongMaterial({
+        color: 0x4B3621,
+        shininess: 50,
+        specular: 0x333333
+    });
+
+    var sol = new THREE.Mesh(new THREE.PlaneGeometry(100, 100), solMaterial);
+    sol.rotation.x = -Math.PI / 2;
+    sol.position.y = 0;
 
     // ajout des objets à la scène
-    //window.scene.add(tige);
     //window.scene.add(apple);
     window.scene.add(table);
     window.scene.add(mur);
     window.scene.add(bol);
-    window.scene.add(vase);
+    window.scene.add(lathe);
+    window.scene.add(sol);
     
 
     Coordinates.drawGround({size:10000}); // width and height of ground plane
-    //Coordinates.drawGrid({size:10000,scale:0.01});
-    //Coordinates.drawAllAxes({axisLength:200,axisRadius:1,axisTess:50});
+
+    const cameraHelper = new THREE.CameraHelper(light.shadow.camera);
+    window.scene.add(cameraHelper);
 }
 
 function init() {
-	//var canvasWidth = 846;
-	//var canvasHeight = 494;
 	// For grading the window is fixed in size; here's general code:
 	var canvasWidth = window.innerWidth;
 	var canvasHeight = window.innerHeight;
@@ -133,17 +211,21 @@ function init() {
 	renderer.gammaOutput = true;
 	renderer.setSize(canvasWidth, canvasHeight);
 	renderer.setClearColor( 0xAAAAAA, 1.0 );
+    renderer.shadowMap.enabled = true; 
+    renderer.shadowMap.type = THREE.PCFSoftShadowMap; 
 
 	// CAMERA
 	camera = new THREE.PerspectiveCamera( 35, canvasRatio, 2, 8000 );
-	camera.position.set(0, 5, 50 );
-    camera.lookAt(new THREE.Vector3(0,5,50));
+	camera.position.set(0, 10, 30 );
+    camera.lookAt(new THREE.Vector3(0,5,0));
 	// CONTROLS
 	cameraControls = new OrbitControls(camera, renderer.domElement);
 	cameraControls.target.set(0,5,0);
 
 }
 
+
+
 function addToDOM() {
 	var container = document.getElementById('webGL');
 	var canvas = container.getElementsByTagName('canvas');
diff --git a/MEHIAOUI/textures/bowl_texture.jpg b/MEHIAOUI/textures/bowl_texture.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7edff952ab5c8f447ab545425b775aef9a918e60
Binary files /dev/null and b/MEHIAOUI/textures/bowl_texture.jpg differ
diff --git a/MEHIAOUI/textures/texture_pomme_rouge.jpg b/MEHIAOUI/textures/texture_pomme_rouge.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..a73650397415d3c2bee1ac5012bc5eff4ad21ad8
Binary files /dev/null and b/MEHIAOUI/textures/texture_pomme_rouge.jpg differ
diff --git a/MEHIAOUI/textures/texture_vase.jpg b/MEHIAOUI/textures/texture_vase.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..581a9db7e0b6bc47c06729fa4b41af26a235b61c
Binary files /dev/null and b/MEHIAOUI/textures/texture_vase.jpg differ
diff --git a/MEHIAOUI/textures/texture_wall1.jpg b/MEHIAOUI/textures/texture_wall1.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..521e506246a79738934595719a9a00fb6a230962
Binary files /dev/null and b/MEHIAOUI/textures/texture_wall1.jpg differ