From 00957ca0ffdf8ac4a62ccf616c4df03df70d9914 Mon Sep 17 00:00:00 2001
From: DeRycke Leanne <leanne.de-rycke3@etu.univ-lorraine.fr>
Date: Sat, 1 Mar 2025 16:54:06 +0000
Subject: [PATCH] Edit chambre.js

---
 DUFOUR/chambre.js | 120 +++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 102 insertions(+), 18 deletions(-)

diff --git a/DUFOUR/chambre.js b/DUFOUR/chambre.js
index 7220586..c7c3cb8 100644
--- a/DUFOUR/chambre.js
+++ b/DUFOUR/chambre.js
@@ -1,13 +1,16 @@
-"use strict";import * as THREE from 'three';
+"use strict";
+import * as THREE from 'three';
 import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
+import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
 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; // Objet autour duquel la caméra tournera
+var transparentCube;
 
 function fillScene() {
     scene = new THREE.Scene();
@@ -34,20 +37,102 @@ function fillScene() {
 
     var cubeGeometry = new THREE.BoxGeometry(100, 100, 100);
     transparentCube = new THREE.Mesh(cubeGeometry, transparentMaterial);
-    transparentCube.position.set(0, 50, 0); // Position du cube
+    transparentCube.position.set(0, 50, 0);
     scene.add(transparentCube);
 
+    // Sol
+    var solTexture = new THREE.TextureLoader().load('sol_boiserie.jpg');
+    solTexture.wrapS = THREE.RepeatWrapping;
+    solTexture.wrapT = THREE.RepeatWrapping;
+    solTexture.repeat.set(4, 4);
+    var solMaterial = new THREE.MeshBasicMaterial({ map: solTexture });
+    var sol = new THREE.Mesh(new THREE.PlaneGeometry(1000, 1000), solMaterial);
+    sol.rotation.x = -Math.PI / 2;
+    sol.position.y = 0;
+    scene.add(sol);
+
     // Ajout du lit
-    
-    var bed = new THREE.TextureLoader().load('lit.png');
-    var bedMaterial = new THREE.MeshBasicMaterial({ map: bed });
-    var bedSizeLength = 400, bedSizeHeight = 200, bedSizeWidth = 200;
-    var bedGeometry = new THREE.BoxGeometry(bedSizeLength, bedSizeHeight, bedSizeWidth);
-    bed = new THREE.Mesh(bedGeometry, bedMaterial);
-
-    //bed = new THREE.Mesh(bedGeometry);
+    var bedTexture = new THREE.TextureLoader().load('lit.png');
+    var bedMaterial = new THREE.MeshBasicMaterial({ map: bedTexture });
+    var bedGeometry = new THREE.BoxGeometry(400, 20, 200);
+    var bed = new THREE.Mesh(bedGeometry, bedMaterial);
     bed.position.set(200, 100, 425);
-    window.scene.add(bed);
+    scene.add(bed);
+
+
+
+
+    // Chaise
+    var chaiseTexture = new THREE.TextureLoader().load('chaise.jpg');
+    var chaiseMaterial = new THREE.MeshBasicMaterial({ map: chaiseTexture });
+    var seat = new THREE.Mesh(new THREE.BoxGeometry(100, 10, 100), chaiseMaterial);
+    seat.position.set(-300, 50, 0);
+    var backrest = new THREE.Mesh(new THREE.BoxGeometry(100, 150, 10), chaiseMaterial);
+    backrest.position.set(-300, 125, -45);
+    scene.add(seat, backrest);
+
+    // Table
+    var tableTexture = new THREE.TextureLoader().load('table_bois.jpg');
+    var tableMaterial = new THREE.MeshBasicMaterial({ map: tableTexture });
+    var table = new THREE.Mesh(new THREE.BoxGeometry(300, 150, 200), tableMaterial);
+    table.position.set(-100, 75, 200);
+    scene.add(table);
+
+    // Tableau sur le mur
+    var paintingTexture = new THREE.TextureLoader().load('tableau_van_gogh.jpg');
+    var paintingMaterial = new THREE.MeshBasicMaterial({ map: paintingTexture });
+    var painting = new THREE.Mesh(new THREE.PlaneGeometry(120, 90), paintingMaterial);
+    painting.position.set(250, 350, -499);
+    scene.add(painting);
+
+    // Portes
+    var porteTexture = new THREE.TextureLoader().load('porte.jpg');
+    var porteMaterial = new THREE.MeshBasicMaterial({ map: porteTexture });
+
+    var porte1 = new THREE.Mesh(new THREE.PlaneGeometry(150, 250), porteMaterial);
+    porte1.position.set(-100,125, 490);
+    scene.add(porte1);
+
+    var porte2 = new THREE.Mesh(new THREE.PlaneGeometry(150, 250), porteMaterial);
+    porte2.position.set(-125, 125, -499);
+    scene.add(porte2);
+    porte1.renderOrder = 1; // Assure que la porte est rendue après le mur
+
+
+     // Murs
+     var murTexture = new THREE.TextureLoader().load('mur_bleu.jpg');
+     var murMaterial = new THREE.MeshBasicMaterial({ map: murTexture });
+     
+     var backmur = new THREE.Mesh(new THREE.PlaneGeometry(1000, 600), murMaterial);
+     backmur.position.set(0, 300, -500);
+     scene.add(backmur);
+     
+     var leftmur = new THREE.Mesh(new THREE.PlaneGeometry(1000, 600), murMaterial);
+     leftmur.rotation.y = Math.PI / 2;
+     leftmur.position.set(-500, 300, 0);
+     scene.add(leftmur);
+ 
+     var rightmur = new THREE.Mesh(new THREE.PlaneGeometry(1000, 600), murMaterial);
+     rightmur.rotation.y = -Math.PI / 2;
+     rightmur.position.set(500, 300, 0);
+     scene.add(rightmur);
+ 
+     var frontmur = new THREE.Mesh(new THREE.PlaneGeometry(1000, 600), murMaterial);
+     frontmur.rotation.y = Math.PI;
+     frontmur.position.set(0, 300, 500);
+     scene.add(frontmur);
+}
+function loadModel() {
+    const loader = new GLTFLoader();
+
+    loader.load('wooden_bed.glb', function (gltf) {
+        const model = gltf.scene;
+        model.scale.set(1, 1, 1);  // Ajuste l'échelle si nécessaire
+        model.position.set(0, 0, 0);  // Ajuste la position du modèle
+        scene.add(model);  // Ajoute le modèle à la scène
+    }, undefined, function (error) {
+        console.error('Erreur de chargement du modèle:', error);
+    });
 }
 
 function init() {
@@ -67,9 +152,9 @@ function init() {
     camera.position.set(-500, 125, -100);
     camera.lookAt(new THREE.Vector3(0, 0, 0));
 
-    // CONTROLS (L'utilisateur peut tourner la caméra)
+    // CONTROLS
     cameraControls = new OrbitControls(camera, renderer.domElement);
-    cameraControls.enableDamping = true; // Ajoute un effet d'inertie
+    cameraControls.enableDamping = true;
     cameraControls.dampingFactor = 0.05;
     cameraControls.rotateSpeed = 1.0;
 }
@@ -90,17 +175,16 @@ function animate() {
 
 function render() {
     var delta = clock.getDelta();
-    cameraControls.update(); // Mise à jour des contrôles de la caméra
+    cameraControls.update();
     renderer.render(window.scene, camera);
 }
 
-// Lancement du programme
 try {
     init();
     fillScene();
+    loadModel();
     animate();
     addToDOM();
 } catch (e) {
-    var errorReport = "Your program encountered an unrecoverable error, cannot draw on canvas. Error was:<br/><br/>";
-    $('#webGL').append(errorReport + e);
+    console.error("Erreur lors du rendu:", e);
 }
\ No newline at end of file
-- 
GitLab