使用 React-three-fiber 创建 3D 地球仪
react jsjavascript libraryfront end technology更新于 2025/11/16 22:36:17
在本文中,您将学习如何使用 React-threefiber 创建地球仪。我们将首先创建一个球体,然后在其上绘制一幅完整的地球地图。这是一个有趣的纹理加载器功能,我们可以利用它,将任何图像作为纹理包裹在球体上。那么,让我们开始吧!
示例
首先,下载重要的库 −
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,用于更改网格对象或球体的位置。然后,我们将 Frame 添加到引用中,并引用网格。
Position 参数只是定位对象。<AmbientLight> 用于使颜色可见。如果没有它,<Sphere> 看起来会全黑。
输出
它会产生以下输出 −
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

