Library

์ด์ „ ๊ฒŒ์‹œ๊ธ€์—์„œ 3D ๊ณต๊ฐ„์ธ Scene์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด์ œ ํ•ด๋‹น ๊ณต๊ฐ„์— ๋ฐ•์Šค๋ฅผ ์ƒ์„ฑํ•ด๋ณด์ž. ์šฐ์„  3D ๊ฐ์ฒด์˜ ๊ตฌ์„ฑ์„ ์•Œ์•„๋ณด์ž.3D ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฃจ์–ด์ ธ์žˆ๋‹ค. ์ดํ•˜, 3D ๊ฐ์ฒด๋ฅผ ๋ชจ๋ธ๋กœ ํ‘œํ˜„ํ•˜๊ฒ ๋‹ค. ๐Ÿ• Modelโˆ™ ๐Ÿ“ฆ MeshMesh๋ž€, ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์—ฌ๋Ÿฌ ํด๋ฆฌ๊ณค(๋‹ค๊ฐํ˜•)์˜ ์ง‘ํ•ฉ์„ ์ด๋ฃจ๊ณ  ์žˆ๋‹ค.์ ๋“ค์ด ๋ฌด์ˆ˜ํžˆ ๋ชจ์—ฌ ์„ ์ด ๋˜๊ณ , ๊ทธ ์„ ์ด ๋ชจ์—ฌ ํด๋ฆฌ๊ณค์„ ์ด๋ฃจ๊ณ , ํ•ด๋‹น ํด๋ฆฌ๊ณค๋“ค์ด ๋ชจ์—ฌ Mesh๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ด๋ฃฌ๋‹ค. โˆ™ ๐ŸŒ Geometry๊ณต๊ฐ„์˜ ์†์„ฑ๊ณผ ๊ด€๋ จํ•œ ์ˆ˜ํ•™ ๊ฐ’๋“ค์ด๋‹ค. โˆ™ ๐Ÿ‘• Materialํ•ด๋‹น ๋ฌผ์งˆ์„ ์ด๋ฃจ๋Š” ์žฌ๋ฃŒ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.   ์ด ์„ธ ๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉด ๋ชจ๋ธ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.  ๊ทธ๋Ÿผ ์ด์ œ ๋ชจ๋ธ์„ ๋งŒ๋“ค์–ด๋ณด์ž. ๐Ÿ“ฆ Box๋ฐ•์Šค๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด ๐Ÿ“„ BoxLoader.tsx๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ๋‹ค. ๋‚˜๋Š”..
์ž‘์„ฑ์ž๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์จ์™€์„œ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•ด ๋ฏธ์ˆ™ํ•˜์—ฌ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์— ๋ฏธํกํ•œ ๋ถ€๋ถ„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ“„ fiber / drei๋ฆฌ์•กํŠธ์—์„œ three.js๋ฅผ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค. ์ž‘์„ฑ์ž๋Š” ์ด ๋‘๊ฐœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒŒ์‹œ๊ธ€์„ ์ž‘์„ฑํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™‚ https://docs.pmnd.rs/react-three-fiber/getting-started/introduction React Three Fiber DocumentationReact-three-fiber is a React renderer for three.jsdocs.pmnd.rs https://github.com/pmndrs/drei GitHub - pmndrs/drei: ๐Ÿฅ‰ useful helpers for reac..
์ฐธ๊ณ  ์‚ฌ์ดํŠธโˆ™ seongminn๋‹˜์˜ ๋ฒจ๋กœ๊ทธ  ํ˜„์žฌ ์ž‘์„ฑ์ž๋Š” ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜์˜ ์†”๋ฃจ์…˜ ํšŒ์‚ฌ์— ์žฌ์ง์ค‘์ž…๋‹ˆ๋‹ค.threejs์— ๋Œ€ํ•ด ๊ณต๋ถ€์ค‘์ด๋ผ ์™„๋ฒฝํ•œ ๋‚ด์šฉ์€ ์•„๋‹ˆ๊ฒŒ ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜, ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ๊ธฐ์žฌ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ ๋”ฐ๋”ํ•œ ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๊ฒธํ—ˆํžˆ ๋ฐ›์•„๋“ค์ด๊ณ  ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ“ฆ three.jsthree.js๋ž€, ์›นํŽ˜์ด์ง€์— 3D ๊ฐ์ฒด๋ฅผ ์‰ฝ๊ฒŒ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” 3D ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.WebGL ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ Œ๋”๋ง๊ณผ ์นด๋ฉ”๋ผ, ์กฐ๋ช… ๋“ฑ์˜ 3D ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. https://threejs.org/ Three.js โ€“ JavaScript 3D Library threejs.org ๐Ÿ–‹๏ธ WebGL์ธํ„ฐ๋„ท ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์—์„œ OpenGL์„ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋„์›€ ์—†์ด ๊ณต์‹์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„..
์ฐธ๊ณ ์‚ฌ์ดํŠธ โ€ข ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ - Custom Hook โš™๏ธ Custom Hook ์•ž์„œ ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค์–‘ํ•œ Hook์„ ์‚ฌ์šฉํ•ด์™”๋‹ค. React์—๋Š” useState, useContext, useEffect์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋‚ด์žฅ Hook์ด ํ•จ๊ป˜ ์ œ๊ณต๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ์˜จ๋ผ์ธ ์ƒํƒœ์ธ์ง€ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ์ฑ„ํŒ…๋ฐฉ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋“ฑ ์ข€ ๋” ๊ตฌ์ฒด์ ์ธ ๋ชฉ์ ์„ ์œ„ํ•ด Hook์ด ์žˆ์—ˆ์œผ๋ฉด ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. React์—์„œ ์ด๋Ÿฌํ•œ Hook์„ ๋ชจ๋‘ ์ง€์›ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ž˜์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ง์ ‘ ์ž์‹ ๋งŒ์˜ Hook์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๐Ÿง ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์•„ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค. ๋‚ด์žฅ Hook์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. ๐Ÿ“ก ๊ตฌ์„ฑ์š”์†Œ ๊ฐ„ ๋…ผ๋ฆฌ ๊ณต์œ  ๋„คํŠธ์›Œํฌ์— ํฌ๊ฒŒ ์˜์กดํ•˜๋Š” ์•ฑ์ด ์žˆ๋‹ค๊ณ  ์ƒ์ƒํ•ด๋ณด์ž. ..
์ฐธ๊ณ ์‚ฌ์ดํŠธ โ€ข ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ - useContext ๐ŸŒ useContext useContext๋Š” ์ปดํฌ๋„ŒํŠธ์˜ Context๋ฅผ ์ฝ๊ณ  ๊ตฌ๋…ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฆฌ์•กํŠธ Hook์ด๋‹ค. ๋ฆฌ์•กํŠธ์—์„œ ๋ฐ์ดํ„ฐ๊ฐ’์„ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์ปดํฌ๋„ŒํŠธ ํ˜ธ์ถœ ์‹œ, ๋ฐ์ดํ„ฐ prop์„ ๋‹ด๊ณ , ํ•ด๋‹น props๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. useContext๋Š” ํ•ด๋‹น ๊ณผ์ •์— ์ƒ๊ด€์—†์ด useContext๋กœ ๊ฐ์‹ผ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์˜ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ๋Š” recoil์ด ์žˆ๋‹ค. ๐Ÿ“ฆ Parameter useContext ์ปจํ…์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ๊ตฌ๋…ํ•˜๋ ค๋ฉด ์ปดํฌ๋„ŒํŠธ ์ตœ์ƒ์œ„์—์„œ ํ˜ธ์ถœํ•ด์•ผํ•œ๋‹ค. const value = useContext(SomeContext); โ€ข SomeContext: ํ•ด๋‹น ์ปจํ…์ŠคํŠธ๋Š” cr..
์ฐธ๊ณ  ์‚ฌ์ดํŠธ โ€ข ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ - useCallback โ€ข ๋ณ„์ฝ”๋”ฉ๋‹˜์˜ youtube - useCallback ๊ฐ•์˜ ๐Ÿชฃ useCallback useCallback์€ ์žฌ๋ Œ๋”๋ง ์‚ฌ์ด์— ํ•จ์ˆ˜ ์ •์˜๋ฅผ ์บ์‹œํ•  ์ˆ˜ ์žˆ๋Š” React Hook์ด๋‹ค. ๐Ÿ“ข ์ฐธ์กฐ useCallback ์žฌ๋ Œ๋”๋ง ์‚ฌ์ด์— ํ•จ์ˆ˜ ์ •์˜๋ฅผ ์บ์‹œํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ๋œ๋‹ค. const cachedFn = useCallback(fn, [dependencies]); ๐Ÿ“ฆ Parameters โ€ข fn: ์บ์‹œํ•˜๋ ค๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋ชจ๋“  ์ธ์ˆ˜๋ฅผ ์ทจํ•˜๊ณ  ๋ชจ๋“  ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค. React๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์ค‘์— ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•œ๋‹ค(ํ˜ธ์ถœX). ๋‹ค์Œ ๋ Œ๋”๋ง์—์„œ dependencies๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๋‹ค์‹œ ์ œ๊ณตํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ..
์ฐธ๊ณ  ์‚ฌ์ดํŠธ โ€ข ๋ฆฌ์•กํŠธ ๊ณต์‹ ๋ฌธ์„œ - useMemo ๐Ÿ“ useMemo useMemo๋Š” ์žฌ๋ Œ๋”๋ง ๊ฐ„ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋ฅผ *์บ์‹œ(Cache)ํ•  ์ˆ˜ ์žˆ๋Š” React Hook์ด๋‹ค. ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์žฌ๊ณ„์‚ฐ์„ ๊ฑด๋„ˆ๋›ฐ๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. *์บ์‹œ(Cache): ์ปดํ“จํ„ฐ ๊ณผํ•™์—์„œ ๋ฐ์ดํ„ฐ๋‚˜ ๊ฐ’์„ ๋ฏธ๋ฆฌ ๋ณต์‚ฌํ•ด ๋†“๋Š” ์ž„์‹œ ์žฅ์†Œ๋กœ ๋ฐ์ดํ„ฐ ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ฑฐ๋‚˜ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ ์ถœ์ฒ˜: Wikipedia ๋ฐ˜ํ™˜๊ฐ’์„ ์บ์‹ฑํ•˜๋Š” ๊ฒƒ์„ ๋ฉ”๋ชจ์ด์ œ์ด์…˜(memoization)์ด๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, ์ด๊ฒƒ์ด ์ด Hook์ด ๋ถˆ๋ฆฌ๋Š” ์ด์œ ์ด๋‹ค. ๐Ÿ“ข ์ฐธ์กฐ useMemo ์žฌ๋ Œ๋”๋ง ๊ฐ„์˜ ๊ณ„์‚ฐ์„ ์บ์‹œํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ตœ์ƒ์œ„ ์ˆ˜์ค€์—์„œ ํ˜ธ์ถœํ•œ๋‹ค. const cachedValue = useMemo(calculateValue, [depende..
์ฐธ๊ณ ์‚ฌ์ดํŠธ โ€ข React ๊ณต์‹ ๋ฌธ์„œ - useRef ๐Ÿชฃ useRef ๋ Œ๋”๋ง์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” React Hook์ด๋‹ค. useRef๋Š” .current ํ”„๋กœํผํ‹ฐ๋กœ ์ „๋‹ฌ๋œ ์ธ์ž(initialValue)๋กœ ์ดˆ๊ธฐํ™”๋œ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ref ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์ „ ์ƒ์• ์ฃผ๊ธฐ๋ฅผ ํ†ตํ•ด ์œ ์ง€๋œ๋‹ค. ๐Ÿ“ฆ Parameter โ€ข initialValue: ์ดˆ๊ธฐ์— ์ €์žฅ๋˜๋Š” ๊ฐ’์„ ๋„ฃ์œผ๋ฉฐ, ๋ชจ๋“  ์œ ํ˜•์˜ ๊ฐ’์ด(lite, DOM...)์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด ์ธ์ˆ˜๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ํ›„์— ๋ฌด์‹œ๋œ๋‹ค. ๐ŸŽ Return useRef๋Š” ๋‹จ์ผ ์†์„ฑ์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. {current: value} โ€ข current: initialValue๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฉฐ null์„ ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. ํ–ฅํ›„ ๋‹ค๋ฅธ ๊ฒƒ์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ..