diff --git a/MEHIAOUI/index.html b/MEHIAOUI/index.html index ed6977d2d62c452e5e2aa8d8569fa271f3f532ea..9d9b1447ff8438a391ce38fc3af6afb46251f005 100644 --- a/MEHIAOUI/index.html +++ b/MEHIAOUI/index.html @@ -24,7 +24,7 @@ <!-- JQuery pour afficher les erreurs --> <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script> <!-- Un titre centre --> - <div id="webGL" class="centre"></div> + <div id="webGL" class="centre">Juste un bol, des fruits, et des fleurs</div> <!-- Mon script avec un chemin relatif --> <script type="module" src="projet.js"></script> </body> diff --git a/MEHIAOUI/projet.js b/MEHIAOUI/projet.js index 2d3d07f46f50700c8e177a4e3485703d1f7311dc..be2239ceae109d7fb534ef0ecf5c68e474e0ba7b 100644 --- a/MEHIAOUI/projet.js +++ b/MEHIAOUI/projet.js @@ -80,16 +80,47 @@ function fillScene() { bol.position.set(-5, 5, 5); bol.rotation.x = Math.PI; - //fonction pour creer une pomme function createApple(x, y, z, color) { - var apple = new THREE.Mesh(new THREE.SphereGeometry(1.5, 22, 22), new THREE.MeshPhongMaterial({color: color})); - apple.position.set(x, y, z); - // tige de la pomme - var tige = new THREE.Mesh(new THREE.CylinderGeometry(0.1, 0.1, 1, 32), new THREE.MeshPhongMaterial({color: 0x8B4513})); - tige.position.set(x, y+1, z); - window.scene.add(tige); + var applePoints = []; + applePoints.push(new THREE.Vector2(0, 0)); // Base + applePoints.push(new THREE.Vector2(1.2, 0.4)); + applePoints.push(new THREE.Vector2(1.8, 1.0)); + applePoints.push(new THREE.Vector2(2.1, 1.8)); // Plus large vers le centre + applePoints.push(new THREE.Vector2(2.0, 2.6)); + applePoints.push(new THREE.Vector2(1.7, 3.1)); + applePoints.push(new THREE.Vector2(1.4, 3.4)); // Arrondi progressif + applePoints.push(new THREE.Vector2(1.0, 3.6)); + applePoints.push(new THREE.Vector2(0.7, 3.7)); + applePoints.push(new THREE.Vector2(0.5, 3.65)); // Début de l'indentation + applePoints.push(new THREE.Vector2(0.3, 3.5)); // Légère dépression + applePoints.push(new THREE.Vector2(0.1, 3.3)); // Dépression plus marquée + applePoints.push(new THREE.Vector2(0, 3.2)); // Haut légèrement incurvé + + var appleGeometry = new THREE.LatheGeometry(applePoints, 64); // Plus de segments pour plus de douceur + var appleMaterial = new THREE.MeshPhongMaterial({ color: color, shininess: 50 }); + var apple = new THREE.Mesh(appleGeometry, appleMaterial); + apple.position.set(x, y, z); + + // Créer la tige avec une légère courbure + var stemGeometry = new THREE.CylinderGeometry(0.1, 0.15, 0.5, 16); + var stemMaterial = new THREE.MeshPhongMaterial({ color: 0x8B4513 }); + var stem = new THREE.Mesh(stemGeometry, stemMaterial); + stem.position.set(x, y + 3.4, z); + stem.rotation.z = Math.PI / 10; // Inclinaison réaliste + + // Ajouter une petite feuille pour plus de réalisme + var leafGeometry = new THREE.SphereGeometry(0.2, 16, 8); + var leafMaterial = new THREE.MeshPhongMaterial({ color: 0x228B22 }); + var leaf = new THREE.Mesh(leafGeometry, leafMaterial); + leaf.position.set(x + 0.2, y + 3.6, z); + leaf.scale.set(1, 0.5, 1); // Rendre la feuille plus plate + window.scene.add(apple); + window.scene.add(stem); + window.scene.add(leaf); } + + //Remplir le bol de pommes à des positions différentes createApple(-5, 2, 5, 0xFF0000); createApple(-4, 4, 7, 0x00FF00);