[React / Typescript / Three.js] 움직이는 기본 상자 만들기
2022. 8. 24. 17:04
반응형
리액트 + 타입스크립트 환경에서 three.js를 이용하여 움직이는 육면체를 만들어보았다.
위 공식 사이트의 에디터 환경에서 간단한 마우스 클릭을 통해 오브젝트를 직접 만들어보며 구현할 수 있다.
import { Box as ChackraBox } from '@chakra-ui/react'
import { Canvas, useFrame } from '@react-three/fiber'
import { useRef } from 'react'
import { Mesh } from 'three'
const Cube = () => {
const Box = (props: JSX.IntrinsicElements['mesh']) => {
const ref = useRef<Mesh>(null!)
useFrame(() => {
ref.current.rotation.x += 0.01
})
return (
<mesh ref={ref} scale={2} {...props}>
<boxGeometry args={[1, 1, 1]} />
<meshStandardMaterial color="orange" />
</mesh>
)
}
return (
<ChackraBox bg="black">
{/* dpr은 디바이스 크기에 따라 반응형으로 보이도록 함 */}
<Canvas dpr={[1, 2]}>
{/* 빛이 없으면 아래에 박스 컬러가 그냥 검정으로 보임 */}
<ambientLight intensity={0.5} />
<spotLight position={[10, 10, 10]} angle={0.5} penumbra={1} />
<pointLight position={[-10, -10, -10]} />
<Box position={[-3.2, 0, 0]} />
<Box position={[4.2, 0, 0]} />
</Canvas>
</ChackraBox>
)
}
export default Cube
.
반응형
'한 걸음 > React & Next.js' 카테고리의 다른 글
[React + Three.js + blender] 움직이는 3D 캐릭터 웹사이트에 구현 (0) | 2022.09.13 |
---|---|
[React + Typescript] 카카오 SDK를 이용한 공유기능 구현 (0) | 2022.09.13 |
SWR mutate 사용하기 (0) | 2022.06.15 |
[VScode] React snippet(템플릿) 설정으로 반복 타이핑을 피해보자 (0) | 2022.04.18 |
스토리북(storybook) 적용하기 (0) | 2022.04.01 |