使用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>** 将看起来全黑。

输出

它将产生以下输出:

更新于:2021年9月27日

2K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告