diff --git a/examples/basic/threejs/index.html b/examples/basic/threejs/index.html
new file mode 100644
index 00000000..f15724e3
--- /dev/null
+++ b/examples/basic/threejs/index.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/examples/basic/threejs/screenshot.png b/examples/basic/threejs/screenshot.png
new file mode 100644
index 00000000..74ab1708
Binary files /dev/null and b/examples/basic/threejs/screenshot.png differ
diff --git a/examples/basic/threejs/script.js b/examples/basic/threejs/script.js
new file mode 100644
index 00000000..447df1d9
--- /dev/null
+++ b/examples/basic/threejs/script.js
@@ -0,0 +1,73 @@
+(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o
+{% endblock %}
diff --git a/src-examples/basic/threejs/screenshot.png b/src-examples/basic/threejs/screenshot.png
new file mode 100644
index 00000000..74ab1708
Binary files /dev/null and b/src-examples/basic/threejs/screenshot.png differ
diff --git a/src-examples/basic/threejs/script.js b/src-examples/basic/threejs/script.js
new file mode 100644
index 00000000..dd8f60bd
--- /dev/null
+++ b/src-examples/basic/threejs/script.js
@@ -0,0 +1,70 @@
+const GAME = new WHS.World({
+ stats: 'fps', // fps, ms, mb
+ autoresize: true,
+
+ gravity: {
+ x: 0,
+ y: -100,
+ z: 0
+ },
+
+ camera: {
+ far: 10000,
+ y: 10,
+ z: 30
+ },
+
+ init: {
+ scene: false
+ }
+});
+
+const scene = new THREE.Scene();
+
+const obj1 = new THREE.Mesh(new THREE.SphereGeometry(3, 32, 32), new THREE.MeshBasicMaterial({color: 0xffffff}));
+obj1.position.set(6, 6, 0);
+
+scene.add(obj1);
+
+const obj2 = new THREE.Mesh(new THREE.SphereGeometry(3, 32, 32), new THREE.MeshBasicMaterial({color: 0xffffff}));
+obj2.position.set(12, 6, 0);
+
+scene.add(obj2);
+
+GAME.setScene(scene, true);
+GAME._initCamera();
+GAME._initRenderer();
+GAME._initHelpers();
+
+const sphere = new WHS.Shape(
+ new THREE.Mesh(new THREE.SphereGeometry(3, 32, 32), new THREE.MeshBasicMaterial({color: 0xffffff}))
+);
+
+sphere.addTo(GAME);
+sphere.position.y = 3;
+
+new WHS.Plane({
+ geometry: {
+ width: 250,
+ height: 250
+ },
+
+ mass: 0,
+
+ material: {
+ color: 0xff0000,
+ kind: 'basic'
+ },
+
+ pos: {
+ x: 0,
+ y: 0,
+ z: 0
+ },
+
+ rot: {
+ x: -Math.PI / 2
+ }
+}).addTo(GAME);
+
+GAME.start();