diff --git a/public/planet/license.txt b/public/planet/license.txt
new file mode 100644
index 0000000..08f651a
--- /dev/null
+++ b/public/planet/license.txt
@@ -0,0 +1,11 @@
+Model Information:
+* title: Stylized planet
+* source: https://sketchfab.com/3d-models/stylized-planet-789725db86f547fc9163b00f302c3e70
+* author: cmzw (https://sketchfab.com/cmzw)
+
+Model License:
+* license type: CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
+* requirements: Author must be credited. Commercial use is allowed.
+
+If you use this 3D model in your project be sure to copy paste this credit wherever you share it:
+This work is based on "Stylized planet" (https://sketchfab.com/3d-models/stylized-planet-789725db86f547fc9163b00f302c3e70) by cmzw (https://sketchfab.com/cmzw) licensed under CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)
\ No newline at end of file
diff --git a/public/planet/scene.bin b/public/planet/scene.bin
new file mode 100644
index 0000000..ea53ab9
Binary files /dev/null and b/public/planet/scene.bin differ
diff --git a/public/planet/scene.gltf b/public/planet/scene.gltf
new file mode 100644
index 0000000..5b02147
--- /dev/null
+++ b/public/planet/scene.gltf
@@ -0,0 +1,536 @@
+{
+ "accessors": [
+ {
+ "bufferView": 2,
+ "componentType": 5126,
+ "count": 26495,
+ "max": [
+ 0.8758764863014221,
+ 0.8545469045639038,
+ 0.8728971481323242
+ ],
+ "min": [
+ -0.8763356804847717,
+ -0.8634992837905884,
+ -0.8758782148361206
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 317940,
+ "componentType": 5126,
+ "count": 26495,
+ "max": [
+ 1.0,
+ 0.9999911785125732,
+ 0.9991646409034729
+ ],
+ "min": [
+ -1.0,
+ -0.9999968409538269,
+ -0.9999611377716064
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 1,
+ "componentType": 5126,
+ "count": 26495,
+ "max": [
+ 1.0,
+ 1.0
+ ],
+ "min": [
+ 0.0,
+ 0.0
+ ],
+ "type": "VEC2"
+ },
+ {
+ "bufferView": 0,
+ "componentType": 5125,
+ "count": 103014,
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 635880,
+ "componentType": 5126,
+ "count": 6596,
+ "max": [
+ 0.6551179885864258,
+ 0.6613333821296692,
+ 0.6618664860725403
+ ],
+ "min": [
+ -0.6606217622756958,
+ -0.6490849852561951,
+ -0.6526646018028259
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 2,
+ "byteOffset": 715032,
+ "componentType": 5126,
+ "count": 6596,
+ "max": [
+ 0.999987006187439,
+ 0.9998384118080139,
+ 0.9999796748161316
+ ],
+ "min": [
+ -0.9995425939559937,
+ -0.999676525592804,
+ -0.9994800686836243
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 1,
+ "byteOffset": 211960,
+ "componentType": 5126,
+ "count": 6596,
+ "max": [
+ 1.0,
+ 1.0
+ ],
+ "min": [
+ 0.0,
+ 0.0
+ ],
+ "type": "VEC2"
+ },
+ {
+ "bufferView": 0,
+ "byteOffset": 412056,
+ "componentType": 5125,
+ "count": 39042,
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 3,
+ "componentType": 5126,
+ "count": 451,
+ "max": [
+ 15.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 5,
+ "componentType": 5126,
+ "count": 451,
+ "max": [
+ 0.20017318427562714,
+ 0.979751706123352,
+ 0.2001722753047943,
+ 0.9797602891921997
+ ],
+ "min": [
+ -0.018710684031248093,
+ -0.9797568917274475,
+ -0.1991616040468216,
+ 0.0026621678844094276
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 3,
+ "byteOffset": 1804,
+ "componentType": 5126,
+ "count": 125,
+ "max": [
+ 15.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 4,
+ "componentType": 5126,
+ "count": 125,
+ "max": [
+ 1.0000001192092896,
+ 1.0,
+ 1.0000001192092896
+ ],
+ "min": [
+ 0.9999998807907104,
+ 1.0,
+ 0.9999998807907104
+ ],
+ "type": "VEC3"
+ },
+ {
+ "bufferView": 3,
+ "byteOffset": 2304,
+ "componentType": 5126,
+ "count": 451,
+ "max": [
+ 15.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 5,
+ "byteOffset": 7216,
+ "componentType": 5126,
+ "count": 451,
+ "max": [
+ 0.20017318427562714,
+ 0.979751706123352,
+ 0.2001722753047943,
+ 0.9797602891921997
+ ],
+ "min": [
+ -0.018710684031248093,
+ -0.9797568917274475,
+ -0.1991616040468216,
+ 0.0026621678844094276
+ ],
+ "type": "VEC4"
+ },
+ {
+ "bufferView": 3,
+ "byteOffset": 4108,
+ "componentType": 5126,
+ "count": 125,
+ "max": [
+ 15.0
+ ],
+ "min": [
+ 0.0
+ ],
+ "type": "SCALAR"
+ },
+ {
+ "bufferView": 4,
+ "byteOffset": 1500,
+ "componentType": 5126,
+ "count": 125,
+ "max": [
+ 1.0000001192092896,
+ 1.0,
+ 1.0000001192092896
+ ],
+ "min": [
+ 0.9999998807907104,
+ 1.0,
+ 0.9999998807907104
+ ],
+ "type": "VEC3"
+ }
+ ],
+ "animations": [
+ {
+ "channels": [
+ {
+ "sampler": 0,
+ "target": {
+ "node": 3,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 1,
+ "target": {
+ "node": 3,
+ "path": "scale"
+ }
+ },
+ {
+ "sampler": 2,
+ "target": {
+ "node": 5,
+ "path": "rotation"
+ }
+ },
+ {
+ "sampler": 3,
+ "target": {
+ "node": 5,
+ "path": "scale"
+ }
+ }
+ ],
+ "name": "Animation",
+ "samplers": [
+ {
+ "input": 8,
+ "interpolation": "LINEAR",
+ "output": 9
+ },
+ {
+ "input": 10,
+ "interpolation": "LINEAR",
+ "output": 11
+ },
+ {
+ "input": 12,
+ "interpolation": "LINEAR",
+ "output": 13
+ },
+ {
+ "input": 14,
+ "interpolation": "LINEAR",
+ "output": 15
+ }
+ ]
+ }
+ ],
+ "asset": {
+ "extras": {
+ "author": "cmzw (https://sketchfab.com/cmzw)",
+ "license": "CC-BY-4.0 (http://creativecommons.org/licenses/by/4.0/)",
+ "source": "https://sketchfab.com/3d-models/stylized-planet-789725db86f547fc9163b00f302c3e70",
+ "title": "Stylized planet"
+ },
+ "generator": "Sketchfab-14.10.0",
+ "version": "2.0"
+ },
+ "bufferViews": [
+ {
+ "buffer": 0,
+ "byteLength": 568224,
+ "name": "floatBufferViews",
+ "target": 34963
+ },
+ {
+ "buffer": 0,
+ "byteLength": 264728,
+ "byteOffset": 568224,
+ "byteStride": 8,
+ "name": "floatBufferViews",
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 794184,
+ "byteOffset": 832952,
+ "byteStride": 12,
+ "name": "floatBufferViews",
+ "target": 34962
+ },
+ {
+ "buffer": 0,
+ "byteLength": 4608,
+ "byteOffset": 1627136,
+ "name": "floatBufferViews"
+ },
+ {
+ "buffer": 0,
+ "byteLength": 3000,
+ "byteOffset": 1631744,
+ "byteStride": 12,
+ "name": "floatBufferViews"
+ },
+ {
+ "buffer": 0,
+ "byteLength": 14432,
+ "byteOffset": 1634744,
+ "byteStride": 16,
+ "name": "floatBufferViews"
+ }
+ ],
+ "buffers": [
+ {
+ "byteLength": 1649176,
+ "uri": "scene.bin"
+ }
+ ],
+ "extensionsUsed": [
+ "KHR_materials_unlit"
+ ],
+ "images": [
+ {
+ "uri": "textures/Clouds_baseColor.png"
+ },
+ {
+ "uri": "textures/Planet_baseColor.png"
+ }
+ ],
+ "materials": [
+ {
+ "doubleSided": true,
+ "emissiveTexture": {
+ "index": 0
+ },
+ "extensions": {
+ "KHR_materials_unlit": {}
+ },
+ "name": "Clouds",
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 0
+ },
+ "metallicFactor": 0.0
+ }
+ },
+ {
+ "emissiveFactor": [
+ 0.23391156271636818,
+ 0.23391156271636818,
+ 0.23391156271636818
+ ],
+ "emissiveTexture": {
+ "index": 1
+ },
+ "extensions": {
+ "KHR_materials_unlit": {}
+ },
+ "name": "Planet",
+ "pbrMetallicRoughness": {
+ "baseColorTexture": {
+ "index": 1
+ },
+ "metallicFactor": 0.0
+ }
+ }
+ ],
+ "meshes": [
+ {
+ "name": "Object_0",
+ "primitives": [
+ {
+ "attributes": {
+ "NORMAL": 1,
+ "POSITION": 0,
+ "TEXCOORD_0": 2
+ },
+ "indices": 3,
+ "material": 0,
+ "mode": 4
+ }
+ ]
+ },
+ {
+ "name": "Object_1",
+ "primitives": [
+ {
+ "attributes": {
+ "NORMAL": 5,
+ "POSITION": 4,
+ "TEXCOORD_0": 6
+ },
+ "indices": 7,
+ "material": 1,
+ "mode": 4
+ }
+ ]
+ }
+ ],
+ "nodes": [
+ {
+ "children": [
+ 1
+ ],
+ "matrix": [
+ 0.9979661703109741,
+ 0.06371438503265381,
+ 0.001990502001717701,
+ 0.0,
+ 0.0,
+ 0.031225780025124772,
+ -0.9995123744010925,
+ 0.0,
+ -0.06374546885490417,
+ 0.9974795579910278,
+ 0.031162271276116593,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ],
+ "name": "Sketchfab_model"
+ },
+ {
+ "children": [
+ 2
+ ],
+ "name": "root"
+ },
+ {
+ "children": [
+ 3,
+ 5
+ ],
+ "matrix": [
+ 1.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 2.220446049250313e-16,
+ 1.0,
+ 0.0,
+ 0.0,
+ -1.0,
+ 2.220446049250313e-16,
+ 0.0,
+ 0.0,
+ 0.0,
+ 0.0,
+ 1.0
+ ],
+ "name": "GLTF_SceneRootNode"
+ },
+ {
+ "children": [
+ 4
+ ],
+ "name": "Clouds_1"
+ },
+ {
+ "mesh": 0,
+ "name": "Object_4"
+ },
+ {
+ "children": [
+ 6
+ ],
+ "name": "Planet_2"
+ },
+ {
+ "mesh": 1,
+ "name": "Object_6"
+ }
+ ],
+ "samplers": [
+ {
+ "magFilter": 9729,
+ "minFilter": 9987,
+ "wrapS": 10497,
+ "wrapT": 10497
+ }
+ ],
+ "scene": 0,
+ "scenes": [
+ {
+ "name": "Sketchfab_Scene",
+ "nodes": [
+ 0
+ ]
+ }
+ ],
+ "textures": [
+ {
+ "sampler": 0,
+ "source": 0
+ },
+ {
+ "sampler": 0,
+ "source": 1
+ }
+ ]
+}
diff --git a/public/planet/textures/Clouds_baseColor.png b/public/planet/textures/Clouds_baseColor.png
new file mode 100644
index 0000000..314be79
Binary files /dev/null and b/public/planet/textures/Clouds_baseColor.png differ
diff --git a/public/planet/textures/Planet_baseColor.png b/public/planet/textures/Planet_baseColor.png
new file mode 100644
index 0000000..1f69ec6
Binary files /dev/null and b/public/planet/textures/Planet_baseColor.png differ
diff --git a/src/components/canvas/Earth.jsx b/src/components/canvas/Earth.jsx
new file mode 100644
index 0000000..d19dd27
--- /dev/null
+++ b/src/components/canvas/Earth.jsx
@@ -0,0 +1,44 @@
+import React, { Suspense } from "react";
+import { Canvas } from "@react-three/fiber";
+import { OrbitControls, Preload, useGLTF } from "@react-three/drei";
+
+import CanvasLoader from "../Loader";
+
+const Earth = () => {
+ const earth = useGLTF("./planet/scene.gltf");
+
+ return (
+
+ );
+};
+
+const EarthCanvas = () => {
+ return (
+
+ );
+};
+
+export default EarthCanvas;
diff --git a/src/components/canvas/index.js b/src/components/canvas/index.js
index 7c05341..652faa2 100644
--- a/src/components/canvas/index.js
+++ b/src/components/canvas/index.js
@@ -1,3 +1,4 @@
import StarsCanvas from "./Stars";
+import EarthCanvas from "./Earth";
-export { StarsCanvas };
+export { StarsCanvas, EarthCanvas };