๐ผcomputer_graphics/ chap 03.OpenGL_์์ฉ ์ํํธ์จ์ด
๐3.1 OpenGL์ ๊ธฐ๋ณธ ๊ฐ๋
๐ OpenGL์ ์ญ์ฌ
โผ Silicon Graphics(SGI)์ฌ์ ์ํฌ์คํ
์ด์
์ฉ ๊ทธ๋ํฝ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ(GL) ์์ ์์
(์ํฌ์คํ ์ด์ ์ ์๋ฒ๊ธ ์ปดํจํฐ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.)
โผOpenGL Architecture Review Board (http://www.opengl.org)
- OpenGL ๊ณต์๊ธฐ๊ตฌ : SGI, DEC, IBM, Apple, Microsoft, ๋ฑ์ ์ปจ์์์
- ๋ค์ํ ํ๋ซํผ(์๋๋ก์ด๋ , ios,๋ฆฌ๋ ์ค ๋ฑ๋ฑ)์์ ์๋๋๋๋ก GL์ ์์ ํ์ฌ OpenGL ์ ์
- 1992๋ OpenGL 1.0 ๋ฐํ ์ดํ, 2002๋ 7์ OpenGL 1.4, 2004๋ OpenGL 2.0 ์ฌ์ ๋ฐํ -> ํ์ฌ 3.0
โผํ์ฌ 2D์ 3D ๊ทธ๋ํฝ์ค API๋ก ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์ฐ์ ๊ณ ํ์ค์ผ๋ก ์ฑ์ฅ
๐ OpenGL์ ์ฃผ์ํ ํน์ง
โผ "๊ทธ๋ํฝ์ค ํ๋์จ์ด์ ๋ํ ์ํํธ์จ์ด ์ธํฐํ์ด์ค"
- ํ๋์จ์ด์ ๋ ๋ฆฝ์ , ์์ ์์ค(high-level)์ ๊ทธ๋ํฝ์ค API( ๊ธฐ๊ณ์ดX,C์ธ์ด ์ ๋ ~ ๊ทผ๋ฐ high์ค์์ ์ตํ์์์ค)
โผ OpenGL์ ํ๋ซํผ์ ๋ ๋ฆฝ์ ์ด๋ค.
- PC ๋ ์ํฌ์คํ ์ด์ ๋ชจ๋์์ ๊ฐ๋ฅ, ๋ค์ํ ์ด์์ฒด์ ๋ฐ ํธ์คํธ ์ธ์ด์ ์ง์
โผ ๋ค์ํ ๊ทธ๋ํฝ์ค ๊ธฐ๋ฅ์ ์ง์์ผ๋ก ์์ฉ ์ํํธ์จ์ด ๊ฐ๋ฐ์ด ์ฉ์ดํ๋ค.
- ๊ธฐ๋ณธ์ ์ธ 2D ๋ฐ 3D ๊ทธ๋ํฝ์ค ํจ์์์๋ถํฐ ๊ณ ๊ธ ๊ธฐ๋ฅ๊น์ง ์ง์
(์ ๋ํฐ์ ๋นํ๋ฉด ๋ถํธํ๊ธด ํ๋ฐ ๊ทธ๋๋ ใฑใ ) - ๊ทธ๋ํฝ์ค ๊ฐ์๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ง์ ์์ ๊ทธ๋ํฝ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ ์ฒ๋ฆฌ
๐ OpenGL์ ์ฅ์
โผ์์ ์ฑ(Stability)
์ง๋ 10๋ ๋์ ๋ค์ํ ํ๋ซํผ์์ ์ง์๋์ด ๊ทธ ์ฌ์์ด ์ถฉ๋ถํ ๊ฒ์ฆ๋๋ฉด์ ๋ฐ์
โผ์ ๋ขฐ์ฑ ๋ฐ ์ด์์ฑ(Reliability & Portability)
OpenGL ์์ฉํ๋ก๊ทธ๋จ์ ์ด์์ฒด์ ๋ ์๋์ฐ ์์คํ ์ ์๊ด์์ด ๋์ผํ ์ถ๋ ฅ๊ฒฐ๊ณผ๋ฅผ ์์ฑ
โผ์ ์ฐ์ฑ(Scalability)
๊ฐ์ ๊ธฐ๊ธฐ๋ก๋ถํฐ PC, ์ํผ ์ปดํจํฐ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ค์ํ ์ข ๋ฅ์ ์์คํ ์์ ๋์ผํ๊ฒ ์๋ (์ฝ๋ ์์ ์์ด ๋ค์ํ ๊ธฐ๊ธฐ์์ ์ฌ์ฉ๊ฐ๋ฅ)
โผํธ๋ฆฌ์ฑ(Ease of Use)
์ง๊ด์ ์ธ ์ธํฐํ์ด์ค์ ๋ ผ๋ฆฌ์ ์ธ ๋ช ๋ น์ด๋ค๋ก ๊ตฌ์ฑ
โผ๋ฌธ์ํ(Well-documented)
๋ฌธ์ํ ์์ ์ด ์ ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ๋ง์ ์ฑ ๋ค์ด ์ถํ
๐ฝOpenGL vs Direxct3D
dierect 3d: microsoft ํผ์ ํ์ค์ด๋ค.
์์ ์ฑ์ด ์ข ๋ ๋๋ค.
์ด์์ฑ์ด ์๋ค.(์๋์ฐ์์๋ง ๋์๊ฐ๋๊น)
์ ์ฐ์ฑ๋ ๋ ๋จ์ด์ง๊ณ ํธ๋ฆฌ์ฑ,๋ฌธ์ํ ๋ ๋จ์ด์ง
๐ OpenGL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ์ฑ
OpenGL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ธฐ๋ณธ๊ตฌ์ฑ
ํ๋ ์๋ฒํผ์ ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๊ธฐ๋ฅ์ ๋ชจ์๋์ 2๊ฐ์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โผ GL Library(OpenGL Main Library)
OpenGL์ ๋ฉ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, gl ์ด๋ผ๋ ์ ๋์ด(prefix)๊ฐ ๋ถ์ ํจ์ ์ด๋ฆ
โผ GLU Library(OpenGL Utility Library)
๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ํธ๋ฆฌํฐ ํจ์๋ค : ๊ณก์ , ๊ณก๋ฉด, ๊ณ ๊ธ ๋ทฐ์ ๋ฑ, ์ ๋์ด๋ glu
์๋์ฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ์ฌ์ฉ์ ์ํธ์์ฉ์ ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โผ GLUT Library(OpenGL Utility Toolkit Library)
์ธํฐํ์ด์ค ํดํท ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ์ฒ์์๋ X-์๋์ฐ์์, ํ์ฌ๋ ๋ค์ํ ํ๋ซํผ ์ง์
โผ GLX Library
์ ๋์ค์ X ์๋์ฐ ์์คํ ์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ใดOpenGL ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ตฌ์ฑ
๐ OpenGL ํจ์์ ๋ช ๋ น์ด ๋ฌธ๋ฒ
๋ชจ๋ ํจ์ ์ด๋ฆ์ <์ ๋์ด><๊ธฐ๋ณธ๋ช ๋ น><์ ๋ฏธ์ด>๋ก ๊ตฌ์ฑ
โผ <์ ๋์ด>๋ ํจ์๊ฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐ๋ผ gl, glu, aux ๋๋ glut
โผ <์ ๋ฏธ์ด>๋ "<์ธ์ ๊ฐ์><๋ฐ์ดํฐ ํ์>"์ ๊ตฌ์กฐ
<์ธ์ ๊ฐ์>๋ ํจ์์ ์ ๋ฌ์ธ์์ ๊ฐ์๋ก์ 2, 3, ๋๋ 4
โผ <๋ฐ์ดํฐ ํ์>์ ์ ๋ฌ์ธ์์ ํ์์ ๋ฐ๋ผ f, d, s, i, b, ub, us, ui
(float,double,shor,,unsigned,~)
๐ธOpenGL ํจ์์ ์ฌ์ฉ ์
๐ OpenGL ํ๋ก๊ทธ๋๋ฐ์ ์์
OpenGL ํ๋ก๊ทธ๋จ ์ฒ์ ์์ํ๊ธฐ
์ฌ๊ธฐ์๋ C์ธ์ด๋ก GLUT ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉ (Lab. D ๋ฐ Lab.E ์์๋ C++๋ก ํ๋ก๊ทธ๋๋ฐ)
1.์ฒซ ๋ฒ์งธ ์์ : OpenGL ์๋์ฐ ์ด๊ธฐ
์๋์ฐ๋ฅผ ์ฌ๋ ์ด๊ธฐํํจ์๋ฅผ ํธ์ถํ๊ณ ๋ฐฐ๊ฒฝ์์ 'blue'๋ก ์น ํ์ฌ ํ๋ฉด์ ๋ณด์ฌ์ค๋ค.
์ฑ๊ธ ๋ฒํผ๋ง ์ฌ์ฉ GLUT_SINGLE - ์ถํ์ ์ฑ๊ธ/๋๋ธ ๋ฒํผ๋ง์ค๋ช
glClear ์์ํ๊ณ
๋ฐ๋ก ๋ค์์ผ๋ก ๋์ด์ด. ๊ทธ๋ฆฌ๊ณ ๋๋๊ณ return ;
glFlush gpu๊ฐ ํ ์ผ์ ๋๋๋ค ํ~๊ทธ๋ฐ ํจ์
OpenGL์ ๊ทธ๋ํฝ์นด๋์ ์ผ์ ์ํค๋ ํจ์ ๋ค์ ์งํฉ!
๐น(์๊ณ ๊ฐ๊ธฐ) ๊ทธ๋ํฝ์นด๋์ ์ญํ -์ดํดํ๊ธฐ
๊ทธ๋ํฝ ์นด๋์ ์
๋ ฅ : ์ผ๊ฐํ ํ๋๋ฅผ ๊ทธ๋ฆฌ๊ธฐ
๊ฐ์
2.๋ ๋ฒ์งธ ์์ : ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
๋ฐฐ๊ฒฝ์์ 'blue' ๋ก ์ค์ ํ ํ glClear() ํจ์๋ก ๋ฐฐ๊ฒฝ์ ์น ํ๊ณ , 'green' ์์์ค์ ํ glRectf() ํจ์๋ก ์ฌ๊ฐํ์ ๊ทธ๋ฆฐ๋ค.
(๊ทธ๋ฆผ์ ์ค๋ฅ ์์ ์ฐธ๊ณ )
๐ปSINGLE BUFFER (๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ)
-๋ฌธ์ ๋ ํ๋ฉด์ด ๊ทธ๋ ค์ง๋ ๋์ ์์ด ๋ฐ๋๋ค. ๊ทธ๊ฒ ํ๋ฉด์ ๊ทธ๋๋ก ์ถ๋ ฅ์ด ๋๋๊น
-DOUBLE BUFFER๋ฅผ ์ฌ์ฉํจ. ๋ฒ๊ฐ์์ ์ฌ์ฉํ๋ ๋ฐฉ์
๐ปSTATE MACHINE(์ํ ์ค์ )
glClearColor(0,0,1,1)์ํ๋ก ์ง์ ํด๋๊ณ ์ด๊ฒ ๋ฐ๋ก ์คํ๋๋๊ฒ ์๋
glClear(GL_COLOR_BUFFER_BIT)ํด์ผ ์คํ๋๋ ๊ฒ์.
1. glClearColor(0,0,1,1)
2. glClearColor(0,1,1,1)
์ด๋ฐ์์ผ๋ก ๋์ด์์ผ๋ฉด ๊ฐ์ฅ ์ต๊ทผ๊ฒ๋ง ์ฌ์ฉํจ 1๋ฒํ๋ค๊ฐ 2๋ฒํ๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ 2๋ฒํ๋๊ฒ์ ๊ทธ๋ฆฌ๊ณ ์คํ์ ex) glRect๋ก ๊ทธ๋ฆฌ๊ธฐ ํด์ผ ์คํ์ด ๋๋๋ฐ ๊ณ ๋ฅ ๊ฐ์ฅ ์ต๊ทผ์ธ 2๋ฒ๋ง ์คํํ๋ ๊ฒ
๐3.2 OpenGL์ ์ฃผ์ ํจ์
๐ ๊ธฐ๋ณธ์ ์ธ ๋ํ ๊ทธ๋ฆฌ๊ธฐ
์ , ์ , ๋ค๊ฐํ, ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๋ํ
glBegin(ํ์) ๊ณผ glEnd() ์ฌ์ด์ ์ ์ ์ขํ๋ค์ glVertex*() ๋ก ์ง์
- ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
glBegin(ํ์) ๊ณผ glEnd() ์ฌ์ด์ ์ ์ ์ขํ๋ค์ glVertex*() ๋ก ์ง์
๊ธฐ๋ณธ ์ถ๋ ฅ์์์ ์์ฑ
โผ ์ ์ ํฌ๊ธฐ glPointSize(size), ์ ๊ตต๊ธฐ glLineWidth(width)
โผ ์ ์ ๋ฐ ์์ ์ ๋ชจ์ glLineStipple(factor,pattern)
๐ ๋ณํ ๋ฐ ๋ณํ ํ๋ ฌ(Transformation Matrix)
์นด๋ฉ๋ผ ์ค์ฌ์์ ์์ ์ ํ ๋ , ์ํ ์ดฌ์์ ์๊ฐํด๋ณผ ๊ฒ
Model(Object) Space(Coordinate)
world Transform ,Model Transform
World space(Coordinate)
view Transform
Camera space(Coordinate)
Projection Transform
Clip space(Coordinate)
Viewport transform
Screen space
OpenGL์์์ 4๊ฐ์ง ๋ณํ
โผ๋ทฐ์(Viewing) ๋ณํ :
๊ด์ธก์์ ์์ (viewpoint)์ ์ค์
(์๋->์นด๋ฉ๋ผ)
โผ๋ชจ๋ธ๋ง(Modeling) ๋ณํ :
3์ฐจ์ ๊ณต๊ฐ์์ ๊ทธ๋ํฝ์ค ๊ฐ์ฒด์ ์ด๋, ์ ์ถ, ํ์ , ๋ฑ
(๋ชจ๋ธ์คํ์ด์ค->์๋์คํ์ด์ค)
โผํฌ์(Projection) ๋ณํ :
3์ฐจ์ ๊ทธ๋ํฝ์ค ๊ฐ์ฒด๋ฅผ 2์ฐจ์ ํ๋ฉด์ผ๋ก ํฌ์
(์นด๋ฉ๋ผ ->ํด๋ฆฝ/ํ๋ฆ์ผ๋ก)
โผ๋ทฐํฌํธ(Viewport) ๋ณํ :
ํฌ์๋ ๊ทธ๋ฆผ์ ์ถ๋ ฅ๋ ์์น์ ํฌ๊ธฐ๋ฅผ ์ ์
(๊ฐ ํ๋ฉด์ ํฝ์
๋ก ๋์ํ๊ฒ ๋๋)
*OpenGL์์์ ๊ธฐํ๋ณํ
๋ชจ๋ ๋ณํ์ ๊ฐ์ 4*4 ํ๋ ฌ๋ก ํํ๋๊ณ , ๊ฐ์ฒด์ ์ขํ์ ๋ณํ ํ๋ ฌ์ ์ ์ฉ
->์ ํ๋ ฌ๋ก ํํ์ด๋๋? ์ด์ ๋ ๊ฒฐํฉ๋ฒ์น
ํ๋ ฌ์ด๋?
โผ ๋ณํ ํ๋ ฌ์ ๋ชจ๋ ์ค์ : glMatrixMode(mode)
๋ณํ ํ๋ ฌ์ mode ์๋ GL_MODELVIEW, GL_PROJECTION, ๋ฑ
โผ ๋ณํ ํ๋ ฌ์ ๊ฐ์ ์ค์ ํ๊ฑฐ๋ ์กฐ์์ ์ํํ๋ ํจ์
glLoadIdentity();
glLoadMatrix(*m);
glPushMatrix();
glPopMatrix();
โผ ๊ธฐ๋ณธ์ ์ธ ๊ธฐํ๋ณํ์ธ ์ด๋, ์ ์ถ, ํ์ , ๋ฑ์ ๋ณํ ํจ์
glTranslate3f(tx, ty, tz);
glScale3f(sx, sy, sz);
glRotate4f(angle, x, y, z);
โผ์ง๊ฐํฌ์(Orthographic Projection) ๋ฐ ์๊ทผํฌ์(Perspective Projection)
์ง๊ฐํฌ์: ํ๋ ฌ์ ๋ง๋ค์ด์ฃผ๋ ํจ์
์๊ทผํฌ์: ๋ทฐ ๋ณผ๋ฅจ ์ง์
๋ทฐํฌํธ: ํ๋ฉด ์์ ์ด๋์ ๊ทธ๋ ค์ง์ง ~
โผ๋ทฐํฌํธ(Viewport)์ ์ค์ :
glViewport(x, y, width, height)
๐ 3์ฐจ์ ๊ฐ์ฒด์ ์๋ฉด์ ๊ฑฐ(Hidden Surface Removal)
๋ฉ๋ฆฌ ์๋๊ฑฐ ์์๋ณด์ด๊ฒ
// 4์ฃผ์ฐจ 1์ฐจ์ - 27๋ถ
โผ๊น์ด๊ฒ์ฌ(Depth Test) ์ค์ : ์๋ฉด์ ๊ฑฐ ๊ณผ์ ์ ์คํ
์ค์ ๋ฐ ํด์ :
glEnable(GL_DEPTH_TEST),
glDisable(GL_DEPTH_TEST)
์ค์ ๋ฐ ํด์ :
glEnable(GL_DEPTH_TEST),
glDisable(GL_DEPTH_TEST)
ํค๋ฉด ๊ฐ๊น์ด๊ฑฐ ๊ทธ๋ ค์ง๊ณ
(ํด์ )๋๋ฉด ๊ทธ๋ฆฌ๋ ์์์ ์ํฅ์ ๋ฐ๊ฒ๋์ด์๋ค.
โผCulling ์ ์ค์ : ๋ค๋ฉด์ฒด์ ๋ท๋ฉด์ ๊ทธ๋ฆฌ์ง ์๋ ๊ธฐ๋ฅ
์ค์ ๋ฐ ํด์ :
glEnable(GL_CULL_FACE),
glDisable(GL_CULL_FACE)
๐ ์ด์ค ๋ฒํผ๋ง(Double Buffering)
๊น๋ฐ์ ํ์์ ์์ ๊ธฐ ์ํ์ฌ ํ๋ ์๋ฒํผ ๋๊ฐ๋ฅผ ๊ต๋๋ก ์ฌ์ฉ
โผ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๋ฒํผ์ ์ง์ :
glDrawBuffer(buffer)
- 'buffer'์๋ GL_FRONT, GL_BACK, GL_FRONT_AND_BACK์ ๊ฐ์ ์ง์
โผ ๋ฒํผ ๋๊ฐ์ ์ญํ ์ ๊ต๋๋ก ์ํํ๋ ํจ์
SwapBuffers()
๐ ์์ ๋ฐ ์์ด๋ฉ(Shading)
โผOpenGL ํ๋ก๊ทธ๋จ์์ ์์์ ์ค์ :
์ฃผ๋ก glColor(red, green, blue, alpha) ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ง์
โผ์์ด๋ฉ ๋ชจ๋ธ(Shading Model)
- ๋ฌผ์ฒด์ ์ ์ฒด๊ฐ์ ํํํ๊ธฐ ์ํ์ฌ, ๋ค๊ฐํ ๋๋ ๋ค๋ฉด์ฒด์ ์์์ ์ ์ง์ ์ผ๋ก ๋ณํ
Flat Shading : glShadeModel(GL_FLAT), ๋ค๊ฐํ ๋ฉด์ ํ๊ฐ์ง ์์์ผ๋ก
Smooth Shading : glShadeModel(GL_SMOOTH), ๊ฐ ๊ผญ์ง์ ์ ์๋ค์ ๋ณด๊ฐ
๐ ์กฐ๋ช (Lights) ๋ฐ ์ฌ์ง(Materials)
์กฐ๋ช ๋ชจ๋ธ
โผ์ฃผ๋ณ์กฐ๋ช (Ambient Light) :
๋ฌผ์ฒด์ ์์น์ ์๊ด์์ด ๊ณ ๋ฅด๊ฒ ๋น์น๋ ๋น
โผ์ฐ๋๋ฐ์ฌ์กฐ๋ช (Diffuse Light) :
๋น์ ๋ฐฉํฅ์ผ๋ก ๋ ธ์ถ๋ ๋ฉด์ด ๋ฐ์์ง๋ ์กฐ๋ช
โผ๊ฑฐ์ธ๋ฐ์ฌ์กฐ๋ช (Specular Light) :
ํน์ ๋ถ๋ถ์ด ์ง์ค์ ์ผ๋ก ๋ฐ์ฌ๋๋ ๋น
OpenGL์์ ์กฐ๋ช ์ ์ค์
โผ ๊ด์(Light Source)์ ์ค์ : glEnable(GL_LIGHT0) ํจ์๋ก ๋ชจ๋๋ฅผ ์ง์ ํ ํ, glLight() ํจ์์์ ๊ด์์ ์์น ๋ฐ 3๊ฐ์ง ์กฐ๋ช ์ ์์๊ฐ์ ์ค์
โผ ์กฐ๋ช
ํจ๊ณผ์ ์ค์ : glEnable(GL_LIGHTING)๋ก ๋ชจ๋๋ฅผ ์ง์ ํ๊ณ glLightModel() ํจ์์์ 3๊ฐ์ง ์กฐ๋ช
์ ๋ฐ๊ธฐ์ ๋ํ ์์๊ฐ์ ์ค์
์ฌ์ง(Material)์ ์ค์
โผglEnable(GL_COLOR_MATERIAL)์์ ๋ชจ๋๋ฅผ ์ง์
โผglColorMaterial() ๋๋ glMaterial()์์ ์ฌ์ง์ ์ข
๋ฅ ๋ฐ ํด๋นํ๋ ๊ฐ์ ์ค์
โผDiffuse Reflection, Ambient Reflection, Specular Reflection, Shininess, Emission, ๋ฑ
๐ ๋์คํฐ ๊ทธ๋ํฝ์ค์ ํ ์ค์ณ ๋งคํ(Texture Mapping)
OpenGL์์ ๋์คํฐ ์ด๋ฏธ์ง์ ์ข ๋ฅ
โผ๋นํธ๋งต(Bitmap) : ๊ฐ ๋นํธ์ ๊ฐ์ด 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ํ๋ฐฑ ์ด๋ฏธ์ง
โผํฝ์ค๋งต(Pixmap) : ๊ฐ ํฝ์ ์ด ์์๊ฐ์ ๊ฐ๋ ์ปฌ๋ฌ ์ด๋ฏธ์ง
๋์คํฐ ์ด๋ฏธ์ง๋ฅผ ๋ฒํผ์ ๊ทธ๋ฆฌ๊ธฐ
glRasterPos2i(x, y); // ์ด๋ฏธ์ง์์ ์ํ๋ ๋์คํฐ ์์น๋ฅผ ์ง์
glBitmap(width, height, x0, y0, xi, yi, *data); // ์ ์๋ ๋นํธ๋งต์ ์ถ๋ ฅ
glDrawPixels(width, height, format, type, *pixels); // ์ ์๋ ํฝ์ค๋งต์ ์ถ๋ ฅ
๋์คํฐ ํฝ์ ๋ค์ ์ฝ๊ฑฐ๋ ์ ์ฅ ๋๋ ๋ณต์ฌ
glReadPixels(), glPixelStore(), glCopyPixels()
ํ ์ค์ณ ๋งคํ(Texture Mapping)
์ฌ์ง์ด๋ ์ง๊ฐ์ ๋ํ๋ด๋ ์ด๋ฏธ์ง๋ฅผ 3์ฐจ์ ๋ฌผ์ฒด์ ํ๋ฉด์ ์ ํ๋ ์์
โผ1D ํ ์ค์ณ ๋งคํ : glTexImage1D(), ํ ์ค์ณ ์ด๋ฏธ์ง์ ํญ์ด๋ ๋์ด ์ค ํ๋๋ง ์ง์
โผ2D ํ ์ค์ณ ๋งคํ : glTexImage2D(), ์ด๋ฏธ์ง์ ํญ๊ณผ ๋์ด๋ฅผ ๋ชจ๋ ์ง์
*ํ
์ค์ณ ๋งคํ์ ์
๐ ๋ธ๋ ๋ฉ(Blending) ๋ฐ ์๊ฐ ํจ๊ณผ(Fog Effect)
๋ธ๋ ๋ฉ : ๋ ๊ฐ์ง ์์์ ์๋ ๊ธฐ๋ฅ
ํฌ๋ช ํ ๋ฌผ์ฒด, ํ๋ฆฟํ ์์์ ๊ทธ๋ฆผ์, ์คํฐ์จ๋ฆฌ์ด์ฑ ํจ๊ณผ ๋ฑ์ด ๊ฐ๋ฅ
OpenGL์์ ๋ธ๋ ๋ฉ์ ๊ตฌํ
glEnable(GL_BLEND)๋ก ๋ชจ๋ ์ค์ ํ, glBlendFunc(source, destination)์์ ๊ฐ์ ์ง์
์๊ฐํจ๊ณผ(Fog Effect)
ํจ์ glFog(pname, param)๋ฅผ ๋ณ๋๋ก ์ ๊ณต
*๋ธ๋ ๋ฉ์ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ํฌ๋ช ํ ์ฃผ์ ์์ ๊ทธ๋ฆผ์
๐ ๊ณก๋ฉด ๊ทธ๋ฆฌ๊ธฐ
GLU์์ ์ง์ํ๋ 2์ฐจ๊ณก๋ฉด(Quadric Surfaces) ํจ์
โผ์๊ธฐ๋ฅ gluCylinder(), ์ํ gluDisk(), ๊ตฌ gluSphere()
โผ์๋ฟ์ gluCylinder() ์์ ํ์ชฝ ๋ฉด์ ๋ฐ์ง๋ฆ์ 0.0์ผ๋ก ์ง์
*OpenGL์์ 2์ฐจ๊ณก๋ฉด ๊ทธ๋ฆฌ๊ธฐ ํจ์
โผ๋ฒ ์ง์ด ๊ณก์
glMap1f() ํจ์๋ก ์ ์ด์ ์ ์ ์ํ๊ณ , glEvalCoord1f() ํจ์๋ก ๊ทธ๋ฆฐ๋ค.
โผ๋ฒ ์ง์ด ๊ณก๋ฉด
์ ์ด์ ์ glMap2f()๋ก, ๊ฒฉ์๋ glMapGrid2f(), ๋ฉ์ฌ๋ glEvalMesh2() ํจ์ ์ด์ฉ
โผNURBS(Non-Uniform Rational B-Spline) ๊ณก์
glMap1f() ํจ์๋ก ๊ณก์ ์ ์ ์ด์ ์ ์ ์ํ๊ณ , gluNurbsCurve()๋ก ๊ทธ๋ฆฐ๋ค.
โผNURBS ๊ณก๋ฉด
glMap2f()๋ก ์ ์ด์ ์ ์ ์ํ๊ณ , gluNurbsSurface() ํจ์๋ก ๊ณก๋ฉด์ ๊ทธ๋ฆฐ๋ค.
๐3.2 OpenGL์ ์ฃผ์ ํจ์
๐ ๊ธฐ๋ณธ์ ์ธ ๋ํ ๊ทธ๋ฆฌ๊ธฐ
์ , ์ , ๋ค๊ฐํ, ๋ฑ์ ๊ธฐ๋ณธ์ ์ธ ๋ํ
glBegin(ํ์) ๊ณผ glEnd() ์ฌ์ด์ ์ ์ ์ขํ๋ค์ glVertex*() ๋ก ์ง์
- ์ฌ๊ฐํ ๊ทธ๋ฆฌ๊ธฐ
glBegin(ํ์) ๊ณผ glEnd() ์ฌ์ด์ ์ ์ ์ขํ๋ค์ glVertex*() ๋ก ์ง์
๊ธฐ๋ณธ ์ถ๋ ฅ์์์ ์์ฑ
โผ ์ ์ ํฌ๊ธฐ glPointSize(size), ์ ๊ตต๊ธฐ glLineWidth(width)
โผ ์ ์ ๋ฐ ์์ ์ ๋ชจ์ glLineStipple(factor,pattern)
๐ ๋ณํ ๋ฐ ๋ณํ ํ๋ ฌ(Transformation Matrix)
OpenGL์์์ 4๊ฐ์ง ๋ณํ
โผ๋ทฐ์(Viewing) ๋ณํ :
๊ด์ธก์์ ์์ (viewpoint)์ ์ค์
โผ๋ชจ๋ธ๋ง(Modeling) ๋ณํ :
3์ฐจ์ ๊ณต๊ฐ์์ ๊ทธ๋ํฝ์ค ๊ฐ์ฒด์ ์ด๋, ์ ์ถ, ํ์ , ๋ฑ
โผํฌ์(Projection) ๋ณํ :
3์ฐจ์ ๊ทธ๋ํฝ์ค ๊ฐ์ฒด๋ฅผ 2์ฐจ์ ํ๋ฉด์ผ๋ก ํฌ์
โผ๋ทฐํฌํธ(Viewport) ๋ณํ :
ํฌ์๋ ๊ทธ๋ฆผ์ ์ถ๋ ฅ๋ ์์น์ ํฌ๊ธฐ๋ฅผ ์ ์
*OpenGL์์์ ๊ธฐํ๋ณํ
โผ๋ชจ๋ ๋ณํ์ ๊ฐ์ 4*4 ํ๋ ฌ๋ก ํํ๋๊ณ , ๊ฐ์ฒด์ ์ขํ์ ๋ณํ ํ๋ ฌ์ ์ ์ฉ
โผ๋ณํ ํ๋ ฌ์ ๋ชจ๋ ์ค์ : glMatrixMode(mode)
๋ณํ ํ๋ ฌ์ mode ์๋ GL_MODELVIEW, GL_PROJECTION, ๋ฑ
โผ๋ณํ ํ๋ ฌ์ ๊ฐ์ ์ค์ ํ๊ฑฐ๋ ์กฐ์์ ์ํํ๋ ํจ์
glLoadIdentity();
glLoadMatrix(*m);
glPushMatrix();
glPopMatrix();
โผ๊ธฐ๋ณธ์ ์ธ ๊ธฐํ๋ณํ์ธ ์ด๋, ์ ์ถ, ํ์ , ๋ฑ์ ๋ณํ ํจ์
glTranslate3f(tx, ty, tz);
glScale3f(sx, sy, sz);
glRotate4f(angle, x, y, z);
โผ์ง๊ฐํฌ์(Orthographic Projection) ๋ฐ ์๊ทผํฌ์(Perspective Projection)
โผ๋ทฐํฌํธ(Viewport)์ ์ค์ :
glViewport(x, y, width, height)
๐ 3์ฐจ์ ๊ฐ์ฒด์ ์๋ฉด์ ๊ฑฐ(Hidden Surface Removal)
โผ๊น์ด๊ฒ์ฌ(Depth Test) ์ค์ : ์๋ฉด์ ๊ฑฐ ๊ณผ์ ์ ์คํ
์ค์ ๋ฐ ํด์ :
glEnable(GL_DEPTH_TEST),
glDisable(GL_DEPTH_TEST)
โผCulling ์ ์ค์ : ๋ค๋ฉด์ฒด์ ๋ท๋ฉด์ ๊ทธ๋ฆฌ์ง ์๋ ๊ธฐ๋ฅ
์ค์ ๋ฐ ํด์ :
glEnable(GL_CULL_FACE),
glDisable(GL_CULL_FACE)
๐ ์ด์ค ๋ฒํผ๋ง(Double Buffering)
๊น๋ฐ์ ํ์์ ์์ ๊ธฐ ์ํ์ฌ ํ๋ ์๋ฒํผ ๋๊ฐ๋ฅผ ๊ต๋๋ก ์ฌ์ฉ
โผ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๋ฒํผ์ ์ง์ :
glDrawBuffer(buffer)
- 'buffer'์๋ GL_FRONT, GL_BACK, GL_FRONT_AND_BACK์ ๊ฐ์ ์ง์
โผ ๋ฒํผ ๋๊ฐ์ ์ญํ ์ ๊ต๋๋ก ์ํํ๋ ํจ์
SwapBuffers()
๐ ์์ ๋ฐ ์์ด๋ฉ(Shading)
โผOpenGL ํ๋ก๊ทธ๋จ์์ ์์์ ์ค์ :
์ฃผ๋ก glColor(red, green, blue, alpha) ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ง์
โผ์์ด๋ฉ ๋ชจ๋ธ(Shading Model)
- ๋ฌผ์ฒด์ ์ ์ฒด๊ฐ์ ํํํ๊ธฐ ์ํ์ฌ, ๋ค๊ฐํ ๋๋ ๋ค๋ฉด์ฒด์ ์์์ ์ ์ง์ ์ผ๋ก ๋ณํ
Flat Shading : glShadeModel(GL_FLAT), ๋ค๊ฐํ ๋ฉด์ ํ๊ฐ์ง ์์์ผ๋ก
Smooth Shading : glShadeModel(GL_SMOOTH), ๊ฐ ๊ผญ์ง์ ์ ์๋ค์ ๋ณด๊ฐ
๐ ์กฐ๋ช (Lights) ๋ฐ ์ฌ์ง(Materials)
์กฐ๋ช ๋ชจ๋ธ
โผ์ฃผ๋ณ์กฐ๋ช (Ambient Light) :
๋ฌผ์ฒด์ ์์น์ ์๊ด์์ด ๊ณ ๋ฅด๊ฒ ๋น์น๋ ๋น
โผ์ฐ๋๋ฐ์ฌ์กฐ๋ช (Diffuse Light) :
๋น์ ๋ฐฉํฅ์ผ๋ก ๋ ธ์ถ๋ ๋ฉด์ด ๋ฐ์์ง๋ ์กฐ๋ช
โผ๊ฑฐ์ธ๋ฐ์ฌ์กฐ๋ช (Specular Light) :
ํน์ ๋ถ๋ถ์ด ์ง์ค์ ์ผ๋ก ๋ฐ์ฌ๋๋ ๋น
OpenGL์์ ์กฐ๋ช ์ ์ค์
โผ ๊ด์(Light Source)์ ์ค์ : glEnable(GL_LIGHT0) ํจ์๋ก ๋ชจ๋๋ฅผ ์ง์ ํ ํ, glLight() ํจ์์์ ๊ด์์ ์์น ๋ฐ 3๊ฐ์ง ์กฐ๋ช ์ ์์๊ฐ์ ์ค์
โผ ์กฐ๋ช
ํจ๊ณผ์ ์ค์ : glEnable(GL_LIGHTING)๋ก ๋ชจ๋๋ฅผ ์ง์ ํ๊ณ glLightModel() ํจ์์์ 3๊ฐ์ง ์กฐ๋ช
์ ๋ฐ๊ธฐ์ ๋ํ ์์๊ฐ์ ์ค์
์ฌ์ง(Material)์ ์ค์
โผglEnable(GL_COLOR_MATERIAL)์์ ๋ชจ๋๋ฅผ ์ง์
โผglColorMaterial() ๋๋ glMaterial()์์ ์ฌ์ง์ ์ข
๋ฅ ๋ฐ ํด๋นํ๋ ๊ฐ์ ์ค์
โผDiffuse Reflection, Ambient Reflection, Specular Reflection, Shininess, Emission, ๋ฑ
๐ ๋์คํฐ ๊ทธ๋ํฝ์ค์ ํ ์ค์ณ ๋งคํ(Texture Mapping)
OpenGL์์ ๋์คํฐ ์ด๋ฏธ์ง์ ์ข ๋ฅ
โผ๋นํธ๋งต(Bitmap) : ๊ฐ ๋นํธ์ ๊ฐ์ด 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ํ๋ฐฑ ์ด๋ฏธ์ง
โผํฝ์ค๋งต(Pixmap) : ๊ฐ ํฝ์ ์ด ์์๊ฐ์ ๊ฐ๋ ์ปฌ๋ฌ ์ด๋ฏธ์ง
๋์คํฐ ์ด๋ฏธ์ง๋ฅผ ๋ฒํผ์ ๊ทธ๋ฆฌ๊ธฐ
glRasterPos2i(x, y); // ์ด๋ฏธ์ง์์ ์ํ๋ ๋์คํฐ ์์น๋ฅผ ์ง์
glBitmap(width, height, x0, y0, xi, yi, *data); // ์ ์๋ ๋นํธ๋งต์ ์ถ๋ ฅ
glDrawPixels(width, height, format, type, *pixels); // ์ ์๋ ํฝ์ค๋งต์ ์ถ๋ ฅ
๋์คํฐ ํฝ์ ๋ค์ ์ฝ๊ฑฐ๋ ์ ์ฅ ๋๋ ๋ณต์ฌ
glReadPixels(), glPixelStore(), glCopyPixels()
ํ ์ค์ณ ๋งคํ(Texture Mapping)
์ฌ์ง์ด๋ ์ง๊ฐ์ ๋ํ๋ด๋ ์ด๋ฏธ์ง๋ฅผ 3์ฐจ์ ๋ฌผ์ฒด์ ํ๋ฉด์ ์ ํ๋ ์์
โผ1D ํ ์ค์ณ ๋งคํ : glTexImage1D(), ํ ์ค์ณ ์ด๋ฏธ์ง์ ํญ์ด๋ ๋์ด ์ค ํ๋๋ง ์ง์
โผ2D ํ ์ค์ณ ๋งคํ : glTexImage2D(), ์ด๋ฏธ์ง์ ํญ๊ณผ ๋์ด๋ฅผ ๋ชจ๋ ์ง์
*ํ
์ค์ณ ๋งคํ์ ์
๐ ๋ธ๋ ๋ฉ(Blending) ๋ฐ ์๊ฐ ํจ๊ณผ(Fog Effect)
๋ธ๋ ๋ฉ : ๋ ๊ฐ์ง ์์์ ์๋ ๊ธฐ๋ฅ
ํฌ๋ช ํ ๋ฌผ์ฒด, ํ๋ฆฟํ ์์์ ๊ทธ๋ฆผ์, ์คํฐ์จ๋ฆฌ์ด์ฑ ํจ๊ณผ ๋ฑ์ด ๊ฐ๋ฅ
OpenGL์์ ๋ธ๋ ๋ฉ์ ๊ตฌํ
glEnable(GL_BLEND)๋ก ๋ชจ๋ ์ค์ ํ, glBlendFunc(source, destination)์์ ๊ฐ์ ์ง์
์๊ฐํจ๊ณผ(Fog Effect)
ํจ์ glFog(pname, param)๋ฅผ ๋ณ๋๋ก ์ ๊ณต
*๋ธ๋ ๋ฉ์ ์ด์ฉํ์ฌ ๊ทธ๋ฆฐ ํฌ๋ช ํ ์ฃผ์ ์์ ๊ทธ๋ฆผ์
๐ ๊ณก๋ฉด ๊ทธ๋ฆฌ๊ธฐ
GLU์์ ์ง์ํ๋ 2์ฐจ๊ณก๋ฉด(Quadric Surfaces) ํจ์
โผ์๊ธฐ๋ฅ gluCylinder(), ์ํ gluDisk(), ๊ตฌ gluSphere()
โผ์๋ฟ์ gluCylinder() ์์ ํ์ชฝ ๋ฉด์ ๋ฐ์ง๋ฆ์ 0.0์ผ๋ก ์ง์
*OpenGL์์ 2์ฐจ๊ณก๋ฉด ๊ทธ๋ฆฌ๊ธฐ ํจ์
โผ๋ฒ ์ง์ด ๊ณก์
glMap1f() ํจ์๋ก ์ ์ด์ ์ ์ ์ํ๊ณ , glEvalCoord1f() ํจ์๋ก ๊ทธ๋ฆฐ๋ค.
โผ๋ฒ ์ง์ด ๊ณก๋ฉด
์ ์ด์ ์ glMap2f()๋ก, ๊ฒฉ์๋ glMapGrid2f(), ๋ฉ์ฌ๋ glEvalMesh2() ํจ์ ์ด์ฉ
โผNURBS(Non-Uniform Rational B-Spline) ๊ณก์
glMap1f() ํจ์๋ก ๊ณก์ ์ ์ ์ด์ ์ ์ ์ํ๊ณ , gluNurbsCurve()๋ก ๊ทธ๋ฆฐ๋ค.
โผNURBS ๊ณก๋ฉด
glMap2f()๋ก ์ ์ด์ ์ ์ ์ํ๊ณ , gluNurbsSurface() ํจ์๋ก ๊ณก๋ฉด์ ๊ทธ๋ฆฐ๋ค.
๐3.3 ๋ฒกํฐ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด
๐ ๋ฒกํฐ ๊ทธ๋ํฝ์ค(Vector Graphics)
๋ชจ๋ ๊ทธ๋ฆผ์ ์ ์ด๋ ๋ฉด์ ๊ตฌ์ฑํ๋ ์ขํ์ ํจ์๋ก ํํ
- ํ๋ํด๋ ํ์ง ์ ์ง, ์ ์ฅ์ฉ๋์ด ์์ผ๋ฉฐ, ํ๋ํด๋ ์ ์ฅ์ฉ๋์๋ ๋ณํจ์ด ์๋ค.
๋ํ์ ์ธ ๋ฒกํฐ ๋ฐฉ์์ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด๋ก๋
- ๊ทธ๋ฆฌ๊ธฐ(Drawing) ๋๊ตฌ๋ 3D ๋ชจ๋ธ๋ง ๋ฐ ์ ๋๋ฉ์ด์
๋๊ตฌ
๋๋ถ๋ถ์ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด ๋ฐ ๋ฌธ์ ์ ์๋๊ตฌ์์๋ ๊ธฐ๋ฅ ์ง์
๋ฒกํฐ ๋ฐฉ์์ ์ํํธ์จ์ด์ ์ฃผ์ ๊ธฐ๋ฅ
โผ๊ทธ๋ฆฌ๊ธฐ(Drawing) ๊ธฐ๋ฅ
๋๋ถ๋ถ์ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด ๋ฐ ๋ฌธ์ ์ ์๋๊ตฌ์์๋ ๊ธฐ๋ฅ ์ง์
๊ธฐ๋ณธ ์ถ๋ ฅ์์๋ก ๋ํ์ ๋ชจ์์ ๊ทธ๋ฆฌ๊ธฐ
โผ์ฑ์ฐ๊ธฐ(Filling) ๊ธฐ๋ฅ
๋ํ์ ์์, ํจํด, ๊ทธ๋ผ๋ฐ์ด์ ์ผ๋ก ์ฑ์ฐ๊ธฐ
โผ๋ํ ํธ์ง(Editing) ๊ธฐ๋ฅ
๋ํ์ ์์น, ํฌ๊ธฐ ๋ฐ ์์ฑ์ ์กฐ์
๐ ๋ํ์ ์ธ 2D ๊ทธ๋ฆฌ๊ธฐ ๋๊ตฌ
Illustrator
Adobe์ฌ์์ ๊ฐ๋ฐํ ๊ฐ์ฅ ๋ํ์ ์ธ ๊ทธ๋ฆฌ๊ธฐ ๋๊ตฌ
์ ๊ตํ ๋์์ธ์ด ๊ฐ๋ฅํ๋ฉฐ ๋ณต์กํ ๊ทธ๋ฆผ์ ์์ ๋ฐ ํธ์ง ์์ ์ ํธ๋ฆฌ
ํ์ธํ ๋๊ตฌ ๋ฑ ๋ค์ํ ์ข ๋ฅ์ ์ํํธ์จ์ด์ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ๋ฅ
Painter
Corel์ฌ์์ ๊ฐ๋ฐํ ๊ทธ๋ฆฌ๊ธฐ ๋๊ตฌ
๊ทธ๋ฆฌ๊ธฐ ๊ธฐ๋ฅ, DTP ํธ์ง ๊ธฐ๋ฅ, ์ด๋ฏธ์ง ํธ์ง ๋ฐ ํ์ธํ ๊ธฐ๋ฅ์ด ํจ๊ณผ์ ์ผ๋ก ํตํฉ
Flash professional
Corel์ฌ์์ ๊ฐ๋ฐํ ๊ทธ๋ฆฌ๊ธฐ ๋๊ตฌ
๊ทธ๋ฆฌ๊ธฐ ๊ธฐ๋ฅ, DTP ํธ์ง ๊ธฐ๋ฅ, ์ด๋ฏธ์ง ํธ์ง ๋ฐ ํ์ธํ ๊ธฐ๋ฅ์ด ํจ๊ณผ์ ์ผ๋ก ํตํฉ
๐3.4 ๋์คํฐ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด
๐ ๋์คํฐ ๊ทธ๋ํฝ์ค(Raster Graphics)
๊ทธ๋ํฝ ๊ฐ์ฒด๋ค์ ํํํ๊ณ ์๋ ํฝ์
๋จ์์ ์ฒ๋ฆฌ๊ฐ ๊ธฐ๋ณธ
- ํ์ผ์ ํฌ๊ธฐ๋ ํด์๋์ ๊ทธ๋ฆผ์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐ
- ๊ทธ๋ฆผ์ ํ๋ํ๋ฉด ๊ณ๋จํ์์ด ์ผ์ด๋๊ณ ๊ทธ๋ฆผ์ ํ์ง์ด ๋จ์ด์ง๋ ๋จ์
๋์คํฐ ๋ฐฉ์์ ์ํํธ์จ์ด
- ํ์ธํ
๋๊ตฌ : ๋ฏธ์ ๋๊ตฌ๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ ๊ฒ๊ณผ ์ ์ฌํ ํจ๊ณผ๋ฅผ ์ํ ๋
- ์ด๋ฏธ์ง ํธ์ง ๋๊ตฌ : ์ฌ์ง ์ด๋ฏธ์ง์ ์กฐ์์ด๋ ๋ณํ ๋ฑ์ ์ํ ๋
๋์คํฐ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด์ ์ฃผ์ ๊ธฐ๋ฅ
โผ์น ํ๊ธฐ ๊ธฐ๋ฅ
์ง์ ํ ๋ชจ์๊ณผ ์์์ ๋ถ์ผ๋ก ์์ ๋ก์ด ๋ชจ์์ ๊ทธ๋ฆฌ๊ธฐ
โผ์ด๋ฏธ์ง ํธ์ง ๊ธฐ๋ฅ
์ด๋ฏธ์ง์ ํฝ์ ๊ฐ ๋ณ๊ฒฝ, ๋ค์ํ ํํฐ ์ ์ฉ
โผ๋ ์ด์ด(Layer) ๊ธฐ๋ฅ
๊ตฌ์ฑ์์ ๋จ์์ ๊ฐ๋ณ ํธ์ง์ด ๊ฐ๋ฅ
๐ ๋ํ์ ์ธ ํ์ธํ ๋๊ตฌ ๋ฐ ์ด๋ฏธ์ง ํธ์ง ๋๊ตฌ
Corel Painter
Fractal Design์ฌ์์ ๊ฐ๋ฐํ ๋ํ์ ์ธ ํ์ธํ ๋๊ตฌ
์ค์ธ๊ณ์ ํํ๊ธฐ๋ฒ์ ์ปดํจํฐ์์ ์ฌํํ๋ ๋ฐ ๊ฐ์ฅ ์ ํฉํ ์ํํธ์จ์ด
๋ถ, ์ฐํ, ๋ชฉํ, ์์ฑ, ์ ์ฑ ๋ฌผ๊ฐ ๋ฑ์ ๋ฏธ์ ๋๊ตฌ ํจ๊ณผ๋ฅผ ๋ด๋ ์น ํ๊ธฐ ๊ธฐ๋ฅ ์ ๊ณต
๋ฏธ์ ๋ถ์ผ์ ์ ๋ฌธ๊ฐ๋ค์ด ์ฌ์ฉํ๊ธฐ ํธํ ์ธํฐํ์ด์ค ์ ๊ณต
Adobe Photoshop
Adobe์ฌ์ ์ด๋ฏธ์ง ํธ์ง ๋๊ตฌ, ๊ฐ์ฅ ๋๋ฆฌ ์๋ ค์ง ๋์คํฐ ๋ฐฉ์ ์ํํธ์จ์ด
์ด๋ฏธ์ง์ ๋ณํ, ์์ ์กฐ์ , ํํฐ๋ง, ๋ ์ด์ด ๋ฑ ๊ฐ๋ ฅํ ์ด๋ฏธ์ง ํธ์ง ๊ธฐ๋ฅ
๋๋ถ์ด ํ์ธํ ๊ธฐ๋ฅ๊ณผ ๋ฒกํฐ ๋ฐฉ์์ ๊ฐ๋จํ ๊ทธ๋ฆฌ๊ธฐ ๊ธฐ๋ฅ๋ ์ง์
Paintshop Pro
Jasc Software์ฌ์์ ๊ฐ๋ฐํ ํ์ธํ ๋๊ตฌ
์ฌ์ง ํธ์ง, ์น๊ทธ๋ํฝ, ๋์์์ ์ ๋ฑ ๋ค์ํ ์์ ์ ์๋์ ์ผ๋ก ์ ์ ๋น์ฉ์ผ๋ก ์ํ
๐3.5 3์ฐจ์ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด
๐ 3์ฐจ์ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด์ ์ฃผ์ ๊ธฐ๋ฅ
๋๋ถ๋ถ ๋ฒกํฐ ๋ฐฉ์์ผ๋ก ๊ตฌํ, 3์ฐจ์ ๊ฐ์ฒด์ ๋ชจ๋ธ๋ง ๋ฐ ๋ ๋๋ง ๊ธฐ๋ฅ ์ง์
โผ๋ชจ๋ธ๋ง ๊ธฐ๋ฅ
3์ฐจ์ ๊ณต๊ฐ์์ ๋ฌผ์ฒด์ ๋ชจ์์ ์ ์
โผ๋ ๋๋ง ๊ธฐ๋ฅ
๋ชจ๋ธ๋ง๋ 3์ฐจ์ ๋ฌผ์ฒด์ ์์, ์กฐ๋ช ๋ฐ ์ฌ์ง์ ์ ์ฉํ์ฌ ๊ทธ๋ฆผ์ ์์ฑ
โผ์ ๋๋ฉ์ด์ ๊ธฐ๋ฅ
3์ฐจ์ ๋ฌผ์ฒด์ ์์ง์์ ์๊ฐ ๋จ์๋ก ํคํ๋ ์์ ์ค์
๐ ๋ํ์ ์ธ 3์ฐจ์ ๊ทธ๋ํฝ์ค ์ํํธ์จ์ด
3ds Max
AutoDesk์ฌ์ ๊ณ์ด์ฌ์ธ Kinetix์ฌ์์ ๊ฐ๋ฐ
๊ฒ์, ์ํ, ์น ๋์์ธ, ๊ฐ์ํ์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ
๋น๊ต์ ๋ฎ์ ๊ฐ๊ฒฉ์ ๋์ ์์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ผ๋ฐ PC์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅ
Softimage
AutoDesk์ฌ์ ๊ณ์ด์ฌ์ธ Kinetix์ฌ์์ ๊ฐ๋ฐ
๊ฒ์, ์ํ, ์น ๋์์ธ, ๊ฐ์ํ์ค ๋ฑ ๋ค์ํ ๋ถ์ผ์์ ์ฌ์ฉ
๋น๊ต์ ๋ฎ์ ๊ฐ๊ฒฉ์ ๋์ ์์ค์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ณ ์ผ๋ฐ PC์์๋ ์ฌ์ฉ์ด ๊ฐ๋ฅ
Maya
Alias System์ฌ์์ ๊ฐ๋ฐ๋์๊ณ ํ์ฌ Autodesk์ฌ์์ ์์ ํ๊ณ ์๋ ๊ทธ๋ํฝ ์ํํธ์จ์ด๋ก, Softimage์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๊ฒฝ์์
๊ณ ๊ฐ์ ์ ํ์ด๋ฏ๋ก ๋ํ ํ๋ก์ ํธ์์ ์ฃผ๋ก ์ฌ์ฉ
์ ๊ตํ ๋ชจ๋ธ๋ง ๊ธฐ๋ฅ์ด ํ์
๋ ํนํ ์บ๋ฆญํฐ ์ ๋๋ฉ์ด์ , ๋ค์ด๋๋ฏน ๋ก๊ณ , ์ ์ฐจ์ ์ธ ๋ชจ๋ธ๋ง์ด ๊ฐ๋ฅ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ผcomputer_graphics/ chap 03.OpenGL_์์ฉ ์ํํธ์จ์ด), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@soltrawberry0707/computergraphics-chap-03.OpenGL์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค