์ค๋์ ํํธ3 [Three.js ๊ธฐ์ด] ์ฑํฐ 01์ ๊ฐ์์๊ฐ ๋ฐ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ฑํ๊ธฐ ๊ฐ์๋ฅผ ๋ค์์ต๋๋ค.(1~3๊ฐ) ๋ด์ฉ์ด ํฅ๋ฏธ๋ก์ด์ง๋ผ ๋ ๋ฃ๊ณ ์ถ์๋๋ฐ.. ์ค๋์ ์ผ์ ์ด ์ข ์์ด์ ใ
.ใ
๋๋จธ์ง๋ ๋ด์ผ ๋ง์ ๋ค์ด์ผํ ๊ฒ ๊ฐ๋ค์ ๐ฅน ๊ทธ๋ผ ์ค๋ ๊ฐ์์์ ๋ฐฐ์ด ๋ด์ฉ๋ค์ ๊ฐ๋ตํ๊ฒ ์์ฑํด ๋ณผ๊ฒ์! 1 ~ 2๊ฐ์ ์ด๋ค์์ผ๋ก ํ์ต์ ํ๊ฒ๋ ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ค๊ฑธ ๋ฐฐ์ฐ๊ฒ ๋ ์ง์ ๋ํ ๋ด์ฉ๊ณผ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ฐํ๊ฒฝ ์ค์ (vscode ์ค์น๋ฑ)์ ๊ดํ ๋ด์ฉ์ด์์ต๋๋ค. ๊ณ ๋์ ์๋ถ๋ถ์ ๋น ๋ฅด๊ฒ ์คํตํ์๊ตฌ ใ
ใ
; 3๊ฐ๋ถํฐ Three.js์ ๋ํด ์์๊ฐ๋ ์๊ฐ์ ๊ฐ์ก์ต๋๋ค. Three.js๋ ์น ๋ธ๋ผ์ฐ์ ์์ 3D ๊ทธ๋ํฝ์ ๋ ๋๋งํ๊ธฐ ์ํ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. Three.js๋ ๋ฌผ์ฒด ๋ชจ๋ธ๋ง, ๋ฌผ๋ฆฌ ํจ๊ณผ, ์กฐ๋ช
, ํ
์ค์ฒ, ์ ๋๋ฉ์ด์
..
์ค๋์ ์ ๋ฒ ํฌ์คํธ์ ์ด์ด ํํธ1์ chapter5.๋ฅ์คํธ ๋ ๋ฒจ ํ์ด์ค 06 ~ 07 ๊ฐ์๋ฅผ ๋ค์์ต๋๋ค. ๊ทธ๋ผ ์ค๋ ๊ฐ์์์ ๋ฐฐ์ด ๋ด์ฉ๋ค์ ๊ฐ๋ตํ๊ฒ ์์ฑํด ๋ณผ๊ฒ์! 06๊ฐ IntersectionObserver API ์ฌ์ฉ๋ฒ let observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if(entry.isIntersecting) { // ์์๊ฐ 50%์ด์ ๋ณด์ผ ๋ ํํ๋ ๋์ // ๊ด์ฐฐ๋ ์์์ ๋ทฐํฌํธ ๋ด ์์น์ ํฌ๊ธฐ entry.boundingClientRect // ๊ด์ฐฐ๋ ์์์ ์ด ๊ต์ฐจ(ํ๋ฉด๋
ธ์ถ) ๋น์จ entry.intersectionRatio // ๋ทฐํฌํธ ๋ด ๊ต์ฐจ๋ ์์ญ์ ์์น์ ํฌ๊ธฐ entry.insersect..
์ค๋์ ์ ๋ฒ ํฌ์คํธ์ ์ด์ด ํํธ1์ chapter5.๋ฅ์คํธ ๋ ๋ฒจ ํ์ด์ค 03~06 ๊ฐ์๋ฅผ ๋ค์์ต๋๋ค. ๊ทธ๋ผ ์ค๋ ๊ฐ์์์ ๋ฐฐ์ด ๋ด์ฉ๋ค์ ๊ฐ๋ตํ๊ฒ ์์ฑํด ๋ณผ๊ฒ์! ์ผ์ ์๊ฐ ์ด์ ๋๋ฌ์ผ ๋์ํ๋ ๋ฒํผ? -> ์น์์ ํํ ๋ณผ ์ ์๋ ํจํด์ผ๋ก ์ ์ ๊ฐ ์ค์๋ก ๋๋ ์ ๋ ์์น ์๋ ์ก์
์ ์ํํ์ง ์๊ธฐ ์ํด ๋ณดํต ์ฌ์ฉ๋ฉ๋๋ค.์ ๋ ํ์ธ ๋ชจ๋ฌ์ ๋์ฐ๋ ๊ฒ๋ง ์๊ฐํ๋๋ฐ ์ด๋ฐ UI๋ฅผ ์ถ๊ฐํด๋ณด๋ ๊ฒ๋ ์ฌ๋ฐ์ ๊ฒ ๊ฐ๋ค์! JS setInterval - ํน์ ๊ฐ๊ฒฉ์ ์์ ๋ง์ถฐ ๋ฐ๋ณตํ์ฌ ํน์ ํจ์๋ฅผ ๋์ํ๊ฒ ํจ- clearInterval ํจ์์ ์ ๋ํฌ์์ด๋๋ฅผ ๋ฃ์ด ๋์์ ๋ฉ์ถ ์ ์์- ์๋ฐํ ์๊ฐ ์ ํ๋๋ฅผ ๋ณด์ฅํ์ง ์์*(JS๋ ์ฑ๊ธ์ค๋ ๋๋ผ ๋ค๋ฅธ ์ผ์ด ์ํ๋๊ณ ์์ผ๋ฉด ์กฐ๊ธ ๋ฆ๊ฒ ์ํ๋ ์ ์์)- JS native ํจ์- ์ด..
์ค๋์ ํํธ1์ chapter5.๋ฅ์คํธ ๋ ๋ฒจ ํ์ด์ค ๊ฐ์๋ฅผ ๋ค์์ต๋๋ค. ํ๋ ์ด๊ฒ์ ๊ฒ ์์์๊ด์์ด ๋ฃ๋ค ๋ณด๋ ์ข ํท๊ฐ๋ฆฌ๋ค์ ^,^; ์๋ง ์ด๋ฒ ์ฃผ ์๋ฐ๊ธฐ๋ ์ ์ฑํฐ ๋ด์ฉ์ผ๋ก ํฌ์คํธ๋ฅผ ์์ฑํ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ผ ์ค๋ ๊ฐ์์์ ๋ฐฐ์ด ๋ด์ฉ๋ค์ ๊ฐ๋ตํ๊ฒ ์์ฑํด ๋ณผ๊ฒ์! CSS Cursor - cursor ์์ฑ์ ๋ค์ํ ๊ฐ์ ์ค์ ๋ธ๋ผ์ฐ์ ๋ณ๋ก ์ปค์๋ชจ์์ ๋ฐ๊ฟ ์ ์๋ค. => ์ฌ์ฉ์ ๊ฒฝํ ํฅ์ - url(image)๋ฅผ ์ฌ์ฉํด์ ์ปค์คํ
์ด๋ฏธ์ง๋ก ๋ ์ปค์๋ฅผ ๋ง๋ค ์๋ ์๋ค. ์ค๋ ๊ฐ์์์ ๋ฐ๋ผ๋ง๋ค์ด๋ณผ ํ๋ก์ ํธ๋ ์๋ ์ฌ์ดํธ์
๋๋ค. http://nlf.geex-arts.com Next Level Fairs With over 28 years in the industry and over 150 successful fairs..
์ค๋์ parallax scrolling ๊ธฐ๋ฒ์ ๋ํ ๊ฐ์๋ฅผ ๋ค์์ต๋๋ค! ์์ ์ ์ ๊ฐ ํ์ฐธ ์ทจ์
์ค๋นํ๋ ์์ ์ ๋ง์ ํฌํธํด๋ฆฌ์ค์์ ์ด ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์์๋... ๊ฐ์ธ์ ์ผ๋ก ๊ทธ๋ ๊ฒ๊น์ง ๋ง์ด ๋ณด์ด์ง๋ ์๋ ๊ฒ ๊ฐ์์. ๊ทธ๋๋ ์ธํฐ๋ ํฐ๋ธ ์น์์ ๋น ์ง ์ ์๋ ๊ธฐ๋ฒ์ด๋ ์ํด๋ดค๋ค๋ฉด ์ฌ์ด๋ํ๋ก์ ํธ์ ํ๋ฒ ๋ฃ์ด๋ณด๋ ๊ฒ๋ ์ฌ๋ฐ์ ๊ฒ ๊ฐ์ต๋๋ค โจ Parallax Scrolling ๊ฐ ๋ ์ด์ด๋ณ๋ก ์คํฌ๋กค ์๋๋ฅผ ๋ค๋ฅด๊ฒ ํ์ฌ ์
์ฒด๊ฐ์ ์ฃผ๋ ๋์์ธ ๊ธฐ๋ฒ. ์ฃผ๋ก ๊ฒ์์ด๋ ์ ๋๋ฉ์ด์
๋ฑ์ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ธฐ๋ฒ(ex: ๋ฉ์ดํ์คํ ๋ฆฌ)์ธ๋ฐ ์ธํฐ๋ ํฐ๋ธ ์น์ด ๋๋๋๋ฉด์ ํจ๊ป ์ฃผ๋ชฉ๋ฐ๊ธฐ ์์. - JS ํน์ ์์ CSS๋ง์ผ๋ก๋ ๊ตฌํ๊ฐ๋ฅ - ๋ฐ์คํฌํ ์น์์ ์ฃผ๋ก ์ฌ์ฉํ๊ณ ๋ชจ๋ฐ์ผ ์ฅ์น์์๋ ์ถ์ฒ๋์ง์์. ๋ณด๋ ์ฌ๋ ์
์ฅ์์ ๋ฉ๋ฆฌ์๋..
์ค๋์ ํํธ2 Canvas ๊ฐ์์ ch1๊ณผ ch07์ ๋ค์์ต๋๋ค. ๋ฃ๋ ์์๋ ์๊ด์๋ค๊ธฐ์ ใ
ใ
๊ธฐ์ด์ ์ธ ๊ฐ์๋ง ๋ฃ๊ณ ๊ฐ์ธ์ ์ผ๋ก ์ฌ๋ฐ์ด๋ณด์ด๋ ๊ฐ์๋ถํฐ ๋ค์๋ค์. ์บ๋ฒ์ค๋ ๋งค๋ฒ ์ฌ์ฉํ ๋๋ง๋ค ๊ฒ์ํ๋ฉด์ ์ผ๋ ๊ฒ ๊ฐ์๋ฐ ํ ๋ฒ ๋ฐ๋ก ์ ๋ฆฌํด ๋๋ ๊ฒ ์ข์ ๊ฒ ๊ฐ๋ค์. ์ฑํฐ 01์์๋ ์บ๋ฒ์ค ์ฌ์ด์ฆ์ ๋ํ ๊ธฐ์ด ์ง์๋ถํฐ, ๊ธฐ๋ณธ ํํฐํด ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ ๊ทธ๋ฆฌ๊ณ ์์ฑํ ํํฐํด์ ๋ค์ํ ์ ๋๋ฉ์ด์
์ ์ ์ฉํด ๋ณผ ์ ์์๊ณ ๋ง์ง๋ง์๋ ์บ๋ฒ์ค resizeํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๋ฐฐ์ธ ์ ์์์ต๋๋ค. const canvas = document.querySelector('canvas'); const ctx = canvas.getContext('2d') // ๋๋ก์ ์ปจํ์คํธ // ์ฑ์์ง ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ (x, y, w, h) ctx.fi..