๐๋ฏธ์น ๋กค๋ฌ์ฝ์คํฐ ๋น๋ ๋ง๋ค๊ธฐ (๐ขRollerCoaster.js + React Three Fiber + AI)
Source: Dev.to
์๊ฐ ๐
์ง๋ ๋ฒ์ ๋๋ ๋์ด ์๋ ์ฌ๋ฏธ์๋ ๋กค๋ฌ์ฝ์คํฐ๋ฅผ ๋ง๋ค๊ณ DEV Community์ ๊ธ์ ์ฌ๋ ธ์ต๋๋ค.
๋์ด ์๋ ์ฌ๋ฏธ ๋ง๋ค๊ธฐ (๐ข RollerCoaster.js + React Three Fiber + AI)
- ์์ฒญ๋ ๊ฐํ๋ฅธ ์์น๊ณผ ํ๊ฐ์ ์ ๋ฒฝ์ฒ๋ผ ๋ง๋ค ์ ์์ต๋๋ค. ๐
- ํ์ค์ ์ธ ๋กค๋ฌ์ฝ์คํฐ๊ฐ ์ถฉ๋ํ๊ฑฐ๋ ํธ๋์ ๋ฒ์ด๋์ง ์๊ณ ๋ ํ์ ํ ์ ์๋ ๋ฏธ์น๋ฏ์ด ๋ ์นด๋ก์ด ์ปค๋ธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๐
- ๋ด๋ ค๊ฐ ๋ ๋ ์์ผ๋ก ํ๊ณ ๋ค์ด ์งํ์์ ํ๋ ์ฆ๊ฑฐ์์ ๊ฒฝํํ ์ ์์ต๋๋ค. ๐
- ๋ฌผ๋ฆฌ ๋ฒ์น์ ๋ฌด์ํ๊ณ ์ํ๋ ๋งํผ ๋ฏธ์น ๋ฃจํ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๐
ํธ๋ ๋น๋์ ์
๋ ฅ๊ฐ์ ์ ํ์ ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ทน๋จ์ ์ธ ๊ฐ๋ ์
๋ ฅํ ์ ์์ต๋๋ค. ๐
ํ๋ฉด ์ผ์ชฝ์ ์๋ UI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ์น ๋กค๋ฌ์ฝ์คํฐ๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์.
How I Created the CRAZY Roller Coaster Builder ๐ ๏ธ
์ง๋๋ฒ์๋ ์ ๋ช ํ 3D ๋ผ์ด๋ธ๋ฌ๋ฆฌ Three.js์ RollerCoaster.js์ AI์ ๋์์ ๋ฐ์ ๋กค๋ฌ์ฝ์คํฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. React Three Fiber(Three.js์ฉ React ๋ํผ)๋ฅผ ์ฌ์ฉํ๊ณ , ์ด๋ณด์๋ ์ดํดํ๊ธฐ ์ฌ์ด ์ฃผ์์ ๋ฌ์ CodePen ์ํ์ ์ฌ๋ ธ์ต๋๋ค.
์ด๋ฒ ๋ฒ์ ์์๋:
- ์ด์ CodePen ํ๋ก์ ํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ์ต๋๋ค.
- ํธ๋โ๋น๋ ํจ์์ UI๋ฅผ ์ถ๊ฐํด ๋ฏธ์น ํธ๋์ ๋ง๋ค ์ ์๊ฒ ํ์ต๋๋ค.
- ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ์ต๋๋ค: ๊ณตํต ์์์ ์ปดํฌ๋ํธ๋ฅผ ๋ง๋ค๊ณ , ์ค๋ณต์ ์ค์ด๋ฉฐ, ๋ชจ๋ ๊ฒ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ํ์ต๋๋ค.
- ReactโThreeโDrei์ Sky์ Cloud๋ฅผ ํ์ฉํด ํ์ค๊ฐ ์๋ ํ๋๊ณผ ๊ตฌ๋ฆ์ ๊ตฌํํ์ต๋๋ค.
- Tailwind CSS๋ฅผ ์ฌ์ฉํด ์คํ์ผ๋ง์ ๊ฐ์ํํ์ต๋๋ค.
Known Issues
| # | Issue | What I Tried | Current Workโaround |
|---|---|---|---|
| 1๏ธโฃ | ๊ณก์ ํธ๋์ ์ถ๊ฐํ์ง ์์ ์ํ์์ ์์น/ํ๊ฐ ํธ๋์ ๋ฃ์ผ๋ฉด ํธ๋์ด ๋นํ๋ฆฝ๋๋ค. | ๊ธฐ๋ณธ ๊ณก์ ๊ฐ์ ์ ๋ฌํ์ง๋ง ์๋ํ์ง ์์. | RollerCoaster.js์์ RollerCoasterGeometry๋ฅผ ๋ณต์ฌํ๊ณ ๋นํ๋ฆผ์ ์ ๊ฑฐํ์ต๋๋ค. |
| 2๏ธโฃ | ๋ฃจํ๊ฐ ์์์ ๊ณผ ๋์ ์ด ๋์ผํด ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. | ๋ฃจํ์ ์์ ๋นํ๋ฆผ์ ์ถ๊ฐํด ํ์ ๋ง๋ค์์ต๋๋ค. | ๋ฐ๋ชจ๋ฅผ ๊ฐ๋จํ ์ ์งํ๊ณ ๋ฃจํ ๋นํ๋ฆผ์ ์์ด์ต๋๋ค. |
๋ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ ์ฐพ์ผ๋ฉด ์ฝ๋๋ฅผ ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค.
New Versions
- Underwater version โ ์์ค ๋๋์ CSS ๊ทธ๋ผ๋์ธํธ ๋ฐฐ๊ฒฝ๊ณผ ์์นํ๋ ๊ฑฐํ์ ์ถ๊ฐํ์ต๋๋ค.
- Underwater versionโฏ2 โ ๊ฑฐํ์ ๋ํญ ๊ฐ์ ํ์ต๋๋ค:
- ํ๋ฉด ๊ฑฐํ์ 3D ๊ฑฐํ ๐ซง ์ผ๋ก ๊ต์ฒด
- ์ข์ฐ ํ๋ค๋ฆผ์ ์ถ๊ฐํด ํ์ค๊ฐ ์๋ ์ ๋๋ฉ์ด์ ๊ตฌํ ๐ซง
- ๊ฑฐํ ํฌ๊ธฐ ์กฐ์ (์๋๋ ์๊ฒ, ์๋ ํฌ๊ฒ) ๐ซง
- ๋ธ๋ฌ ํจ๊ณผ๋ฅผ ์ ์ฉํด ๊น์ ์์ค ๋๋ ์ฐ์ถ (์ ๊ฒฝ ๊ฑฐํ์ ์ ๋ช ํ๊ฒ, ๋ฐฐ๊ฒฝ ๊ฑฐํ์ ์ด๋์์ง) ๐ซง
์ด๋ค ์์ค ๋ฒ์ ์ด ๋ ๋ง์์ ๋์๋์?
ํฅํ ์ ๋ฐ์ดํธ ์์ด๋์ด ๐ก
- ๋ฐฐ๊ฒฝ ํจํด์ ๋ ์ถ๊ฐํฉ๋๋ค.
- ๋ฐฐ๊ฒฝ์ ๋ ๋ง์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ์ฌ์ฉ์ ์ ์ ๊ฐ๋ฅํ ์นด๋ฉ๋ผ ์ ์ด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ์๋ ์ ์ด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
- ๋กค๋ฌ์ฝ์คํฐ, ํธ๋ ๋น๋, ๋ค์ํ ๋ฐฐ๊ฒฝ ๋ฐ ๊ทธ ์ ๋๋ฉ์ด์ ์ ํ๋์ ํ๋ก์ ํธ๋ก ํตํฉํฉ๋๋ค.
- RollerCoaster.js๋ฅผ ์ฌ์ฉํ ์ฑ์ ์ถ์ํฉ๋๋ค.
ํ๋ก์ ํธ์ ๋ง์ ๊ด์ฌ์ด ๋ชจ์ด๋ฉด ์ ์ฒด ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ฑ์ผ๋ก ์ ํํ ์ ์์ต๋๋ค. ์ ๋ ์ด์ ์ Microsoft Store์ ๋ ํ๋ จ ์ฑ๊ณผ Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ถ์ํ ๊ฒฝํ์ด ์์ด ๋ค์ ํ ์ ์๋ค๊ณ ์์ ํฉ๋๋ค.
๋ฌด๋ฃ Chrome ํ์ฅ ํ๋ก๊ทธ๋จ์ผ๋ก ์ ๊ณต
Microsoft Store์์ ์ ๊ณต (๋ฌด๋ฃ)
Framework Experiments
Vue.js Version
I built a Vue.js version using TresJS (a Three.js wrapper for Vue). I find Vue.js more intuitive than React; React Hooks feel โcrazy difficultโ for me. I wanted a CodePen demo to compare Vue and React, but TresJS isnโt supported there, so I tried StackBlitz, where it works (though startup is a bit slow).
Angular Version
I also tried an Angular version with AngularโThree (a Three.js wrapper for Angular). Like Vue, I wanted a CodePen demo, but neither AngularโThree nor CodePen support it, so I used StackBlitz again.
React vs Vue vs Svelte vs Angular โ Comparison Table
| Framework | ๋์ด๋ | ํ๋ก์ ํธ ๊ท๋ชจ | ์ปค๋ฎค๋ํฐ ๊ท๋ชจ | 3D ๋ผ์ด๋ธ๋ฌ๋ฆฌ |
|---|---|---|---|---|
| Svelte | ์ฌ์ | ์๊ท๋ชจ | ์๊ท๋ชจ | Threlte |
| Vue | ๋ณดํต | ์๊ท๋ชจโ์ค๊ฐ | ๋๊ท๋ชจ | TresJS |
| React | ์ด๋ ค์ | ์ค๊ฐโ๋๊ท๋ชจ | ๊ฐ์ฅ ํผ | React Three Fiber |
| Angular | ๊ฐ์ฅ ์ด๋ ค์ | ๋๊ท๋ชจ | ์ค๊ฐ | Angular Three |
๋ค ํ๋ ์์ํฌ ๋ชจ๋ ๋ชจ๋ ๊ท๋ชจ์ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค ์ ์์ง๋ง, ํ์๋ ๊ท๋ชจ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
Related Posts
- Learn with ๐ผ๏ธ Meme Images: ๐ง AI๋ฅผ ์ฌ์ฉํ์ฌ ๐จ 3D ์ ๋๋ฉ์ด์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ (React Three Fiber vs Three.js vs AโFrame + GSAP)
- GSAP Animation: ์ ์ ๋ฐ๋ผ๋ณผ ์ ์๋ ์น์ฌ์ดํธ ์ ๋๋ฉ์ด์ ์ ๋ง๋ค์์ต๋๋ค (GSAP) ๐จ
AIโRelated Posts
- ๐ง Codex๊ฐ ์๋ Claude Code์ฒ๋ผ ๊ธฐ๋ถ์ ๋์ด์ฌ๋ฆฌ๊ฒ ํ๋ ๋ฐฉ๋ฒ (โ๋น์ ์ด ์์ ํ ๋ง์์!โ ๋ผ๋ ๋ฐ์์ ์ป๊ธฐ) ๐ค
- ๐ค๐ค AI๋ฅผ ์ฝ๊ฒ ๊ทธ๋ฆฌ๊ณ ๋ฌด๋ฃ๋ก ๋ณ๋ ฌ ์คํํ๋ ๋ฐฉ๋ฒ (Git Worktree Runner) ๐ง ๐ง
- ๐ค AI๊ฐ ์ง์๋ฅผ ๋ ์ ๋ฐ๋ฅด๊ฒ ํ๋ ๋ฌด๋ฃ ๋ฐฉ๋ฒ (OpenSpec) ๐
- ๐ง AI๋ฅผ ๋ณด๋ค ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ โฆ (๊ฒ์๋ฌผ ๊ณ์)
Conclusion
CRAZY Roller Coaster๋ ์ฌ๋ฌ๋ถ์๊ฒ ๋ฏธ์น ๋ฏ์ด ์ง๋ฆฟํ ๊ฒฝํ์ ์ ์ฌํฉ๋๋ค. ํ๋ฉด ์์์๋ง ๋๋ ์ ์๋ ๊ด๊ธฐ์ ๋ฏธ์น ๋ฏํ ์ฌ๋ฏธ๋ฅผ ์ฆ๊ธฐ๊ณ , ํ์ค์์๋ ๋ฏธ์น๊ฑฐ๋ ํ๋ด์ง ๋ง์๋ค. ๐
์ด ๊ธ์ ํตํด ๋ฌด์ธ๊ฐ๋ฅผ ๋ฐฐ์ ๊ธธ ๋ฐ๋๋๋ค. ์ฝ์ด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
Questions & Ideas
- CRAZY Roller Coaster๋ฅผ ๋ ์ข๊ฒ ๋ง๋ค ์ ์๋ ์ข์ ์์ด๋์ด๊ฐ ์๋์?
- 2D/3D ์ ๋๋ฉ์ด์ ์ ๋ํ ์ข์ ์์ด๋์ด๊ฐ ์๋์?
- 2D/3D ์ ๋๋ฉ์ด์ ์ ๋ํด ์๊ณ ๊ณ์ ๊ฐ์?
์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ฃ๊ณ ์ถ์ต๋๋ค! โฌ๏ธโฌ๏ธ