๐ ๋๋์ด ์ถ์! Cardboard.js๊ฐ Product Hunt์ ์ฌ๋ผ๊ฐ์ด์ โ ์ด๋ณด์๋ ์ฝ๊ฒ ์ดํดํ๋ ์๊ฐ์ ํ์ฉ๋ฒ
# ๐ ์๋ก โ โ๋ด๊ฐ ๋ง๋ ์ ํ, ์ด์ ์ธ์์ ์๋ฆด ๋๊ฐ ์์ด์โ
๋ช ๋ ๊ฐ ๋ฐค๋ฎ ์์ด ๊ฐ๋ฐํ๊ณ ํ ์คํธํด ์จ Cardboard.js๊ฐ ๋ง์นจ๋ด Product Hunt์ ๊ณต๊ฐ๋์์ต๋๋ค.
์ฒ์ ์ฝ๋๋ฅผ ์ง๊ธฐ ์์ํ ์ด๋ณด ๊ฐ๋ฐ์๋ โ์ด๊ฒ ๋ญ๊น?โ ํ๊ณ ๊ถ๊ธํดํ ๋งํผ ์ง๊ด์ ์ธ 3D ๋ ๋๋ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ๋ฐ์, ์ด๋ฒ ํฌ์คํธ์์๋
Cardboard.js๊ฐ ๋ฌด์์ธ์ง
Product Hunt์ ์ถ์ํ๊ฒ ๋ ๊ณผ์
์ค์ ํ๋ก์ ํธ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ
์ ์ฐจ๊ทผ์ฐจ๊ทผ ํ์ด๋ณด๊ฒ ์ต๋๋ค. ์์ง ์น ๊ฐ๋ฐ์ ๋ง ์์ํ๊ฑฐ๋, 3D ๊ทธ๋ํฝ์ ๊ด์ฌ ์๋ ๋ถ์ด๋ผ๋ฉด ๋ถ๋ด ์์ด ์ฝ์ด๋ณด์ธ์!
# ๐ ๋ณธ๋ก
# 1๏ธโฃ Cardboard.js๋? โ โ๊ฐ๋จํ ๋งํด 3D ์บ๋ฒ์คโ
ํต์ฌ ๊ธฐ๋ฅ: HTML5
<canvas>์ WebGL์ ํ์ฉํด ๋ณต์กํ ์ค์ ์์ด๋ 3D ๋ชจ๋ธ์ ํ๋ฉด์ ๋์ธ ์ ์์ต๋๋ค.ํน์ง
๊ฒฝ๋(โ 20KB)์ด๋ผ ํ์ด์ง ๋ก๋ ์๋์ ๋ถ๋ด์ด ์ ์ด์.
์ง๊ด์ ์ธ API:
createBox(),rotate()๊ฐ์ ๋ฉ์๋๋ง ๊ธฐ์ตํ๋ฉด ๊ธฐ๋ณธ์ ์ธ 3D ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.๋ฐ์ํ: ํ๋ฉด ํฌ๊ธฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ๋น์จ์ ๋ง์ถฐ์ฃผ์ด ๋ชจ๋ฐ์ผ์์๋ ๋ฌธ์ ์์ด ๋์ํฉ๋๋ค.
SEO ํค์๋:
Cardboard.js,์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ,3D ๋ ๋๋ง
# 2๏ธโฃ Product Hunt์ ์ถ์ํ๊ธฐ๊น์ง โ โ์์ ์์ด๋์ด๊ฐ ํฐ ๋ฌด๋๋กโ
| ๋จ๊ณ | ๋ด์ฉ | ๋ฐฐ์ด ์ |
|------|------|--------|
| ์์ด๋์ด ๊ตฌ์ | โ์น ํ์ด์ง์ 3D๋ฅผ ๋ฃ๊ณ ์ถ๋คโ๋ ๋จ์ํ ์๊ตฌ์์ ์์ | ์ฌ์ฉ์ ์ ์ฅ์์ ๋ฌธ์ ์ ์ํ๊ธฐ |
| ํ๋กํ ํ์ ๊ฐ๋ฐ | ์ต์ ๊ธฐ๋ฅ(MVP) ๊ตฌํ โ ๋ฐ์ค์ ๊ตฌ์ฒด๋ง ๋ ๋๋ง | ํต์ฌ ๊ธฐ๋ฅ์ ์ง์คํ๋ฉด ๊ฐ๋ฐ ์๋๊ฐ ๋นจ๋ผ์ง๋ค |
| ์คํ์์ค ๊ณต๊ฐ | GitHub์ ์ฝ๋ ๊ณต๊ฐ, ๋ฌธ์ํ ์งํ | ์คํ์์ค ์ปค๋ฎค๋ํฐ์ ํผ๋๋ฐฑ์ด ํ์ง ํฅ์์ ํฐ ๋์ |
| Product Hunt ์ ์ฒญ | ์ ํ ์ค๋ช , ์คํฌ๋ฆฐ์ท, ๋ฐ๋ชจ ์์ ์ค๋น | ์๊ฐ์ ์์๊ฐ ํด๋ฆญ์ ์ ๋ํ๋ค |
| ๋ฐ์นญ ๋น์ผ | 12์ ์ ๊ฐ์ ํฌ์คํธ, SNS ๊ณต์ , ๋๊ธ ๊ด๋ฆฌ | ์ปค๋ฎค๋ํฐ์ ์ค์๊ฐ ์ํต์ด ์ค์ |
ํต์ฌ ํฌ์ธํธ: ์ถ์ ์ โ๋ฐ๋ชจ ํ์ด์งโ๋ฅผ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋๋ฉด ๋ฐฉ๋ฌธ์๊ฐ ๋ฐ๋ก ์ฒดํํ ์ ์์ด ํธ์๋๊ฐ ๋์์ง๋๋ค.
# 3๏ธโฃ Cardboard.js ์์ํ๊ธฐ โ โ์ฝ๋ ํ ์ค๋ก 3D ์ธ๊ณ ์ด๊ธฐโ
# 3โ1. ์ค์น ๋ฐฉ๋ฒ
bash
# npm ์ฌ์ฉ
npm install cardboard.js
# CDN ์ง์ ์ฝ์
(HTML ํ์ผ์ ๋ฐ๋ก ๋ฃ๊ธฐ)
<script src='https://unpkg.com/cardboard.js/dist/cardboard.min.js'></script>
# 3โ2. ๊ธฐ๋ณธ ์์ ์ฝ๋
html
<!DOCTYPE html>
<html lang='ko'>
<head>
<meta charset='UTF-8'>
<title>Cardboard.js ๊ธฐ๋ณธ ์์ </title>
<style>canvas { width: 100%; height: 100vh; }</style>
</head>
<body>
<script src='https://unpkg.com/cardboard.js/dist/cardboard.min.js'></script>
<script>
const scene = new Cardboard.Scene('#canvas'); // ์บ๋ฒ์ค ์๋ ์์ฑ
const box = scene.createBox({size: 2, color: '#4CAF50'});
scene.camera.position.set(0, 0, 5); // ์นด๋ฉ๋ผ ์์น ์กฐ์
// ์ ๋๋ฉ์ด์
๋ฃจํ
function animate() {
box.rotation.y += 0.01;
scene.render();
requestAnimationFrame(animate);
}
animate();
</script>
</body>
</html>
Tip:
scene.render()๋ฅผrequestAnimationFrame์์ ๋ฃ์ด์ผ ๋ถ๋๋ฌ์ด ํ์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
# 3โ3. ์ค์ ํ์ฉ ์์ด๋์ด
| ํ์ฉ ๋ถ์ผ | ์์ |
|----------|------|
| ํฌํธํด๋ฆฌ์ค ์น | ์ํ์ 3D ํ์ ๋ชจ๋ธ๋ก ๋ณด์ฌ์ค ์๊ฐ์ ์ํฉํธ ๊ฐํ |
| ๊ต์ก์ฉ ํด | ๋ฌผ๋ฆฌ ์คํ(์ค๋ ฅ, ์ถฉ๋) ์๋ฎฌ๋ ์ด์ ์ ์ ์ฉ |
| ๋ฐ์ดํฐ ์๊ฐํ | 3D ๋ฐ ์ฐจํธยทํ์ด ์ฐจํธ๋ก ๋ณต์กํ ํต๊ณ ํํ |
| ๊ฒ์ ํ๋กํ ํ์ | ๊ฐ๋จํ ํผ์ฆยทํ๋ซํฌ๋จธ ๊ฒ์ ์์ง ๋์ฒด |
# 4๏ธโฃ ์ปค๋ฎค๋ํฐ์ ํผ๋๋ฐฑ ๊ด๋ฆฌ โ โํจ๊ป ์ฑ์ฅํ๋ ์คํ์์คโ
GitHub Issues: ๋ฒ๊ทธ๋ ๊ฐ์ ์์ฒญ์ ์ง์ ํ์ธํ๊ณ ๋ต๋ณํ๋ฉด ์ ๋ขฐ๋๊ฐ ์์นํฉ๋๋ค.
Discord/Slack: ์ค์๊ฐ ์ฑํ ์ฑ๋์ ์ด์ํด ์ฌ์ฉ์์ ์ง์ ์ํตํ๋ฉด ์์ด๋์ด๋ฅผ ๋น ๋ฅด๊ฒ ์ป์ ์ ์์ด์.
๋ธ๋ก๊ทธ ํฌ์คํ : ์ฌ์ฉ๋ฒ์ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ ๊ธ์ ๊พธ์คํ ์ฌ๋ฆฌ๋ฉด SEO ํจ๊ณผ๋ ์ปค์ง๋๋ค.
# ๐ ๊ฒฐ๋ก โ โ๋น์ ๋ ์ค๋ ๋ฐ๋ก ์์ํด ๋ณด์ธ์!โ
Cardboard.js๋ ์ฝ๊ฒ ์ ๊ทผํ ์ ์๋ 3D ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ ์ ์์, ์น ๊ฐ๋ฐ ์ ๋ฌธ์๋ถํฐ ์๋ จ๋ ํ๋ก ํธ์๋ ์์ง๋์ด๊น์ง ๋ชจ๋์๊ฒ ์ ์ฉํฉ๋๋ค.
Product Hunt์์ ์ข์ ๋ฐ์์ ์ป์ ๋งํผ, ์ฌ๋ฌ๋ถ๋ ์๋ ๋จ๊ณ๋ง ๋ฐ๋ผ ํ๋ฉด ๋ฐ๋ก ํ๋ก์ ํธ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์ค์น โ
npm install cardboard.jsํน์ CDN ์ฝ์๊ฐ๋จํ ์์ ๋ฅผ ์คํํด ๋ณด๊ณ , ์ฝ๋ ์ดํดํ๊ธฐ
์์ ๋ง์ ์์ด๋์ด์ ๋ง๊ฒ ์ปค์คํฐ๋ง์ด์ง
์ปค๋ฎค๋ํฐ์ ๊ณต์ ํ๊ณ ํผ๋๋ฐฑ ๋ฐ๊ธฐ
์ง๊ธ ๋ฐ๋ก Cardboard.js๋ฅผ ์ฒดํํ๊ณ , ๋๋ง์ 3D ์น ํ์ด์ง๋ฅผ ๋ง๋ค์ด ๋ณด์ธ์!
์ฌ๋ฌ๋ถ์ ์ฒซ 3D ํ๋ก์ ํธ๊ฐ ๊ธฐ๋๋ฉ๋๋ค. ๊ถ๊ธํ ์ ์ด๋ ๊ฐ์ ์์ด๋์ด๊ฐ ์๋ค๋ฉด ๋๊ธ์ด๋ ์ด์๋ก ์๋ ค ์ฃผ์ธ์. ํจ๊ป ์ฑ์ฅํ๋ ๊ฐ๋ฐ์๊ฐ ๋ฉ์๋ค! ๐
Comments
Join the discussionNo comments yet. Be the first to comment.