diff --git a/DUFOUR/chambre.js b/DUFOUR/chambre.js new file mode 100644 index 0000000000000000000000000000000000000000..72205860ec44c6568adf0ec60771a74c3c3d6cc2 --- /dev/null +++ b/DUFOUR/chambre.js @@ -0,0 +1,106 @@ +"use strict";import * as THREE from 'three'; +import { OrbitControls } from 'three/addons/controls/OrbitControls.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 + +function fillScene() { + scene = new THREE.Scene(); + scene.fog = new THREE.Fog(0x808080, 2000, 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: 1000 }); + + // 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); // Position du cube + scene.add(transparentCube); + + // 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); + bed.position.set(200, 100, 425); + window.scene.add(bed); +} + +function init() { + var canvasWidth = 846; + var canvasHeight = 494; + 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); + camera.position.set(-500, 125, -100); + camera.lookAt(new THREE.Vector3(0, 0, 0)); + + // CONTROLS (L'utilisateur peut tourner la caméra) + cameraControls = new OrbitControls(camera, renderer.domElement); + cameraControls.enableDamping = true; // Ajoute un effet d'inertie + 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(); // Mise à jour des contrôles de la caméra + renderer.render(window.scene, camera); +} + +// Lancement du programme +try { + init(); + fillScene(); + animate(); + addToDOM(); +} catch (e) { + var errorReport = "Your program encountered an unrecoverable error, cannot draw on canvas. Error was:<br/><br/>"; + $('#webGL').append(errorReport + e); +} \ No newline at end of file