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 };