Vite 설정 - 3D web3 시리즈
3D-web3 시리즈의 첫 번째 글입니다.
웹에서 3D 공간(심리학 포함)을 만들고 web3 라이브러리를 사용하여 블록체인에 연결하는 방법을 배울 수 있는 곳입니다.
1 - Vite 구성 및 기본 three.js
2 -
삼 -
4 -
Vite는 비계 및 번들링 프로젝트를 위한 현대적이고 초고속 도구입니다. 거의 즉각적인 코드 컴파일과 빠른 핫 모듈 교체로 인해 빠르게 인기를 얻었습니다.
Vite는 번들링(구성 담당)을 위해 내부적으로 "Rollup.js"를 사용하고 사전 번들 종속성(Go로 작성됨)으로 esbuild를 사용합니다.
-- @Notice create-react-app uses "Webpack" internally for bundling --
"Vue.js"프레임워크를 만든 "Evan You"가 개발했습니다.
설정 - 프로젝트 디렉토리에서 콘솔을 열고 실행
npm create vite@latest my-three-react-web3-app --template react
// Follow consol instructions and select -> React -> React
// ("You're also able to use Vanilla, Vue, Svelte... and JS or TS")
cd my-three-react-web3-app
npm install
npm run dev
Check vite docs
npm i three
Three.js is an open source JavaScript library to create and display animated 3D computer graphics in a web browser using WebGL.
우리는 Threejs를 사용하여 일부 내장 객체를 가져올 것입니다(다음 기사에서 더 많이 사용할 것입니다).
npm i @react-three/fiber
개발 프로세스를 단순화하기 위해 @react-three/fiber과 함께 작업할 것입니다. 웹 및 react-native에서 threejs용 React 렌더러입니다.
The renderer is responsible for rendering React components to the DOM and native views. This means that we are able to create regular React components and let react-three-fiber handle converting those components into three.
"섬유를 사용하면 threejsset up to render를 피할 수 있습니다."
첫 번째 렌더링
index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
ReactDOM.createRoot(document.getElementById('root')).render(
<React.StrictMode>
<App />
</React.StrictMode>
);
App.js
import { Canvas } from '@react-three/fiber'
import Box from './components/Box'
import './App.css'
function App() {
return (
<Canvas>
<ambientLight />
<pointLight position={[10, 10, 10]} />
<Box position={[-1.2, 0, 0]} />
<Box position={[1.2, 0, 0]} />
</Canvas>
)
}
export default App
다음 Box 및 Sphere 구성 요소는 후크를 사용하여 코드 논리를 단순화합니다.
내부의 개체를 조작할 수 있도록 섬유에 의해 내장된 "DOM 요소"인 "메시"에 부착하려면 useRef를 사용하십시오.
useFrame은 효과 실행, 컨트롤 업데이트 등에 유용한 모든 프레임을 다시 호출합니다. 상태 및 클럭 델타를 수신합니다.
useState를 사용하여 개체를 클릭할 때 크기와 색상을 변경합니다.
Box.js
import React, { useRef, useState } from 'react'
import { useFrame } from '@react-three/fiber'
const Box = (props) => {
// This reference will give us direct access to the mesh
const mesh = useRef()
// Set up state for the hovered and active state
const [hovered, setHover] = useState(false)
const [active, setActive] = useState(false)
// Subscribe this component to the render-loop, rotate the mesh every frame
// Adding rotation grade per each frame
useFrame((state, delta) => {
mesh.current.rotation.x += 0.01
mesh.current.rotation.y += 0.01
})
// Return view, these are regular three.js elements expressed in JSX
return (
<mesh
{...props}
ref={mesh}
scale={active ? 1.5 : 1}
onClick={(e) => {
setActive(!active)
setHover(!hovered)
}}
>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color={hovered ? 'green' : 'blue'} />
</mesh>
)
}
export default Box;
Sphere.js
Box 구성 요소로 작동하며 고유한 차이점은 메쉬 요소 내부에 있습니다.
import React, { useRef, useState } from 'react'
import { useFrame } from '@react-three/fiber'
function Sphere(props) {
// This reference gives us direct access to the THREE.Mesh object
const ref = useRef();
// Hold state for hovered and clicked events
const [hovered, setHover] = useState(false);
const [active, setActive] = useState(false);
// Subscribe this component to the render-loop, rotate the mesh every frame
// Adding rotation grade per each frame
useFrame((state, delta) => (ref.current.rotation.y += 0.01));
// Return the view, these are regular Threejs elements expressed in JSX
return (
<mesh
{...props}
ref={ref}
scale={active ? 4 : 1}
onClick={(e) => {
setActive(!active);
setHover(!hovered);
}}
>
<sphereBufferGeometry args={[0.7, 30, 30]} attach="geometry" />
<meshBasicMaterial
wireframe
attach="material"
color={hovered ? "yellow" : "pink"}
/>
</mesh>
);
}
export default Sphere;
이 앱을 개발하는 시리즈를 만들고 있으며 곧 새 게시물이 게시될 예정입니다.
SandBox 데모 @Notice 코드는 Vite 앱에서와 같이 구성 요소로 분할되지 않습니다.
3D 개체를 클릭하십시오.
시리즈는 하단의 데모 확인에서 이어집니다!
도움이 되었기를 바랍니다.
Reference
이 문제에 관하여(Vite 설정 - 3D web3 시리즈), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/uigla/setting-up-3d-website-using-threejs-fiber-react-web3-and-vite-as-bundler-f1f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)