aboutsummaryrefslogtreecommitdiff
path: root/src/components/3DModels.jsx
diff options
context:
space:
mode:
authorAndrew Lee <andrew@alee14.me>2025-09-18 01:41:42 -0400
committerAndrew Lee <andrew@alee14.me>2025-09-18 01:44:43 -0400
commitbef7bfad876fb37f6e337a699174c499c43abf33 (patch)
tree95c33a62791b8acd7e427cc504492368979c17b0 /src/components/3DModels.jsx
parent7889ea6ab03e922af1cb954d49913bb050cbec13 (diff)
downloadpersonal-website-bef7bfad876fb37f6e337a699174c499c43abf33.tar.gz
personal-website-bef7bfad876fb37f6e337a699174c499c43abf33.tar.bz2
personal-website-bef7bfad876fb37f6e337a699174c499c43abf33.zip
Revamped project page; Switch to React; Updated pkgs
Diffstat (limited to 'src/components/3DModels.jsx')
-rw-r--r--src/components/3DModels.jsx25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/components/3DModels.jsx b/src/components/3DModels.jsx
new file mode 100644
index 0000000..4d8507e
--- /dev/null
+++ b/src/components/3DModels.jsx
@@ -0,0 +1,25 @@
+import { Canvas, useLoader } from "@react-three/fiber";
+import { OrbitControls } from "@react-three/drei";
+import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader";
+
+const Model = ({ model, scale }) => {
+ const gltf = useLoader(GLTFLoader, model);
+ return (
+ <>
+ <primitive object={gltf.scene} scale={scale} />
+ </>
+ );
+};
+
+export default function ThreeJSModels({ modelName, scale = 2 }) {
+ return (
+ <div>
+ <Canvas style={{ width: '70%', height: '70%', borderRadius: '10px', paddingBottom: '.5em' }}>
+ <Model model={modelName} scale={scale} />
+ <ambientLight intensity={1.5} />
+ <directionalLight color="white" position={[0, 2, 0]} />
+ <OrbitControls />
+ </Canvas>
+ </div>
+ )
+}