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

在 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.kler.cn/a/452325.html

相关文章:

  • 前端Python应用指南(三)Django vs Flask:哪种框架适合构建你的下一个Web应用?
  • 美国辅料查询之FDA批准药用辅料数据库(IID数据库)
  • 【学习总结|DAY023】Java高级技术
  • 【设备 磁盘】重要备份存放U盘的风险 + winhex 磁盘清零(清理windows无法格式化的磁盘)
  • “高精度算法”思想 → 大数阶乘
  • 基于推理的目标检测 DetGPT
  • 后端接口设计
  • 基于AT89C52单片机的6位电子密码锁设计
  • CPU性能优化--前端优化
  • 使用腾讯云CVM搭建 K8s + Docker + Harbor :部署SpringBoot应用与配置指南
  • 如何修改pip全局缓存位置和全局安装包存放路径
  • 使用Tauri + Leptos开发带系统托盘桌面应用
  • Spring Boot 整合 RabbitMQ:从入门到实践
  • Pytorch | 利用AI-FGTM针对CIFAR10上的ResNet分类器进行对抗攻击
  • 准备考试:解决大学入学考试问题
  • springMVC-请求响应
  • 【数学建模】利用Matlab绘图(2)
  • linux 常用 Linux 命令指南
  • Linux大数据方向shell
  • 借助Aspose.html控件, 使用 Java 编程将 HTML 转换为 BMP
  • 基于java出租车计价器设计与实现【源码+文档+部署讲解】
  • ffmpeg之播放一个yuv视频
  • 常见问题解决方案:Keen CommonWeb 开源项目
  • CVPR-2024 | 具身导航模型大一统!NaviLLM:学习迈向具身导航的通用模型
  • Unity中如何修改Sprite的渲染网格
  • NFC 碰一碰发视频源码搭建技术详解,支持OEM