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

网站制作应用网站关键词有哪些

网站制作应用,网站关键词有哪些,素材网站的图可以做海报吗,书店网站建设方案文章目录 1、简介1.1 Three.js1.2 React Three Fiber 2、测试2.1 初始化环境2.2 app.js修改(显示内置立方体)2.3 app.js修改(显示内置球体)2.4 app.js修改(显示自定义立方体)2.5 app.js修改(显示…

文章目录

  • 1、简介
    • 1.1 Three.js
    • 1.2 React Three Fiber
  • 2、测试
    • 2.1 初始化环境
    • 2.2 app.js修改(显示内置立方体)
    • 2.3 app.js修改(显示内置球体)
    • 2.4 app.js修改(显示自定义立方体)
    • 2.5 app.js修改(显示多个模型)
    • 2.6 app.js修改(加载obj模型)
    • 2.7 app.js修改(物理效果)
  • 结语

1、简介

1.1 Three.js

Three.js 是一个功能强大的 3D 图形库,用于在网页上创建和显示交互式 3D 图形。它基于 WebGL,提供了简单易用的 API,帮助开发者快速构建复杂的 3D 场景。

npm install three

1.2 React Three Fiber

React Three Fiber 是一个 React 的绑定库,用于在 React 应用中创建和管理 3D 场景。它基于 Three.js,提供了声明式的 API,使 3D 开发更加直观和高效。

npm install three @react-three/fiber

2、测试

2.1 初始化环境

创建应用:

npx create-react-app@latest my-app

在这里插入图片描述
运行一下react初始环境:

cd my-app
npm start

在这里插入图片描述
在这里插入图片描述

安装依赖:

npm install three @react-three/fiber

在这里插入图片描述

npm install @react-three/drei

在这里插入图片描述
修改index.css:

body {margin: 0;font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen','Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;
}code {font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New',monospace;
}
* {box-sizing: border-box;
}html,
body,
#root {width: 100%;height: 100%;margin: 0;padding: 0;
}body {background: #f0f0f0;
}

2.2 app.js修改(显示内置立方体)

修改App.js代码:

import {useState,useRef} from "react"
import {Canvas, useFrame} from "@react-three/fiber"function App() {return (<Canvas><ambientLight intensity={0.1} /><directionalLight color="red" position={[0, 0, 3]} /><mesh><boxGeometry /><meshStandardMaterial /></mesh>
</Canvas>);
}export default App;

运行如下:
在这里插入图片描述

2.3 app.js修改(显示内置球体)

修改App.js代码:

import {useState,useRef} from "react"
import { Canvas, useFrame} from "@react-three/fiber"function App() {return (<Canvas><ambientLight intensity={0.1} /><directionalLight color="red" position={[0, 0, 5]} /><mesh visible userData={{ hello: 'world' }} position={[1, 0, 3]} rotation={[Math.PI / 2, 0, 0]}><sphereGeometry args={[1, 16, 16]} /><meshStandardMaterial color="hotpink" transparent /></mesh></Canvas>);
}export default App;

运行如下:
在这里插入图片描述

2.4 app.js修改(显示自定义立方体)

修改App.js代码:

import React, { Suspense } from 'react'
import { BoxGeometry, MeshStandardMaterial } from 'three'
import { Canvas } from '@react-three/fiber'
import { ContactShadows, OrbitControls } from '@react-three/drei'const ball = new BoxGeometry()
const mtl1 = new MeshStandardMaterial({ color: '#f00' })export default function Demo () {return (<Canvas style={{ height: 800 }} camera={{ fov: 75, near: 0.1, far: 1000, position: [2, 1, 2] }}><Suspense fallback={null}><ambientLight intensity={0.1} /><directionalLight color={'#fff'} intensity={1} position={[-3, 5, 5]} /><mesh geometry={ball} material={mtl1} /><OrbitControls makeDefault /><ContactShadows rotation-x={Math.PI / 2} position={[0, -1.4, 0]} opacity={0.75} width={10} height={10} blur={2.6} far={2} /><color attach='background' args={['#aaa']} /></Suspense></Canvas>)
}

运行如下:
在这里插入图片描述

2.5 app.js修改(显示多个模型)

修改App.js代码:

import { useRef, useState, useEffect } from 'react'
import { Canvas, useFrame } from '@react-three/fiber'
import { OrbitControls } from '@react-three/drei'function Box(props) {// This reference gives us direct access to the THREE.Mesh objectconst ref = useRef()// Hold state for hovered and clicked eventsconst [hovered, hover] = useState(false)const [clicked, click] = useState(false)// Subscribe this component to the render-loop, rotate the mesh every frameuseFrame((state, delta) => (ref.current.rotation.x += delta))// Return the view, these are regular Threejs elements expressed in JSXreturn (<mesh{...props}ref={ref}scale={clicked ? 1.5 : 1}onClick={(event) => click(!clicked)}onPointerOver={(event) => (event.stopPropagation(), hover(true))}onPointerOut={(event) => hover(false)}><boxGeometry args={[1, 1, 1]} /><meshStandardMaterial color={hovered ? 'hotpink' : 'orange'} /></mesh>)
}export default function App() {return (<Canvascamera={{ position: [0, 0, 2] }} // 初始相机位置><ambientLight intensity={Math.PI / 2} /><spotLight position={[10, 10, 10]} angle={0.15} penumbra={1} decay={0} intensity={Math.PI} /><pointLight position={[-10, -10, -10]} decay={0} intensity={Math.PI} /><Box position={[-1.2, 0, 0]} /><Box position={[1.2, 0, 0]} /><Box position={[3.2, 0, 0]} /><OrbitControls /></Canvas>)
}

在这里插入图片描述

2.6 app.js修改(加载obj模型)

修改App.js代码:

import React, { Suspense, useRef } from 'react'
import { AxesHelper } from 'three'
import { Canvas, useLoader } from '@react-three/fiber'
import { Environment, OrbitControls, Stats } from '@react-three/drei'
import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader'function MyMesh () {const src = '/obj/cow.obj'const object = useLoader(OBJLoader, src)console.log(object)return (<primitive object={object} />)
}export default function Demo () {const statRef = useRef(null)return (<div ref={statRef}><Stats showPanel={0} parent={statRef} style={{ top: 'auto', bottom: 0 }} /><Canvas style={{ height: 800 }} camera={{ fov: 75, near: 0.1, far: 1000, position: [2, 1, 2] }}><Suspense fallback={null}><directionalLight color={'#fff'} intensity={1} position={[-3, 5, 5]} /><primitive object={new AxesHelper(100)} /><MyMesh /><OrbitControls makeDefault /><color attach='background' args={['#aaa']} /><Environmentbackground={false} preset={null} scene={undefined}path={'/skybox/'}files={['px.jpg', 'nx.jpg', 'py.jpg', 'ny.jpg', 'pz.jpg', 'nz.jpg']}/></Suspense></Canvas></div>)
}

运行如下:
在这里插入图片描述

2.7 app.js修改(物理效果)

npm install @react-three/cannon

在这里插入图片描述

import { useEffect, useState } from 'react'
import { Canvas } from '@react-three/fiber'
import { Physics, usePlane, useBox } from '@react-three/cannon'function Plane(props) {const [ref] = usePlane(() => ({ rotation: [-Math.PI / 2, 0, 0], ...props }))return (<mesh receiveShadow ref={ref}><planeGeometry args={[1000, 1000]} /><meshStandardMaterial color="#f0f0f0" /></mesh>)
}function Cube(props) {const [ref] = useBox(() => ({ mass: 1, ...props }))return (<mesh castShadow ref={ref}><boxGeometry /><meshStandardMaterial color="orange" /></mesh>)
}export default function App() {const [ready, set] = useState(false)useEffect(() => {const timeout = setTimeout(() => set(true), 1000)return () => clearTimeout(timeout)}, [])return (<Canvas dpr={[1, 2]} shadows camera={{ position: [-5, 5, 5], fov: 50 }}><ambientLight intensity={Math.PI / 2} /><spotLight position={[10, 10, 10]} angle={0.15} penumbra={1} decay={0} intensity={Math.PI} /><pointLight position={[-10, -10, -10]} decay={0} intensity={Math.PI} /><spotLight angle={0.25} penumbra={0.5} position={[10, 10, 5]} castShadow /><Physics><Plane /><Cube position={[0, 5, 0]} /><Cube position={[0.45, 7, -0.25]} /><Cube position={[-0.45, 9, 0.25]} />{ready && <Cube position={[-0.45, 10, 0.25]} />}</Physics></Canvas>)
}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!

http://www.dtcms.com/wzjs/362371.html

相关文章:

  • 网站做加QQ群链接营销方式和渠道有哪些
  • 怎么做网站海报新东方烹饪学校学费价目表
  • 网站推广公司哎奶茶西安今日头条新闻
  • 石家庄百度关键词优化南宁百度seo公司
  • 网件路由器无法登录seo培训学院
  • 自己怎样做网站湖北网络营销网站
  • 动态网站开发技术有哪些黄山seo公司
  • 企业为什么做网站素材2023免费推广入口
  • 企业网站自己可以做网站建设报价明细表
  • wordpress菜单二级目录网站关键词排名优化价格
  • 做网站的p什么2003著名的网络营销案例
  • 什么样的公司开做网站快速收录域名
  • 腾博会的网站是什么黑马培训是正规学校吗
  • 女装网站欣赏无锡百度快照优化排名
  • 深圳网站开发的公司电话小红书推广平台
  • 手机怎样创建网站郑州网站建设用户
  • 自己怎么样做网站矿产网站建设价格
  • 邵阳网站建设网络营销都有哪些形式
  • 腾讯服务器做网站电商网站项目
  • 网络服务器配置与管理实训小结福建seo学校
  • 网站建设案例资料网站建设网络营销
  • 哪个网站可以做图片seo推广有哪些方式
  • 用easyui做的网站百度浏览器打开
  • wordpress进入站点百度引擎
  • 网站的购物车怎么做外贸网站平台
  • 湖北武汉最新新闻seo搜索引擎优化排名
  • 可以做打赏视频的网站今日重大军事新闻
  • 湖南门户网站设计公司广州营销型网站
  • 网站域名注册机制郑州seo技术顾问
  • 一个网站价格今日nba比赛直播