diff --git a/MATEJKA_MAURICE_COLIN/.vscode/settings.json b/MATEJKA_MAURICE_COLIN/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..6f3a2913e199cebe9ace75cf7e5a2818da27fbd3 --- /dev/null +++ b/MATEJKA_MAURICE_COLIN/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5501 +} \ No newline at end of file diff --git a/MATEJKA_MAURICE_COLIN/checklistProjet.md b/MATEJKA_MAURICE_COLIN/checklistProjet.md index 9e90e5bc378d681035ffdc095f6996ad75bedfaf..f0dd444a9bffb59a547663b25852ed27b622c21b 100644 --- a/MATEJKA_MAURICE_COLIN/checklistProjet.md +++ b/MATEJKA_MAURICE_COLIN/checklistProjet.md @@ -1,20 +1,20 @@ -- [ ] Esthetisme +- [X] Esthetisme - [ ] Mise en page de la page web - [ ] Paragraphe(s) d'explications techniques -- [ ] Légèreté du dossier (<2Mo) -- [ ] Géométrie -- [ ] Couleur -- [ ] Transparence -- [ ] Eclairage -- [ ] Ombres portées -- [ ] Position de la caméra +- [X] Légèreté du dossier (<2Mo) +- [X] Géométrie +- [X] Couleur +- [X] Transparence +- [X] Eclairage +- [X] Ombres portées +- [X] Position de la caméra - [ ] Brouillard - [ ] Effet miroir -- [ ] Texture classique -- [ ] Texture avec transparence -- [ ] Sprites +- [X] Texture classique +- [X] Texture avec transparence +- [X] Sprites - [ ] Environment map -- [ ] Skybox -- [ ] Animations +- [X] Skybox +- [X] Animations - [ ] normal maps -- [ ] Interaction par GUI \ No newline at end of file +- [X] Interaction par GUI \ No newline at end of file diff --git a/MATEJKA_MAURICE_COLIN/index.html b/MATEJKA_MAURICE_COLIN/index.html index c5d181d712f3caeb159bd0e61a1c02d50a6dc904..68c29fd36e739a4f9cd1e349cb7e416324dedabd 100644 --- a/MATEJKA_MAURICE_COLIN/index.html +++ b/MATEJKA_MAURICE_COLIN/index.html @@ -34,7 +34,7 @@ "></script> <!-- Un titre centre --> <h1 class="centre"> Projet - La Nuit étoilée</h1> - <p class="centre"> Avec WebGL </p> + <p class="centre"> </p> <div id="webGL" class="centre"></div> <!-- Mon script avec un chemin relatif --> <script type="module" src="index.js"></script> diff --git a/MATEJKA_MAURICE_COLIN/index.js b/MATEJKA_MAURICE_COLIN/index.js index e8fdb31052a2b08823e3c1adcce6836d8c23f21e..8306be13494386fb9e12016861ea8492d25a2643 100644 --- a/MATEJKA_MAURICE_COLIN/index.js +++ b/MATEJKA_MAURICE_COLIN/index.js @@ -1,55 +1,65 @@ import * as THREE from 'three'; import { OrbitControls } from 'three/addons/controls/OrbitControls.js'; import { OBJLoader } from 'three/addons/loaders/OBJLoader.js'; +import { MTLLoader } from 'three/addons/loaders/MTLLoader.js'; +import { GUI } from 'three/addons/libs/lil-gui.module.min.js'; let scene, camera, renderer, controls, solidGround; +const gui = new GUI(); function init() { - // Création de la scène + //Création de la scène scene = new THREE.Scene(); - // Création du rendu WebGL + //Création du renderer WebGL renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); renderer.shadowMap.enabled = true; document.body.appendChild(renderer.domElement); - // Création de la caméra + //Création de la cam camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 10000); - camera.position.set(0, 1, 3); + camera.position.set(-.5, 2, 3.5); - // Ajout des contrôles de la caméra + //Ajout des controles de la camera controls = new OrbitControls(camera, renderer.domElement); controls.enableDamping = true; - // Chargement de la skybox + controls.target.set(-.25, 1.5, 0); + controls.update(); + + //Chargement de la skybox const loadersky = new THREE.CubeTextureLoader(); const texture = loadersky.load([ - 'textures/1.png', - 'textures/2.png', - 'textures/3.png', - 'textures/4.png', - 'textures/5.png', - 'textures/6.png' + 'textures/1.jpg', + 'textures/2.jpg', + 'textures/3.jpg', + 'textures/4.jpg', + 'textures/5.jpg', + 'textures/6.jpg' ]); scene.background = texture; + //Chargement de la texture du sol var textureLoader = new THREE.TextureLoader(); var grassTexture = textureLoader.load('textures/grass.jpg'); grassTexture.wrapS = THREE.RepeatWrapping; grassTexture.wrapT = THREE.RepeatWrapping; grassTexture.repeat.set(2000, 2000); + //Création du sol solidGround = new THREE.Mesh( - new THREE.PlaneGeometry(10000, 10000, 100, 100), + new THREE.PlaneGeometry(50, 50, 1, 1), new THREE.MeshLambertMaterial({ map: grassTexture }) ); + solidGround.position.x = 12.5; + solidGround.position.z = -20.4; solidGround.rotation.x = -Math.PI / 2; solidGround.receiveShadow = true; scene.add(solidGround); - // Chargement du modèle LowPolyHuman + // Chargement du modèle de l'homme const loader = new OBJLoader(); loader.load( 'textures/LowPolyHuman.obj', @@ -65,26 +75,20 @@ function init() { object.rotation.set(0, 2.5, 0); object.scale.set(0.09, 0.09, 0.09); scene.add(object); - }, - (xhr) => { - console.log((xhr.loaded / xhr.total * 100) + '% chargé'); - }, - (error) => { - console.error('Erreur de chargement', error); } ); - // Création d'un tabouret à côté du personnage - const stoolGeometry = new THREE.CylinderGeometry(0.5, 0.5, 1, 20); - const stoolMaterial = new THREE.MeshStandardMaterial({ color: 0x8B4513, metalness: 0.3, roughness: 0.8 }); - const stool = new THREE.Mesh(stoolGeometry, stoolMaterial); - stool.scale.set(0.5, 0.5, 0.5); - stool.position.set(1.5, 0.25, 0); - stool.castShadow = true; - stool.receiveShadow = true; - scene.add(stool); - - // Chargement du modèle Chevalet + //Création du tabouret à côté du personnage + const tabouretGeometry = new THREE.CylinderGeometry(0.5, 0.5, 1, 20); + const tabouretMaterial = new THREE.MeshStandardMaterial({ color: 0x8B4513, metalness: 0.3, roughness: 0.8 }); + const tabouret = new THREE.Mesh(tabouretGeometry, tabouretMaterial); + tabouret.scale.set(0.5, 0.5, 0.5); + tabouret.position.set(1.5, 0.25, 0); + tabouret.castShadow = true; + tabouret.receiveShadow = true; + scene.add(tabouret); + + //Chargement du modèle Chevalet loader.load( 'textures/chevalet.obj', (object) => { @@ -98,33 +102,129 @@ function init() { object.position.set(0.5, 0.5, -1.25); object.scale.set(0.25, 0.20, 0.25); scene.add(object); - }, - (xhr) => { - console.log((xhr.loaded / xhr.total * 100) + '% chargé (chevalet)'); - }, - (error) => { - console.error('Erreur de chargement du chevalet', error); } ); - // Chargement du modèle Bougie + + // --- Chargement et génération de la forêt --- + console.log('Début du chargement de la forêt'); + const mtlLoader = new MTLLoader(); + mtlLoader.load('textures/Tree.mtl', (materials) => { + console.log('Matériaux chargés'); + materials.preload(); + const objLoader = new OBJLoader(); + objLoader.setMaterials(materials); + objLoader.load('textures/Tree.obj', (object) => { + generateForest(object, 50); // Génère 50 arbres + }); + }); + + //Fonction pour générer une forêt + function generateForest(objModel, numTrees) { + console.log('Début de la génération de la forêt'); + const minDistance = 0.25; + const minX = -8.5, maxX = -12; + const minZ = -4, maxZ = -15; + + let treePositions = []; + + for (let i = 0; i < numTrees; i++) { + const tree = objModel.clone(); + let attempts = 0; + let placed = false; + + while (!placed && attempts < 10) { + const x = Math.random() * (maxX - minX) + minX; + const z = Math.random() * (maxZ - minZ) + minZ; + const y = -0.25; + + //Vérifie s'il y a assez d'espace autour + if (!treePositions.some(pos => Math.hypot(pos.x - x, pos.z - z) < minDistance)) { + tree.position.set(x, y, z); + tree.scale.setScalar(0.8 + Math.random() * 1.5); + tree.rotation.y = Math.random() * Math.PI * 2; + scene.add(tree); + treePositions.push({ x, z }); + placed = true; + console.log('Arbre en : ', { x, y, z }); + } + attempts++; + } + } + console.log("foret ok"); + } + function addGrass() { + const numGrassBlades = 100000; + const areaSize = 50; + + const grassGeometry = new THREE.CylinderGeometry(0.0, 0.05, 0.5, 3, 1); + const grassMaterial = new THREE.MeshStandardMaterial({ + map: new THREE.TextureLoader().load('textures/grassblade.png'), + transparent: true, + side: THREE.DoubleSide, + emissive: 0x000000, + roughness: 0.6, + }); + + const grassMesh = new THREE.InstancedMesh(grassGeometry, grassMaterial, numGrassBlades); + + const dummy = new THREE.Object3D(); + + for (let i = 0; i < numGrassBlades; i++) { + const x = Math.random() * areaSize - areaSize / 4; + const z = Math.random() * areaSize - areaSize / 1.1 ; + const y = 0.1; + + dummy.position.set(x, y, z); + dummy.rotation.y = Math.random() * Math.PI * 2; + dummy.rotation.x = Math.random() * Math.PI * 0.1; + dummy.scale.set(0.5 + Math.random() * 0.5, 1, 0.5 + Math.random() * 0.5); + dummy.updateMatrix(); + + grassMesh.setMatrixAt(i, dummy.matrix); + } + + scene.add(grassMesh); + } + + addGrass(); + + function addVillageImage() { + const textureLoader = new THREE.TextureLoader(); + textureLoader.load('textures/village.jpg', (texture) => { + const geometry = new THREE.PlaneGeometry(75, 50); + const material = new THREE.MeshBasicMaterial({ + map: texture, + color: 0x777777 + }); + const plane = new THREE.Mesh(geometry, material); + plane.position.set(0, 18, -150); + scene.add(plane); + console.log('Image du village ajouté'); + }); + } + + + addVillageImage(); + + //Chargement du modèle Bougie loader.load( 'textures/bougie.obj', (object) => { object.traverse((child) => { if (child.isMesh) { child.material = new THREE.MeshStandardMaterial({ color: 0xfff5c3, metalness: 0.2, roughness: 0.7 }); - child.castShadow = true; // Projeter des ombres - child.receiveShadow = true; // Recevoir des ombres + child.castShadow = true; + child.receiveShadow = true; } }); - // la bougie au même endroit que le tabouret, mais plus haut - object.position.set(stool.position.x, stool.position.y + 0.3, stool.position.z); + //bougie placé au dessus du tabouret + object.position.set(tabouret.position.x, tabouret.position.y + 0.3, tabouret.position.z); object.scale.set(0.7, 0.7, 0.7); scene.add(object); - // Ajouter une lumière pour simuler la flamme de la bougie + //Ajouter une lumière pour la flamme de la bougie const candleLight = new THREE.PointLight(0xffa500, 1.5, 2); candleLight.position.set(object.position.x, object.position.y + 0.3, object.position.z); candleLight.castShadow = true; @@ -132,16 +232,10 @@ function init() { function animateCandleLight() { requestAnimationFrame(animateCandleLight); - candleLight.intensity = 1.5 + Math.random() * 0.2; // Variation légère d'intensité - candleLight.position.y = object.position.y + 0.35 + Math.random() * 0.02; // Léger mouvement + candleLight.intensity = guiParams.intensity + Math.random() * 0.3; //Variation légère d'intensité + candleLight.position.y = object.position.y + 0.35 + Math.random() * 0.02; //Léger mouvement } animateCandleLight(); - }, - (xhr) => { - console.log((xhr.loaded / xhr.total * 100) + '% chargé (bougie)'); - }, - (error) => { - console.error('Erreur de chargement de la bougie', error); } ); @@ -150,10 +244,19 @@ function init() { scene.add(ambientLight); window.addEventListener('resize', onWindowResize); - + + setupGUI(); animate(); } +const guiParams = { + intensity: 1.5 +}; + +function setupGUI() { + gui.add(guiParams, 'intensity', 0.01, 5, 0.1).name('Intensité Bougie'); +} + function onWindowResize() { camera.aspect = window.innerWidth / window.innerHeight; camera.updateProjectionMatrix(); diff --git a/MATEJKA_MAURICE_COLIN/textures/1.jpg b/MATEJKA_MAURICE_COLIN/textures/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4c10e83677924b857cfb1a59a5a17235b413245 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/1.jpg differ diff --git a/MATEJKA_MAURICE_COLIN/textures/1.png b/MATEJKA_MAURICE_COLIN/textures/1.png deleted file mode 100644 index 339d4cd82d8b68f28b5f791bcb7efa93e8ebf28c..0000000000000000000000000000000000000000 Binary files a/MATEJKA_MAURICE_COLIN/textures/1.png and /dev/null differ diff --git a/MATEJKA_MAURICE_COLIN/textures/2.jpg b/MATEJKA_MAURICE_COLIN/textures/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2358247cb981efce30806b81282f5da5c89829f6 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/2.jpg differ diff --git a/MATEJKA_MAURICE_COLIN/textures/2.png b/MATEJKA_MAURICE_COLIN/textures/2.png deleted file mode 100644 index ea7b4f05b177a8b51b1a95c4ee5807ddf8da1ac7..0000000000000000000000000000000000000000 Binary files a/MATEJKA_MAURICE_COLIN/textures/2.png and /dev/null differ diff --git a/MATEJKA_MAURICE_COLIN/textures/3.jpg b/MATEJKA_MAURICE_COLIN/textures/3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1567ac2987ad01d9ce0827aa3f9d548353038cf6 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/3.jpg differ diff --git a/MATEJKA_MAURICE_COLIN/textures/3.png b/MATEJKA_MAURICE_COLIN/textures/3.png deleted file mode 100644 index b705d81b88b09851cfc0102395bf0ed1b69640d9..0000000000000000000000000000000000000000 Binary files a/MATEJKA_MAURICE_COLIN/textures/3.png and /dev/null differ diff --git a/MATEJKA_MAURICE_COLIN/textures/4.jpg b/MATEJKA_MAURICE_COLIN/textures/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9e38c880885b54e81d0b536806d4050f40d8eada Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/4.jpg differ diff --git a/MATEJKA_MAURICE_COLIN/textures/4.png b/MATEJKA_MAURICE_COLIN/textures/4.png deleted file mode 100644 index 666f259ce56c3ee5d635977fc34a3d4e23c8a40b..0000000000000000000000000000000000000000 Binary files a/MATEJKA_MAURICE_COLIN/textures/4.png and /dev/null differ diff --git a/MATEJKA_MAURICE_COLIN/textures/5.jpg b/MATEJKA_MAURICE_COLIN/textures/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..566e93e2ec9e26e4b890870491d9d477690fa1a8 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/5.jpg differ diff --git a/MATEJKA_MAURICE_COLIN/textures/5.png b/MATEJKA_MAURICE_COLIN/textures/5.png deleted file mode 100644 index 319f6993f0f0e243fbb7ec16910155e418cdf455..0000000000000000000000000000000000000000 Binary files a/MATEJKA_MAURICE_COLIN/textures/5.png and /dev/null differ diff --git a/MATEJKA_MAURICE_COLIN/textures/6.jpg b/MATEJKA_MAURICE_COLIN/textures/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ad2a92811d330bfcea095fa4b2fdb986e2e9a191 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/6.jpg differ diff --git a/MATEJKA_MAURICE_COLIN/textures/6.png b/MATEJKA_MAURICE_COLIN/textures/6.png deleted file mode 100644 index 34496ff86de86719ab7c7c2b03e86b8a05914e31..0000000000000000000000000000000000000000 Binary files a/MATEJKA_MAURICE_COLIN/textures/6.png and /dev/null differ diff --git a/MATEJKA_MAURICE_COLIN/textures/Tree.mtl b/MATEJKA_MAURICE_COLIN/textures/Tree.mtl new file mode 100644 index 0000000000000000000000000000000000000000..21a825185e7d57dd88d1d0c0c007e8afd4a217f5 --- /dev/null +++ b/MATEJKA_MAURICE_COLIN/textures/Tree.mtl @@ -0,0 +1,42 @@ +# Blender MTL File: 'LowPolyTree01.blend' +# Material Count: 4 + +newmtl PLANT +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.172685 1.000000 0.029101 +Ks 0.000000 0.000000 0.000000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 1 + +newmtl PLANTDARC +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.018907 0.123708 0.005589 +Ks 0.000000 0.000000 0.000000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 1 + +newmtl WOOD +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.438552 0.099220 0.015346 +Ks 0.000000 0.000000 0.000000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 1 + +newmtl WOODDARC +Ns 225.000000 +Ka 1.000000 1.000000 1.000000 +Kd 0.184472 0.046861 0.011978 +Ks 0.500000 0.500000 0.500000 +Ke 0.000000 0.000000 0.000000 +Ni 1.000000 +d 1.000000 +illum 2 diff --git a/MATEJKA_MAURICE_COLIN/textures/Tree.obj b/MATEJKA_MAURICE_COLIN/textures/Tree.obj new file mode 100644 index 0000000000000000000000000000000000000000..a6b64abcbcacab474e684d86477515ac562289d1 --- /dev/null +++ b/MATEJKA_MAURICE_COLIN/textures/Tree.obj @@ -0,0 +1,395 @@ +# Blender v3.0.1 OBJ File: 'LowPolyTree01.blend' +# www.blender.org +mtllib Tree.mtl +o Icosphere +v -1.425233 0.220251 1.432681 +v -1.261384 0.220532 1.379442 +v -1.261384 0.220532 1.207162 +v -1.425233 0.220251 1.153923 +v -1.526498 0.220077 1.293302 +v -1.492684 0.207270 1.375226 +v -1.336854 0.207537 1.425858 +v -1.240546 0.207703 1.293302 +v -1.336854 0.207538 1.160746 +v -1.492684 0.207270 1.211378 +v -1.513858 0.064510 1.391212 +v -1.433219 0.065085 1.459878 +v -1.327621 0.064830 1.451724 +v -1.237399 0.065422 1.396250 +v -1.212521 0.065028 1.293302 +v -1.237399 0.065422 1.190354 +v -1.327621 0.064830 1.134880 +v -1.433219 0.065085 1.126727 +v -1.513858 0.064510 1.195392 +v -1.554244 0.064877 1.293302 +v -1.410905 0.062881 1.391212 +v -1.482042 0.062758 1.293302 +v -1.379091 0.062105 1.293302 +v -1.295805 0.063079 1.353813 +v -1.295805 0.063079 1.232791 +v -1.410905 0.062881 1.195392 +v -1.459504 0.483122 1.350775 +v -1.412184 0.492228 1.391082 +v -1.350183 0.483309 1.386296 +v -1.297238 0.492426 1.353733 +v -1.282619 0.483426 1.293302 +v -1.297238 0.492426 1.232872 +v -1.350183 0.483309 1.200309 +v -1.412184 0.492228 1.195523 +v -1.459504 0.483122 1.235829 +v -1.483225 0.492107 1.293302 +v -1.720847 0.493695 1.540638 +v -1.517207 0.532885 1.714097 +v -1.250384 0.494503 1.693500 +v -1.022535 0.533736 1.553365 +v -0.959625 0.495004 1.293302 +v -1.022535 0.533736 1.033239 +v -1.250384 0.494503 0.893105 +v -1.517207 0.532886 0.872508 +v -1.720847 0.493695 1.045966 +v -1.822934 0.532362 1.293302 +v -1.438971 0.899913 1.335415 +v -1.404298 0.906585 1.364949 +v -1.358867 0.900050 1.361442 +v -1.320073 0.906730 1.337582 +v -1.309361 0.900136 1.293302 +v -1.320073 0.906730 1.249023 +v -1.358867 0.900050 1.225163 +v -1.404298 0.906585 1.221656 +v -1.438971 0.899913 1.251190 +v -1.456352 0.906496 1.293302 +v -1.439092 0.908167 1.335415 +v -1.404419 0.914840 1.364949 +v -1.358988 0.908305 1.361442 +v -1.320194 0.914985 1.337582 +v -1.309482 0.908390 1.293302 +v -1.320194 0.914985 1.249023 +v -1.358988 0.908305 1.225163 +v -1.404419 0.914840 1.221656 +v -1.439092 0.908167 1.251190 +v -1.456473 0.914751 1.293302 +v -1.687292 0.919933 1.515740 +v -1.504150 0.955178 1.671738 +v -1.264187 0.920659 1.653214 +v -1.059275 0.955943 1.527186 +v -1.002697 0.921110 1.293302 +v -1.059275 0.955943 1.059419 +v -1.264187 0.920660 0.933391 +v -1.504150 0.955178 0.914867 +v -1.687292 0.919933 1.070864 +v -1.779102 0.954707 1.293302 +v -1.441459 1.579445 1.336311 +v -1.406049 1.586260 1.366473 +v -1.359652 1.579586 1.362891 +v -1.320032 1.586408 1.338524 +v -1.309093 1.579673 1.293303 +v -1.320032 1.586408 1.248081 +v -1.359652 1.579586 1.223714 +v -1.406049 1.586260 1.220132 +v -1.441459 1.579445 1.250294 +v -1.459210 1.586169 1.293303 +v -1.567078 1.621756 1.427525 +v -1.456568 1.643024 1.521656 +v -1.311770 1.622195 1.510479 +v -1.188123 1.643485 1.434432 +v -1.153983 1.622466 1.293303 +v -1.188123 1.643485 1.152174 +v -1.311770 1.622195 1.076126 +v -1.456568 1.643024 1.064949 +v -1.567078 1.621756 1.159080 +v -1.622478 1.642740 1.293303 +v -1.412985 2.048294 1.315038 +v -1.395089 2.051738 1.330282 +v -1.371641 2.048365 1.328472 +v -1.351618 2.051813 1.316157 +v -1.346089 2.048409 1.293303 +v -1.351618 2.051813 1.270449 +v -1.371641 2.048365 1.258134 +v -1.395089 2.051738 1.256324 +v -1.412985 2.048294 1.271567 +v -1.421956 2.051692 1.293303 +v -1.404896 1.566144 1.223440 +v -1.360596 1.559772 1.226860 +v -1.404896 1.566144 1.363165 +v -1.438705 1.559637 1.334366 +v -1.312323 1.559855 1.293303 +v -1.322768 1.566285 1.336480 +v -1.455654 1.566057 1.293303 +v -1.438705 1.559637 1.252239 +v -1.360596 1.559772 1.359745 +v -1.322768 1.566285 1.250126 +vn 0.0874 0.1751 0.9807 +vn -0.6478 0.1710 0.7423 +vn -0.6478 0.1710 -0.7423 +vn 0.0874 0.1751 -0.9807 +vn -0.9066 0.1696 0.3865 +vn 0.5049 0.1774 -0.8447 +vn 0.9589 0.1799 -0.2193 +vn 0.9589 0.1799 0.2193 +vn 0.5049 0.1774 0.8447 +vn -0.9066 0.1696 -0.3865 +vn -0.0158 -0.9995 0.0269 +vn 0.0219 -0.9994 0.0250 +vn 0.0317 -0.9994 -0.0115 +vn 0.0001 -0.9995 -0.0321 +vn -0.0293 -0.9995 -0.0084 +vn -0.0063 -1.0000 -0.0059 +vn -0.0158 -0.9998 -0.0127 +vn -0.0158 -0.9995 -0.0269 +vn 0.0048 -0.9999 -0.0095 +vn 0.0084 -0.9998 -0.0206 +vn 0.0219 -0.9994 -0.0250 +vn 0.0117 -0.9999 -0.0000 +vn 0.0234 -0.9997 -0.0000 +vn 0.0317 -0.9994 0.0115 +vn 0.0048 -0.9999 0.0095 +vn 0.0084 -0.9998 0.0206 +vn 0.0001 -0.9995 0.0321 +vn -0.0063 -1.0000 0.0059 +vn -0.0158 -0.9998 0.0127 +vn -0.0293 -0.9995 0.0083 +vn 0.9661 0.1474 -0.2118 +vn -0.1170 -0.9874 -0.1061 +vn -0.6576 0.1446 -0.7393 +vn 0.0970 0.1459 0.9845 +vn 0.0970 0.1459 -0.9845 +vn -0.6576 0.1446 0.7393 +vn 0.9661 0.1474 0.2118 +vn -0.9065 0.1442 -0.3967 +vn 0.4998 0.1466 0.8537 +vn 0.4998 0.1466 -0.8537 +vn -0.9065 0.1442 0.3967 +vn 0.7542 0.6511 -0.0855 +vn 0.0354 -0.9872 -0.1556 +vn 0.0659 -0.9871 -0.1457 +vn -0.1359 -0.9875 0.0801 +vn -0.1359 -0.9875 -0.0801 +vn 0.0659 -0.9871 0.1457 +vn 0.0354 -0.9872 0.1556 +vn -0.1170 -0.9874 0.1061 +vn 0.1601 -0.9870 -0.0160 +vn 0.1601 -0.9870 0.0160 +vn -0.6473 -0.0095 -0.7621 +vn -0.5618 0.6490 -0.5130 +vn 0.1510 0.6501 0.7447 +vn 0.1510 0.6501 -0.7447 +vn -0.5618 0.6490 0.5130 +vn 0.7542 0.6511 0.0855 +vn -0.6622 0.6489 -0.3748 +vn 0.3135 0.6504 0.6919 +vn 0.3135 0.6504 -0.6919 +vn -0.6622 0.6489 0.3748 +vn -0.1354 -0.9871 0.0858 +vn 0.0771 0.0011 0.9970 +vn 0.0771 0.0011 -0.9970 +vn -0.6473 -0.0095 0.7621 +vn 0.9723 0.0143 0.2331 +vn -0.9250 -0.0136 -0.3797 +vn 0.5229 0.0077 0.8524 +vn 0.5229 0.0077 -0.8524 +vn -0.9250 -0.0136 0.3797 +vn 0.9724 0.0143 -0.2331 +vn 0.0532 -0.1591 -0.9858 +vn -0.1354 -0.9871 -0.0858 +vn 0.0622 -0.9867 0.1500 +vn 0.0409 -0.9868 0.1569 +vn -0.1222 -0.9871 0.1039 +vn 0.1630 -0.9866 -0.0112 +vn 0.1630 -0.9866 0.0112 +vn -0.1222 -0.9871 -0.1039 +vn 0.0409 -0.9868 -0.1569 +vn 0.0622 -0.9867 -0.1500 +vn -0.0881 -0.9444 0.3168 +vn -0.6217 -0.1617 0.7664 +vn 0.9546 -0.1556 0.2541 +vn -0.9207 -0.1628 -0.3546 +vn 0.5369 -0.1572 0.8289 +vn 0.5369 -0.1572 -0.8289 +vn -0.9207 -0.1628 0.3546 +vn 0.9546 -0.1556 -0.2541 +vn -0.6217 -0.1617 -0.7664 +vn 0.0532 -0.1591 0.9858 +vn -0.8220 0.4031 -0.4023 +vn 0.2604 -0.9438 0.2036 +vn -0.3274 -0.9448 0.0126 +vn 0.2752 -0.9438 0.1832 +vn 0.2752 -0.9438 -0.1832 +vn -0.3274 -0.9448 -0.0126 +vn 0.2604 -0.9438 -0.2036 +vn -0.0881 -0.9444 -0.3168 +vn -0.1120 -0.9444 0.3090 +vn -0.1120 -0.9444 -0.3090 +vn -0.0017 1.0000 -0.0000 +vn 0.4273 0.4052 0.8082 +vn 0.4273 0.4052 -0.8082 +vn -0.8220 0.4031 0.4023 +vn 0.9002 0.4060 -0.1573 +vn -0.6371 0.4034 -0.6568 +vn 0.1281 0.4047 0.9054 +vn 0.1281 0.4047 -0.9054 +vn -0.6371 0.4034 0.6568 +vn 0.9002 0.4060 0.1573 +vn 0.1308 0.4299 0.8933 +vn -0.6322 0.4287 -0.6454 +vn 0.8895 0.4312 -0.1510 +vn -0.8097 0.4284 0.4012 +vn 0.4179 0.4304 -0.8000 +vn 0.4179 0.4304 0.8000 +vn -0.8097 0.4284 -0.4012 +vn 0.8895 0.4312 0.1510 +vn -0.6322 0.4287 0.6454 +vn 0.1308 0.4299 -0.8933 +g Icosphere_Icosphere_WOOD +usemtl WOOD +s off +f 7//1 1//1 12//1 13//1 +f 1//2 6//2 11//2 12//2 +f 10//3 4//3 18//3 19//3 +f 4//4 9//4 17//4 18//4 +f 6//5 5//5 20//5 11//5 +f 9//6 3//6 16//6 17//6 +f 3//7 8//7 15//7 16//7 +f 8//8 2//8 14//8 15//8 +f 2//9 7//9 13//9 14//9 +f 5//10 10//10 19//10 20//10 +g Icosphere_Icosphere_WOODDARC +usemtl WOODDARC +f 12//11 11//11 21//11 +f 14//12 13//12 24//12 +f 16//13 15//13 25//13 +f 18//14 17//14 26//14 +f 20//15 19//15 22//15 +f 22//16 26//16 23//16 +f 22//17 19//17 26//17 +f 19//18 18//18 26//18 +f 26//19 25//19 23//19 +f 26//20 17//20 25//20 +f 17//21 16//21 25//21 +f 25//22 24//22 23//22 +f 25//23 15//23 24//23 +f 15//24 14//24 24//24 +f 24//25 21//25 23//25 +f 24//26 13//26 21//26 +f 13//27 12//27 21//27 +f 21//28 22//28 23//28 +f 21//29 11//29 22//29 +f 11//30 20//30 22//30 +g Icosphere_Icosphere_WOOD +usemtl WOOD +f 8//31 3//31 32//31 31//31 +g Icosphere_Icosphere_PLANTDARC +usemtl PLANTDARC +f 36//32 27//32 37//32 46//32 +g Icosphere_Icosphere_WOOD +usemtl WOOD +f 4//33 10//33 35//33 34//33 +f 1//34 7//34 29//34 28//34 +f 9//35 4//35 34//35 33//35 +f 6//36 1//36 28//36 27//36 +f 2//37 8//37 31//37 30//37 +f 10//38 5//38 36//38 35//38 +f 7//39 2//39 30//39 29//39 +f 3//40 9//40 33//40 32//40 +f 5//41 6//41 27//41 36//41 +g Icosphere_Icosphere_PLANT +usemtl PLANT +f 41//42 42//42 52//42 51//42 +g Icosphere_Icosphere_PLANTDARC +usemtl PLANTDARC +f 31//43 32//43 42//43 41//43 +f 34//44 35//44 45//44 44//44 +f 28//45 29//45 39//45 38//45 +f 33//46 34//46 44//46 43//46 +f 27//47 28//47 38//47 37//47 +f 30//48 31//48 41//48 40//48 +f 35//49 36//49 46//49 45//49 +f 29//50 30//50 40//50 39//50 +f 32//51 33//51 43//51 42//51 +g Icosphere_Icosphere_WOOD +usemtl WOOD +f 54//52 55//52 65//52 64//52 +g Icosphere_Icosphere_PLANT +usemtl PLANT +f 44//53 45//53 55//53 54//53 +f 38//54 39//54 49//54 48//54 +f 43//55 44//55 54//55 53//55 +f 37//56 38//56 48//56 47//56 +f 40//57 41//57 51//57 50//57 +f 45//58 46//58 56//58 55//58 +f 39//59 40//59 50//59 49//59 +f 42//60 43//60 53//60 52//60 +f 46//61 37//61 47//61 56//61 +g Icosphere_Icosphere_PLANTDARC +usemtl PLANTDARC +f 58//62 59//62 69//62 68//62 +g Icosphere_Icosphere_WOOD +usemtl WOOD +f 48//63 49//63 59//63 58//63 +f 53//64 54//64 64//64 63//64 +f 47//65 48//65 58//65 57//65 +f 50//66 51//66 61//66 60//66 +f 55//67 56//67 66//67 65//67 +f 49//68 50//68 60//68 59//68 +f 52//69 53//69 63//69 62//69 +f 56//70 47//70 57//70 66//70 +f 51//71 52//71 62//71 61//71 +f 108//72 107//72 84//72 83//72 +g Icosphere_Icosphere_PLANTDARC +usemtl PLANTDARC +f 63//73 64//73 74//73 73//73 +f 57//74 58//74 68//74 67//74 +f 60//75 61//75 71//75 70//75 +f 65//76 66//76 76//76 75//76 +f 59//77 60//77 70//77 69//77 +f 62//78 63//78 73//78 72//78 +f 66//79 57//79 67//79 76//79 +f 61//80 62//80 72//80 71//80 +f 64//81 65//81 75//81 74//81 +f 77//82 78//82 88//82 87//82 +g Icosphere_Icosphere_WOOD +usemtl WOOD +f 110//83 109//83 78//83 77//83 +f 112//84 111//84 81//84 80//84 +f 114//85 113//85 86//85 85//85 +f 115//86 112//86 80//86 79//86 +f 116//87 108//87 83//87 82//87 +f 113//88 110//88 77//88 86//88 +f 111//89 116//89 82//89 81//89 +f 107//90 114//90 85//90 84//90 +f 109//91 115//91 79//91 78//91 +g Icosphere_Icosphere_PLANT +usemtl PLANT +f 95//92 96//92 106//92 105//92 +g Icosphere_Icosphere_PLANTDARC +usemtl PLANTDARC +f 80//93 81//93 91//93 90//93 +f 85//94 86//94 96//94 95//94 +f 79//95 80//95 90//95 89//95 +f 82//96 83//96 93//96 92//96 +f 86//97 77//97 87//97 96//97 +f 81//98 82//98 92//98 91//98 +f 84//99 85//99 95//99 94//99 +f 78//100 79//100 89//100 88//100 +f 83//101 84//101 94//101 93//101 +g Icosphere_Icosphere_PLANT +usemtl PLANT +f 97//102 98//102 99//102 100//102 101//102 102//102 103//102 104//102 105//102 106//102 +f 89//103 90//103 100//103 99//103 +f 92//104 93//104 103//104 102//104 +f 96//105 87//105 97//105 106//105 +f 91//106 92//106 102//106 101//106 +f 94//107 95//107 105//107 104//107 +f 88//108 89//108 99//108 98//108 +f 93//109 94//109 104//109 103//109 +f 87//110 88//110 98//110 97//110 +f 90//111 91//111 101//111 100//111 +f 68//112 69//112 115//112 109//112 +f 74//113 75//113 114//113 107//113 +f 71//114 72//114 116//114 111//114 +f 76//115 67//115 110//115 113//115 +f 72//116 73//116 108//116 116//116 +f 69//117 70//117 112//117 115//117 +f 75//118 76//118 113//118 114//118 +f 70//119 71//119 111//119 112//119 +f 67//120 68//120 109//120 110//120 +f 73//121 74//121 107//121 108//121 diff --git a/MATEJKA_MAURICE_COLIN/textures/grassblade.png b/MATEJKA_MAURICE_COLIN/textures/grassblade.png new file mode 100644 index 0000000000000000000000000000000000000000..6ee7d1b64c67ab624d1feb8c40c3ae1f8daaefc7 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/grassblade.png differ diff --git a/MATEJKA_MAURICE_COLIN/textures/village.jpg b/MATEJKA_MAURICE_COLIN/textures/village.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a74a219f32d4ceb39cad46210da02782a5a6f120 Binary files /dev/null and b/MATEJKA_MAURICE_COLIN/textures/village.jpg differ