Advertisement
bbcqx

Untitled

Apr 7th, 2023 (edited)
499
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // npm install three @react-three/fiber @react-three/drei react-gesture-responder
  2.  
  3.  
  4.  
  5. import React, { Suspense } from "react";
  6. import { Canvas } from "@react-three/fiber";
  7. import { OrbitControls, PerspectiveCamera, useGLTF } from "@react-three/drei";
  8. import { GestureResponderView } from "react-gesture-responder";
  9.  
  10. type ModelViewerProps = {
  11.   url: string;
  12. };
  13.  
  14. const Model: React.FC<ModelViewerProps> = ({ url }) => {
  15.   const { nodes, materials } = useGLTF(url);
  16.  
  17.   return (
  18.     <group>
  19.       <mesh geometry={nodes.Mesh_0.geometry} material={materials.Material_0} />
  20.     </group>
  21.   );
  22. };
  23.  
  24. const ModelViewer: React.FC<ModelViewerProps> = ({ url }) => {
  25.   return (
  26.     <GestureResponderView style={{ width: "100%", height: "100%" }}>
  27.       <Canvas>
  28.         <PerspectiveCamera makeDefault position={[0, 0, 5]} />
  29.         <Suspense fallback={null}>
  30.           <Model url={url} />
  31.         </Suspense>
  32.         <OrbitControls />
  33.       </Canvas>
  34.     </GestureResponderView>
  35.   );
  36. };
  37.  
  38. export default ModelViewer;
  39.  
  40.  
  41.  
  42.  
  43. //--- KKKKUUURRRWWWAAAA NEXT -----
  44.  
  45.  
  46.  
  47.  
  48. // pages/index.tsx
  49. import React from "react";
  50. import ModelViewer from "../components/ModelViewer";
  51.  
  52. const IndexPage: React.FC = () => {
  53.   return (
  54.     <div style={{ width: "100vw", height: "100vh" }}>
  55.       <ModelViewer url="/path/to/your/model.glb" />
  56.     </div>
  57.   );
  58. };
  59.  
  60. export default IndexPage;
  61.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement