使用React-three-fiber建立3D地球
在本文中,您將學習如何使用react-three-fiber建立一個地球。我們將首先建立一個球體,然後將整個地球地圖對映到上面。這是一個有趣的紋理載入器特性,我們可以用它將任何影像作為紋理包裹在球體上。那麼,讓我們開始吧!
示例
首先,下載重要的庫:
npm i --save @react-three/fiber three
這個庫**react-three/fiber**將用於向網站新增WebGL渲染器,並將**threejs**和**React**連線起來。
下載一張地球地圖的圖片,並將其放在**“src”**資料夾中。我們已將影像檔案命名為**"world-map.gif"**。
在**App.js**中新增以下程式碼:
import React, { useRef } from "react"; import { Canvas,useFrame,useLoader } from "@reactthree/fiber"; import * as THREE from "three"; import earthImg from './world-map.gif' import "./App.css"; const Sphere=()=>{ const base=new THREE.TextureLoader().load(earthImg) const ref=useRef() useFrame(() => (ref.current.rotation.x=ref.current.rotation.y += 0.01)) <return( <mesh visible castShadow ref={ref}> <directionalLight intensity={0.5} /> <sphereGeometry attach="geometry" args={[2, 32, 32]} /> <meshBasicMaterial map={base} color="white" /> </mesh> ) } export default function App(){ return ( <Canvas> <ambientLight /> <Sphere/> </Canvas> ); };
解釋
在這裡,我們首先建立了一個球體並載入了一個紋理。然後我們將紋理包裹在球體上。
**<mesh>**用於建立threeJS物件,在其中我們使用**SphereGeometry**建立了一個盒子,用於定義大小、形狀和其他結構性事物。
**meshBasicMaterial**用於設計我們的幾何結構。**<mesh>**用於將結構和設計組合在一起。我們在其中建立了一個函式元件,並建立了一個引用。接下來,我們建立了一個Frame,用於更改mesh物件或球體的位置。然後我們將frame新增到引用中,並將引用賦給mesh。
Position引數只是定位物件。**<AmbientLight>**用於使顏色可見。如果沒有它,**<Sphere>** 將看起來全黑。
輸出
它將產生以下輸出:
廣告