์ฐธ๊ณ ์ฌ์ดํธ
ํ์ฌ ์์ฑ์๋ ๊ทธ๋ํฝ ๊ธฐ๋ฐ์ ์๋ฃจ์ ํ์ฌ์ ์ฌ์ง์ค์ ๋๋ค.
threejs์ ๋ํด ๊ณต๋ถ์ค์ด๋ผ ์๋ฒฝํ ๋ด์ฉ์ ์๋๊ฒ ๋ ์ง๋ ๋ชจ๋ฅด๊ฒ ์ผ๋, ์๋ชป๋ ๋ด์ฉ์ด ๊ธฐ์ฌ๋์ด ์์ ๊ฒฝ์ฐ ๋ฐ๋ํ ํผ๋๋ฐฑ ์ฃผ์๋ฉด ๊ฒธํํ ๋ฐ์๋ค์ด๊ณ ์์ ํ๊ฒ ์ต๋๋ค.
๐ฆ three.js
three.js๋, ์นํ์ด์ง์ 3D ๊ฐ์ฒด๋ฅผ ์ฝ๊ฒ ๋ ๋๋ง ํ ์ ์๋๋ก ๋์์ฃผ๋ 3D ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
WebGL ๊ธฐ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋ ๋๋ง๊ณผ ์นด๋ฉ๋ผ, ์กฐ๋ช ๋ฑ์ 3D ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ ์ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
๐๏ธ WebGL
์ธํฐ๋ท ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์์ OpenGL์ ํ๋ฌ๊ทธ์ธ ๋์ ์์ด ๊ณต์์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ์ ์ ํ ์น ๊ทธ๋ํฝ์ค API๋ก, OpenGL ES๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ์ํ๊ณ ์๋ค.
๐ ๊ธฐ๋ณธ ๊ตฌ์ฑ
๐ Scene
3D ๊ฐ์ฒด๋ฅผ ๋์ฐ๊ธฐ ์ํด ๊ธฐ๋ณธ์ ์ผ๋ก 3D ๊ณต๊ฐ์ด ํ์ํ๋ฐ ์ด ๊ณต๊ฐ์ Scene์ด๋ผ ์นญํ๋ค.
์ฐ๋ฆฌ๋ ํ๋์ ์ฅ๋ฉด, Scene์ ๋ง๋ ๋ค.
๐ฅ Camera
๋ฌผ์ฒด๋ฅผ ๋ฐ๋ผ๋ณด๊ธฐ ์ํ ์์์ด๋ค. ์ฐ๋ฆฌ๊ฐ ๋์ผ๋ก ๋ณด๋ฏ Scene์ด๋ผ๋ ๊ณต๊ฐ์์ ๋ฌผ์ฒด๋ฅผ ๋ณด๊ณ , ์ดฌ์ํ๊ธฐ ์ํด์๋ Camera๊ฐ ํ์ํ๋ค.
์ฐ๋ฆฌ๋ ํ๋์ ์ฅ๋ฉด์ ์ดฌ์ํ๊ธฐ ์ํด Camera๋ฅผ ์์ฑํ์ฌ ์ดฌ์ํ๋ค.
๋ํ์ ์ผ๋ก,
์๊ทผ๋ฒ์ ๋ฌด์ํ๋ Orthographic-Camera์,
์ฌ๋์ ๋๊ณผ ๊ฐ์ ์๊ทผ๋ฒ์ ์ด์ฉํ Perspective-Camera๊ฐ ์กด์ฌํ๋ค.
๋งค๊ฐ๋ณ์๋ก๋
โ fov: ์นด๋ฉ๋ผ์ ์์ผ๊ฐ์ด๋ค.
โ aspect: ์นด๋ฉ๋ผ์ ์ดฌ์ํ width, height์ ๋น์จ์ด๋ค (width/height)
โ near: ์นด๋ฉ๋ผ๋ก๋ถํฐ ์ค์ ๋ ๊ฐ์ ๊ฑฐ๋ฆฌ ์์ ์๋ ๋ฌผ์ฒด๋ ๋ณด์ด์ง ์๋๋ค.
โ far: ์นด๋ฉ๋ผ๋ก๋ถํฐ ์ค์ ๋ ๊ฐ์ ๊ฑฐ๋ฆฌ ๋ฐ์ ์๋ ๋ฌผ์ฒด๋ ๋ณด์ด์ง ์๋๋ค.
์ฐ๋ฆฌ๋ ๊ฐ๋ ๊ฒ์์ ํ๋ค๊ฐ ์บ๋ฆญํฐ๊ฐ ์์ผ๋ก ๊ฑธ์ด๊ฐ๋ฉด ์ ์ ๋ค์์ ๋ฌผ์ฒด๊ฐ ๋ ๋๋ง์ด ๋๋ฉด์ ๋ณด์ด๋ ํ์์ด ๋ฐ์ํ๋๋ฐ ์ด๋ ์ฌ์ฉ๋๋ ๊ฐ์ด๋ค.
๐๏ธ Renderer
Scene์ ๋ฌผ์ฒด๋ฅผ ๊ทธ๋ ค์ฃผ๊ธฐ ์ํ ๋๊ตฌ๊ฐ Renderer์ด๋ค.
๋ค์ ๊ฒ์๊ธ์์ ์ด ์ธ ๊ฐ์ง๋ฅผ ์ฌ์ฉํ์ฌ 3D ๊ณต๊ฐ์ ๋ง๋ค์ด๋ณด์.