当前位置: 首页 > news >正文

在 React 项目中安装和配置 Three.js

React 与 Three.js 的结合 :通过 React 管理组件化结构和应用逻辑,利用 Three.js 实现 3D 图形的渲染与交互。使用这种方法,我们可以在保持代码清晰和结构化的同时,实现令人惊叹的 3D 效果。

在本文中,我们将以一个简单的示例为基础,详细讲解如何在 React 项目中集成 Three.js,并创建一个动态的 3D 场景。

本文介绍使用最原始的three,如果想了解 react-three-fiber 可以参考这篇文章:https://mp.weixin.qq.com/s/y0gsws7DqvbT_iZRasenkA?token=1707814885&lang=zh_CN

安装依赖并设置项目

使用 Vite 初始化项目,并安装 Three.js:

# 创建项目
npm create vite threejs-react-demo --template react# 进入项目目录
cd threejs-react-app# 安装 Three.js
npm install three

项目目录结构

我们将创建以下目录结构:

src/
├── components/       # 存放 React 组件
│   ├── ThreeScene.jsx # Three.js 场景组件
├── App.jsx           # 入口文件
└── main.jsx          # React 渲染入口

创建 Three.js 场景

1. 创建 ThreeScene.jsx
import React, { useEffect, useRef } from 'react';
import * as THREE from 'three';const ThreeScene = () => {const containerRef = useRef(null);useEffect(() => {// 获取容器元素const container = containerRef.current;// 创建场景const scene = new THREE.Scene();// 创建相机const camera = new THREE.PerspectiveCamera(75,container.clientWidth / container.clientHeight,0.1,1000);camera.position.z = 5;// 创建渲染器const renderer = new THREE.WebGLRenderer();renderer.setSize(container.clientWidth, container.clientHeight);container.appendChild(renderer.domElement);// 添加一个立方体const geometry = new THREE.BoxGeometry();const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });const cube = new THREE.Mesh(geometry, material);scene.add(cube);// 动画函数const animate = () => {requestAnimationFrame(animate);// 旋转立方体cube.rotation.x += 0.01;cube.rotation.y += 0.01;renderer.render(scene, camera);};animate();// 窗口尺寸调整const handleResize = () => {camera.aspect = container.clientWidth / container.clientHeight;camera.updateProjectionMatrix();renderer.setSize(container.clientWidth, container.clientHeight);};window.addEventListener('resize', handleResize);// 清理return () => {window.removeEventListener('resize', handleResize);container.removeChild(renderer.domElement);};}, []);return <div ref={containerRef} style={{ width: '100%', height: '100vh' }} />;
};export default ThreeScene;
2. 修改 App.jsx

ThreeScene 组件引入应用中。

import React from 'react';
import ThreeScene from './components/ThreeScene';function App() {return (<div><h1 style={{ textAlign: 'center' }}>React + Three.js 示例</h1><ThreeScene /></div>);
}export default App;

运行项目

运行以下命令启动开发服务器:

npm run dev

打开浏览器访问 http://localhost:5173,你将看到一个旋转的绿色立方体。

在这里插入图片描述

在本文中,我们将以一个简单的示例为基础,详细讲解如何在 React 项目中集成 Three.js,并创建一个动态的 3D 场景。无论你是刚接触 3D 开发,还是已有一定经验,相信都能从中有所收获。

http://www.lryc.cn/news/509657.html

相关文章:

  • 服务器压力测试怎么做
  • TCN-Transformer+LSTM多变量回归预测(Matlab)添加气泡图、散点密度图
  • Mac 查询IP配置,网络代理
  • Vue2五、商品分类:My-Tag表头组件,My-Table整个组件
  • 梯度下降法求六轴机械臂逆向解
  • 【生成模型之九】Paint by Example: Exemplar-based Image Editing with Diffusion Models
  • 集成RabbitMQ+MQ常用操作
  • PVE虚拟化平台之开启虚拟机IP显示方法
  • 子Shell及Shell嵌套模式
  • Onedrive精神分裂怎么办(有变更却不同步)
  • 【gym】给定的强化学习环境简介(二)
  • ctfhub disable_functions关卡
  • SpringAI人工智能开发框架006---SpringAI多模态接口_编程测试springai多模态接口支持
  • 2025年我国网络安全发展形势展望
  • 【漏洞复现】BIG-IP Next Central Manager OData 注入漏洞(CVE-2024-21793)
  • GitLab部署到阿里云服务器上
  • VTK知识学习(27)- 图像基本操作(二)
  • MyBatis如何处理延迟加载?
  • 前端网络之【浏览器跨域问题分析与解决方案】
  • LeetCode:3218. 切蛋糕的最小总开销 I(贪心 Java)
  • 前端下载后端文件流,文件可以下载,但是打不开,显示“文件已损坏”的问题分析与解决方案
  • PageRank Web页面分级算法 HNUST【数据分析技术】(2025)
  • 数字IC前端学习笔记:脉动阵列的设计方法学(四)
  • 对话 Project Astra 研究主管:打造通用 AI 助理,主动视频交互和全双工对话是未来重点
  • NetApp 存储设备巡检作业指导书
  • adb无法连接到安卓设备【解决方案】报错:adb server version (40) doesn‘t match this client (41);
  • 每天五分钟机器学习:核函数
  • Word窗体联动Excel实现级联组合框
  • RAG实战:构建基于本地大模型的智能问答系统
  • Docker 部署 plumelog 最新版本 实现日志采集