diff --git a/RIFI/index.html b/RIFI/index.html
index 76e27dc119783f47da855d49712c43bab0798e9a..2caebab66e7e168cd268a36e54ef020fc2a21207 100644
--- a/RIFI/index.html
+++ b/RIFI/index.html
@@ -1 +1,32 @@
-Le travail n'a pas encore commencé!!!
\ No newline at end of file
+<!DOCTYPE html>
+<html>
+<head>
+    <meta charset="UTF-8">
+    <title>Projet webGL</title>
+    <style>
+        body { margin: 0; }
+        canvas { width: 100%; height: 100% }
+        .centre{text-align: center;}
+    </style>
+    </head>
+    <body>
+        <!-- API importe du site de Three.js -->
+        <script async src="https://unpkg.com/es-module-shims@1.3.6/dist/es-module-shims.js"></script>
+        <script type="importmap">
+            {
+                "imports": {
+                "three": "https://threejs.org/build/three.module.js",
+                "three/addons/": "https://threejs.org/examples/jsm/"
+                }
+            }
+        </script>
+        <!-- JQuery pour afficher les erreurs -->
+        <script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
+        <!-- Un titre centre -->
+        <h1 class="centre"> Projet webGL</h1>
+        <div id="webGL" class="centre"></div>
+        <!-- Mon script avec un chemin relatif -->
+        <script type="module" src="particle-grid.js"></script>
+        
+</body>
+</html>
\ No newline at end of file
diff --git a/RIFI/script.js b/RIFI/script.js
new file mode 100644
index 0000000000000000000000000000000000000000..2cb35db70dbe6b8b2b057ad675da67575a832669
--- /dev/null
+++ b/RIFI/script.js
@@ -0,0 +1,98 @@
+"use strict";
+
+import * as THREE from "three";
+import { OBJLoader } from "three/addons/loaders/OBJLoader.js";
+import { OrbitControls } from "three/addons/controls/OrbitControls.js";
+
+var camera, scene, renderer;
+var cameraControls;
+var clock = new THREE.Clock();
+var skull;
+
+function fillScene() {
+    scene = new THREE.Scene();
+    scene.background = new THREE.Color(0x1a1a1a);
+
+    // Éclairage dramatique
+    var mainLight = new THREE.DirectionalLight(0xFFAA55, 0.7);
+    mainLight.position.set(-200, 200, 100);
+    scene.add(mainLight);
+
+    var ambientLight = new THREE.AmbientLight(0x222222);
+    scene.add(ambientLight);
+
+    // Table
+    createTable();
+    loadSkull();
+}
+
+function createTable() {
+    var tableGeometry = new THREE.BoxGeometry(600, 20, 300);
+    var tableMaterial = new THREE.MeshPhongMaterial({ 
+        color: 0x332211,
+        shininess: 30
+    });
+    var table = new THREE.Mesh(tableGeometry, tableMaterial);
+    table.position.y = 0;
+    scene.add(table);
+}
+
+function loadSkull() {
+    var loader = new OBJLoader();
+    loader.load(
+        'skul.obj',
+        function(object) {
+            skull = object;
+            skull.scale.set(3, 3, 3);
+            skull.position.set(40, 20, 50);  // Place-le juste au-dessus de la table
+         
+             // Y=50 pour placer au-dessus de la table
+             skull.rotation.x = Math.PI / 8;
+            skull.rotation.y = Math.PI / 200;
+            skull.rotation.set(-Math.PI / 2.5, 0, 0);
+ // Tourne le crâne pour qu'il regarde vers l'avant
+
+            
+            
+            skull.traverse(function(child) {
+                if (child.isMesh) {
+                    child.material = new THREE.MeshPhongMaterial({ 
+                        color: 0xE0D0B0,
+                        shininess: 9
+                    });
+                }
+            });
+            scene.add(skull);
+        }
+    );
+}
+
+function init() {
+    renderer = new THREE.WebGLRenderer({ antialias: true });
+    renderer.setSize(846, 494);
+    renderer.setClearColor(0x1a1a1a, 1.0);
+
+    var container = document.getElementById('webGL');
+    container.appendChild(renderer.domElement);
+
+    camera = new THREE.PerspectiveCamera(35, 846/494, 1, 8000);
+    camera.position.set(0, 200, 600);
+
+    cameraControls = new OrbitControls(camera, renderer.domElement);
+    cameraControls.target.set(0, 50, 0);
+}
+
+function animate() {
+    requestAnimationFrame(animate);
+    var delta = clock.getDelta();
+    cameraControls.update(delta);
+    renderer.render(scene, camera);
+}
+
+try {
+    init();
+    fillScene();
+    animate();
+} catch(e) {
+    console.error(e);
+}
\ No newline at end of file