Library/three.js

[ three.js ] three.js์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

ma.caron_g 2024. 5. 19. 16:19

์ฐธ๊ณ  ์‚ฌ์ดํŠธ

โˆ™ seongminn๋‹˜์˜ ๋ฒจ๋กœ๊ทธ

 

 

ํ˜„์žฌ ์ž‘์„ฑ์ž๋Š” ๊ทธ๋ž˜ํ”ฝ ๊ธฐ๋ฐ˜์˜ ์†”๋ฃจ์…˜ ํšŒ์‚ฌ์— ์žฌ์ง์ค‘์ž…๋‹ˆ๋‹ค.

threejs์— ๋Œ€ํ•ด ๊ณต๋ถ€์ค‘์ด๋ผ ์™„๋ฒฝํ•œ ๋‚ด์šฉ์€ ์•„๋‹ˆ๊ฒŒ ๋ ์ง€๋Š” ๋ชจ๋ฅด๊ฒ ์œผ๋‚˜, ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ๊ธฐ์žฌ๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ ๋”ฐ๋”ํ•œ ํ”ผ๋“œ๋ฐฑ ์ฃผ์‹œ๋ฉด ๊ฒธํ—ˆํžˆ ๋ฐ›์•„๋“ค์ด๊ณ  ์ˆ˜์ •ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“ฆ three.js

three.js๋ž€, ์›นํŽ˜์ด์ง€์— 3D ๊ฐ์ฒด๋ฅผ ์‰ฝ๊ฒŒ ๋ Œ๋”๋ง ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” 3D ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋‹ค.

WebGL ๊ธฐ์ˆ ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ Œ๋”๋ง๊ณผ ์นด๋ฉ”๋ผ, ์กฐ๋ช… ๋“ฑ์˜ 3D ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

https://threejs.org/

 

Three.js – JavaScript 3D Library

 

threejs.org

 

๐Ÿ–‹๏ธ 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 ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด๋ณด์ž.