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

外国设计网站职业教育网站平台建设

外国设计网站,职业教育网站平台建设,义乌网图科技有限公司电话,房产信息网海南不明白的知识先放在一边,激发兴趣是第一步,所以不必纠结代码的细节,相信我你很快就会爱上这种感觉!!! 今天,我们将更进一步,将上一篇中vite npm传统 Three.js 原生代码完整 重构为 …

不明白的知识先放在一边,激发兴趣是第一步,所以不必纠结代码的细节,相信我你很快就会爱上这种感觉!!!

今天,我们将更进一步,将上一篇中vite + npm传统 Three.js 原生代码完整 重构为 react-three-fiber 风格

本文将带你完成以下目标:

  • ✅ 使用 React 重构原生 Three.js 场景
  • ✅ 拆分组件化结构,实现同样效果
  • ✅ 保留交互、动画、响应式特性

推荐网站地址
官方文档https://r3f.docs.pmnd.rs/getting-started
优秀中文文档https://fiber.framer.wiki/Introduction

🌟 为什么选择 react-three-fiber?

react-three-fiber 是一个将 Three.js 映射为 React 声明式组件的库,优点包括:

  • ✅ 完全响应式、组合式
  • ✅ 更容易重用组件
  • ✅ 支持 Suspense、hooks、reactivity 等 React 特性
  • ✅ 社区活跃,生态丰富(如 drei、leva、postprocessing 等)

📦 创建项目 & 安装依赖

npm create vite@latest r3f-demo --template reactcd r3f-demonpm installnpm install three @react-three/fiber @react-three/drei

📁 项目结构推荐

src/
├── App.jsx
├── components/
│   ├── Dodecahedron.jsx
│   ├── BaseBox.jsx
│   └── Lights.jsx
└── main.jsx

🎮 主组件 App.jsx

import { Canvas } from '@react-three/fiber';
import { OrbitControls } from '@react-three/drei';
import Dodecahedron from './components/Dodecahedron';
import BaseBox from './components/BaseBox';
import Lights from './components/Lights';export default function App() {return (<Canvascamera={{ position: [0, 0, 5], fov: 75 }}style={{ width: '100vw', height: '100vh' }}><color attach="background" args={['#f0f0f0']} /><Lights /><Dodecahedron /><BaseBox /><OrbitControls enableDamping dampingFactor={0.05} /></Canvas>);
}

🎲 十二面体组件 Dodecahedron.jsx

import { useRef } from 'react';
import { useFrame } from '@react-three/fiber';export default function Dodecahedron() {const ref = useRef();useFrame(() => {ref.current.rotation.x += 0.01;ref.current.rotation.y += 0.01;});return (<mesh ref={ref}><dodecahedronGeometry /><meshLambertMaterialcolor="#468585"emissive="#468585"/></mesh>);
}

🟫 底座方块组件 BaseBox.jsx

import { useRef } from 'react';
import { useFrame } from '@react-three/fiber';export default function BaseBox() {const ref = useRef();useFrame(() => {ref.current.rotation.y += 0.01;});return (<mesh ref={ref} position={[0, -1.5, 0]}><boxGeometry args={[2, 0.1, 2]} /><meshLambertMaterialcolor="#b4b4b3"emissive="#b4b4b3"/></mesh>);
}

💡 灯光组件 Lights.jsx

export default function Lights() {return (<><ambientLight intensity={0.3} /><spotLightcolor="#006769"intensity={100}position={[1, 1, 1]}castShadow/></>);
}

🎉 完整效果

你现在应该能看到:

  • 一个旋转的 十二面体

  • 一个缓慢转动的 底座

  • 柔和背景光与 聚光灯打亮对象

  • OrbitControls 支持拖拽、缩放、平移

  • 窗口缩放自动适配 ✅

效果与原生写法完全一致,但代码组织更清晰,扩展性更强 🧩

当然你可以直接在我分享的stackblitz中直接尝试更改一些代码,以获得不同的效果。

演示地址:https://stackblitz.com/edit/vitejs-vite-awnvthyl?file=src%2Fcomponents%2FBaseBox.jsx 💻

react-r3f

📌 小结

今天我们在保留原始功能和视觉效果的前提下,体验如何在 React 世界中优雅重建:

  • 🎲 使用十二面体(DodecahedronGeometry
  • 🎁 加一个带有旋转的方形底座
  • 💡 添加聚光灯
  • 🖱️ 支持轨道控制器(OrbitControls)
  • 🎥 响应式相机 + 窗口缩放适配
  • ✨ 使用现代组件拆分方式组织项目结构

🔮 下一篇预告:3D 个人主页实战 · 第一部分


在接下来的系列中,我们将打造一个 交互式的 3D 个人主页,内容包括:
  • 📦 准备 3D 模型资源

  • 🏗️ 搭建场景结构骨架

  • 🚪各种准备工作

敬请期待 👀

个人主页

http://www.dtcms.com/a/498009.html

相关文章:

  • 网站开发项目介绍ppt如何做网站可以吗
  • 做网站费用分摊入什么科目wordpress 代码调用
  • seo网站优化快速排名软件河南宏业建设管理有限公司网站
  • 邯郸做网站推广的公司网站在浏览器的图标怎么做
  • 做网站搭建的公司中国建筑设计研究院
  • 个人信息网站建设的心得体会网络架构设计方案
  • 做五金上哪个网站推广wordpress如何添加商桥
  • 淄博网站设计公司wordpress做定制T恤的网站
  • 网站商城模板网站建设费计入管理费用
  • 如何运用网站做推广国家企业信用信息查询公示系统广东
  • 做语文课文网站的好处苏州网站建设点一点
  • 佳木斯做网站番禺网站建设优化
  • 有域名和虚拟服务器后怎么做网站湛江论坛网
  • 营销型电子商务网站特点共享ip网站 排名影响
  • 海淀教育人才网站wordpress邮件客户端
  • 地产公司做网站维护写代码么网站运营小结
  • 一元夺宝网站建设2017武安城乡建设网站
  • 找做网站个人中国东盟建设集团有限公司网站
  • 甘肃省建设稽查执法局网站郑州网站开发建设
  • 建网站需要买服务器吗网站建设高端公司
  • 临沂网络网站建设网站开发的课程设置
  • 直播类网站怎么做cms客户管理系统
  • html网站搭建网站视频主持人怎么做
  • 做网站的IDE江门免费建站公司
  • 郑州站软件开发要学什么
  • 南昌网站建设公司有哪些百度给做网站收费多少
  • 卢镇seo网站优化排名产品包装设计公司网站
  • wordpress 自动上传插件seo文章范文
  • 做网站用什么简单网站设计价格
  • 公司设计品牌公司网站域名优化