diff --git a/ParticleGenerator/ParticleGenerator.exe b/ParticleGenerator/ParticleGenerator.exe
index 83625ba84b7897070af281d57e4f0e11a2fa5543..8f744a0542490da9a0303903197d2324630d4d13 100644
Binary files a/ParticleGenerator/ParticleGenerator.exe and b/ParticleGenerator/ParticleGenerator.exe differ
diff --git a/ParticleGenerator/ParticleGenerator.pdb b/ParticleGenerator/ParticleGenerator.pdb
index c46357bcd341adbee94080b213a6fb6b9e799d75..dc845560b41a18b567016b703219f5c127cefc63 100644
Binary files a/ParticleGenerator/ParticleGenerator.pdb and b/ParticleGenerator/ParticleGenerator.pdb differ
diff --git a/ParticleGenerator/src/Interface/Generator/PhysicGeneratorInterface.cpp b/ParticleGenerator/src/Interface/Generator/PhysicGeneratorInterface.cpp
index acae397611560393a79b314e88f8766d76a1e3fe..f7442ebe597a98e55e25b591b57284f4d32548d5 100644
--- a/ParticleGenerator/src/Interface/Generator/PhysicGeneratorInterface.cpp
+++ b/ParticleGenerator/src/Interface/Generator/PhysicGeneratorInterface.cpp
@@ -29,6 +29,7 @@ namespace pg {
 
         if(ImGui::CollapsingHeader("Generator Position")) {
             ImGui::DragFloat3("Generator Position (x, y, z)", &this->_generator->m_position[0], 0.1f);
+            ImGui::SliderFloat3("Generator Roation (x, y, z)", &this->_generator->m_rotation[0], -360.f, 360.f);
             ImGui::DragFloat("Position Variation", &this->_generator->m_positionVariation, 0.01f, 0.f, 0.f, "%.4f");
         }
 
diff --git a/ParticleGenerator/src/Particle/generator/ParticleGenerator.hpp b/ParticleGenerator/src/Particle/generator/ParticleGenerator.hpp
index b9ff82aad4ade926fe42cbcd418ceaf29d5dde22..7536d755df7d706410c1b4f9518e8393548a272f 100644
--- a/ParticleGenerator/src/Particle/generator/ParticleGenerator.hpp
+++ b/ParticleGenerator/src/Particle/generator/ParticleGenerator.hpp
@@ -8,16 +8,19 @@ namespace pg {
 		protected:
 			float m_positionVariation;
 			glm::vec3 m_position;
+			glm::vec3 m_rotation;
 			
 		public:
-			ParticleGenerator(const ct::Point& position = ct::Point(), float positionVariation = 0.0)
-			: m_position(position), m_positionVariation(positionVariation) {}
+			ParticleGenerator(const glm::vec3& position = glm::vec3(0.f), float positionVariation = 0.0)
+			: m_position(position), m_positionVariation(positionVariation), m_rotation(0.0) {}
 			
 			inline float getPositionVariation() const {return this->m_positionVariation;}
 			inline glm::vec3 getPosition() const {return this->m_position;}
+			inline glm::vec3 getRotation() const {return this->m_rotation;}
 
 			inline void setPositionVariation(float positionVariation) {this->m_positionVariation = positionVariation;}
-			inline void setPosition(const ct::Point& position) {this->m_position = position;}
+			inline void setPosition(const glm::vec3& position) {this->m_position = position;}
+			inline void setRotation(const glm::vec3& rotation) {this->m_rotation = rotation;}
 			
 			virtual std::vector<std::unique_ptr<Particle>> generate(size_t count, size_t birth = 0) const = 0;
  
diff --git a/ParticleGenerator/src/Particle/generator/PhysicsParticleGenerator.cpp b/ParticleGenerator/src/Particle/generator/PhysicsParticleGenerator.cpp
index 4092956dc8a160992c873976a84395e97b8e8cac..5841bb70abcbcce2d2b0efb183692d92b1cc9871 100644
--- a/ParticleGenerator/src/Particle/generator/PhysicsParticleGenerator.cpp
+++ b/ParticleGenerator/src/Particle/generator/PhysicsParticleGenerator.cpp
@@ -4,6 +4,9 @@
 
 #include <iostream>
 
+#define GLM_ENABLE_EXPERIMENTAL
+#include <glm/gtx/rotate_vector.hpp>
+
 namespace pg
 {
 	PhysicsParticleGenerator::PhysicsParticleGenerator(const ct::Point& position, float positionVariation, const glm::dvec3& velocity) 
@@ -48,13 +51,27 @@ namespace pg
 			glm::vec3 accelerationVariation = {ax(randomEngine), ay(randomEngine), az(randomEngine)};
 			glm::vec3 frictionVariation = {fx(randomEngine), fy(randomEngine), fz(randomEngine)};
 
-			particle->setVelocity(this->m_velocity + velocityVariation);
-			particle->setAcceleration(this->m_acceleration + accelerationVariation);
-			particle->setFriction(this->m_friction + frictionVariation);
+			glm::vec3 realVelocity = this->m_velocity + velocityVariation;
+			glm::vec3 realAcceleration = this->m_acceleration + accelerationVariation;
+			glm::vec3 realFriction = this->m_friction + frictionVariation;
 
-			particles.push_back(std::unique_ptr<Particle>(particle));
+			realVelocity = glm::rotateZ(realVelocity, glm::radians(this->m_rotation.z));
+			realVelocity = glm::rotateY(realVelocity, glm::radians(this->m_rotation.y));
+			realVelocity = glm::rotateX(realVelocity, glm::radians(this->m_rotation.x));
 
+			realAcceleration = glm::rotateZ(realAcceleration, glm::radians(this->m_rotation.z));
+			realAcceleration = glm::rotateY(realAcceleration, glm::radians(this->m_rotation.y));
+			realAcceleration = glm::rotateX(realAcceleration, glm::radians(this->m_rotation.x));
 
+			realFriction = glm::rotateZ(realFriction, glm::radians(this->m_rotation.z));
+			realFriction = glm::rotateY(realFriction, glm::radians(this->m_rotation.y));
+			realFriction = glm::rotateX(realFriction, glm::radians(this->m_rotation.x));
+			
+			particle->setVelocity(realVelocity);
+			particle->setAcceleration(realAcceleration);
+			particle->setFriction(realFriction);
+
+			particles.push_back(std::unique_ptr<Particle>(particle));
 		}
 
 		return particles;
diff --git a/ParticleGenerator/src/Scene/Scenes/Grid.cpp b/ParticleGenerator/src/Scene/Scenes/Grid.cpp
index 6dba19dd27dead89ee8f1b75cfad4f639b3601fa..a5e2e637c80237cde46a3359fade3daf9367a4c4 100644
--- a/ParticleGenerator/src/Scene/Scenes/Grid.cpp
+++ b/ParticleGenerator/src/Scene/Scenes/Grid.cpp
@@ -23,7 +23,7 @@ namespace pg::scene
 		if (!_shader.usable())
 		{
 			Source vertexShaderSource("res/shaders/scene/Grid.vert", Source::Categorie::VERTEX);
-			Source fragmentShaderSource("/res/shaders/scene/Grid.frag", Source::Categorie::FRAGMENT);
+			Source fragmentShaderSource("res/shaders/scene/Grid.frag", Source::Categorie::FRAGMENT);
 
 			_shader << vertexShaderSource;
 			_shader << fragmentShaderSource;
diff --git a/ParticleGenerator/src/Scene/Scenes/MagicalIndex.cpp b/ParticleGenerator/src/Scene/Scenes/MagicalIndex.cpp
deleted file mode 100644
index ceab1cb6980cffa97afe5036ba1853ca39fe924e..0000000000000000000000000000000000000000
--- a/ParticleGenerator/src/Scene/Scenes/MagicalIndex.cpp
+++ /dev/null
@@ -1,89 +0,0 @@
-#include "MagicalIndex.hpp"
-
-#include "../../Mesh/Model.hpp"
-
-namespace pg::scene
-{
-	MagicalIndex::MagicalIndex()
-		: _skybox("res/shaders/system/Skybox.vert", "res/shaders/system/Skybox.frag") {}
-
-	void MagicalIndex::initialize()
-	{
-		std::cout << "Mark_0" << std::endl;
-		if (!this->_book.isGenerated())
-		{
-			Model meshBook("res/models/magicalIndex/book.obj");
-			this->_book.generate(meshBook.getMeshGeometry().vertices, meshBook.getMeshGeometry().indices);
-		}
-		std::cout << "Mark_1" << std::endl;
-
-		this->_bookMaterial.load("res/models/magicalIndex/book.png");
-		error::OpenGLError::check();
-		std::cout << "Mark_2" << std::endl;
-
-		if (!this->_program.usable())
-		{
-			Source vertexShaderSource("res/shaders/scene/Phong.vert", Source::Categorie::VERTEX);
-			Source fragmentShaderSource("res/shaders/scene/Phong.frag", Source::Categorie::FRAGMENT);
-
-			this->_program << vertexShaderSource;
-			this->_program << fragmentShaderSource;
-
-			this->_program.link();
-
-			vertexShaderSource.release();
-			fragmentShaderSource.release();
-		}
-
-		error::OpenGLError::check();
-		std::cout << "Mark_3" << std::endl;
-
-		if (this->_skybox.material().isValid())
-		{
-			this->_skybox.load(
-				{
-					"res/textures/skybox/sky/right.png",
-					"res/textures/skybox/sky/left.png",
-					"res/textures/skybox/sky/top.png",
-					"res/textures/skybox/sky/bottom.png",
-					"res/textures/skybox/sky/front.png",
-					"res/textures/skybox/sky/back.png",
-				},
-				Texture::Format::AUTO,
-				false);
-		}
-
-		error::OpenGLError::check();
-		std::cout << "Mark_4" << std::endl;
-	}
-
-	void MagicalIndex::update(double)
-	{
-	}
-
-	void MagicalIndex::render(const Camera &camera, double current_time)
-	{
-		this->_skybox.material().bind(0);
-		this->_skybox.draw(camera);
-
-		glEnable(GL_DEPTH_TEST);
-		this->_bookMaterial.bind(0);
-
-		this->_program.use();
-		this->_program.setUniform("uModel", glm::mat4(1.f));
-		this->_program.setUniform("uView", camera.getViewMatrix());
-		this->_program.setUniform("uProj", camera.getViewFrustum().getProjectionMatrix());
-
-		this->_program.setUniform("uSlot", 0);
-		this->_program.setUniform("uLightPosition", glm::vec3(0.f, 10.f, 0.f));
-		this->_program.setUniform("uViewPosition", camera.getPosition());
-		this->_program.setUniform("uColor", glm::vec3(1.f, 1.f, 1.f));
-
-		this->_book.draw();
-		glDisable(GL_DEPTH_TEST);
-	}
-
-	void MagicalIndex::destroy()
-	{
-	}
-}
\ No newline at end of file
diff --git a/ParticleGenerator/src/Scene/Scenes/MagicalIndex.hpp b/ParticleGenerator/src/Scene/Scenes/MagicalIndex.hpp
deleted file mode 100644
index 4b8a96d269ad94f328fbacb2efacea47f51afe59..0000000000000000000000000000000000000000
--- a/ParticleGenerator/src/Scene/Scenes/MagicalIndex.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include "Scene.hpp"
-
-#include "../../Renderer/Shader/Program.hpp"
-#include "../../Renderer/Texture/Material.hpp"
-
-#include "../../Mesh/Mesh.hpp"
-#include "../../Mesh/Skybox.hpp"
-#include "../../Mesh/Billboard.hpp"
-
-
-namespace pg::scene {
-    class MagicalIndex : public Scene {
-        private:
-            Mesh _book;
-            Material _bookMaterial;
-            SkyBox _skybox;
-            Program _program;
-
-        public:
-            MagicalIndex();
-
-            virtual void initialize();
-            virtual void update(double);
-            virtual void render(const Camera &, double);
-            virtual void destroy();
-
-            virtual inline std::string name() const {return "A Certain Magical Index Scene";};
-            virtual inline Interface * interface() {return nullptr;};
-    };
-}
\ No newline at end of file
diff --git a/ParticleGenerator/src/main.cpp b/ParticleGenerator/src/main.cpp
index 348fd5856f4197ee2494a5ae771ec2d60cb6865e..9b1757ed2f18a18d4c4db6936a2ac32cfa37867f 100644
--- a/ParticleGenerator/src/main.cpp
+++ b/ParticleGenerator/src/main.cpp
@@ -8,7 +8,6 @@
 #include "Scene/Scenes/Physic.hpp"
 #include "Scene/Scenes/Path.hpp"
 #include "Scene/Scenes/Mesh.hpp"
-#include "Scene/Scenes/MagicalIndex.hpp"
 
 #include "Interface/GlobalInterface.hpp"
 
@@ -82,15 +81,12 @@ int main(int argc, const char * argv[]) {
         pg::scene::Physic physicScene;
         pg::scene::Path pathScene(&bezier, ctrlPoints);
         pg::scene::Mesh meshScene(&bezier, ctrlPoints);
-        pg::scene::MagicalIndex magicalIndex;
 
         pg::Manager manager(window, &physicScene);
-
         manager.add(physicScene);
         manager.add(pathScene);
         manager.add(meshScene);
 
-        manager.add(magicalIndex);
 
         pg::GlobalInterface interface(window, manager, "Particle Generator Settings");