Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘2023/04 (19)

KoreanFoodie's Study

[OpenGL ES] 5κ°• : λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈ, 카메라 곡간, λ·° λ³€ν™˜(View Transform), 였λ₯Έμ† μ’Œν‘œκ³„μ™€ 왼손 μ’Œν‘œκ³„, μ ˆλ‘μ²΄

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ€ 크게 λ‹€μŒκ³Ό 같은 μˆœμ„œλ‘œ μ§„ν–‰λœλ‹€ : Vertex Shader -> Rasterizer -> Fragment Shader -> Output Merger 2. Vertex Shader λŠ” 각 정점에 λŒ€ν•œ 정보λ₯Ό μ±„μ›Œ Rasterizer 둜 μ „λ‹¬ν•œλ‹€. Vertex Shader 의 역할은 였브젝트 κ³΅κ°„μ—μ„œ μ›”λ“œ 곡간(World Transform)으둜, μ›”λ“œ κ³΅κ°„μ—μ„œ 카메라 곡간(View Transform)으둜, λ§ˆμ§€λ§‰μœΌλ‘œ 카메라 κ³΅κ°„μ—μ„œ 클립 곡간(Projection T..

Game Dev/OpenGL ES 2023. 4. 14. 03:30
[OpenGL ES] 4-2κ°• : μ›”λ“œ 곡간, 였브젝트 곡간, 였일러 λ³€ν™˜, μž„μ˜μ˜ 좕에 λŒ€ν•œ νšŒμ „

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. 였브젝트 κ³΅κ°„μ—μ„œ μ •μ˜λœ λ¬Όμ²΄λŠ” μ•„ν•€ λ³€ν™˜μ„ μ΄μš©ν•΄ μ›”λ“œ 곡간 μ’Œν‘œκ³„μ—μ„œ ν‘œν˜„ν•  수 μžˆλ‹€. 이λ₯Ό World Transform 이라고 λΆ€λ₯Έλ‹€. 2. 였브젝트 κ³΅κ°„μ˜ μΆ• u, v, n 을 μ›”λ“œ κ³΅κ°„μ˜ μΆ• x, y, z 둜 맞좰주렀면, u, v, n 을 Transpose μ‹œν‚¨ 행렬을 κΈ°μ‘΄ 였브젝트 μΆ• 행렬에 κ³±ν•΄ μ£Όλ©΄ λœλ‹€. 3. μž„μ˜μ˜ 좕에 λŒ€ν•œ 행렬도 2번과 λ§ˆμ°¬κ°€μ§€λ‘œ μ§„ν–‰ν•˜λ©΄, μ’Œν‘œκ³„ μ‹œμŠ€ν…œμ„ μ‰½κ²Œ λ³€ν™˜ν•  수 μžˆλ‹€! μ›”λ“œ 곡간과 였브젝트 곡간 μ˜€λΈŒμ νŠΈκ°€ μ •μ˜λœ μ’Œν‘œκ³„ μ‹œμŠ€ν…œμ„ μš°λ¦¬λŠ”..

Game Dev/OpenGL ES 2023. 4. 12. 13:25
[OpenGL ES] 4-1κ°• : λ²‘ν„°μ˜ νšŒμ „κ³Ό λ³€ν™˜, μ•„ν•€λ³€ν™˜, 3차원 κ³΅κ°„μ—μ„œμ˜ λ³€ν™˜, λ™μ°¨μ’Œν‘œκ³„(Homogeneous Coordinates)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. μ•„ν•€λ³€ν™˜μ€ Scaling, Rotation, Translation ν–‰λ ¬μ˜ κ²°ν•©μœΌλ‘œ, [L|t] 둜 ν‘œν˜„ν•  수 μžˆλ‹€. 아무리 λ§Žμ€ λ³€ν™˜μ„ 해도 κ²°κ΅­ λ‹¨μΌν•œ [L|t] 둜 ν‘œν˜„ κ°€λŠ₯ν•˜λ‹€! 2. ν–‰λ ¬μ—μ„œ 열을 ν•˜λ‚˜ μΆ”κ°€ν•΄ ν™•μž₯을 μ‹œν‚€λ©΄, Translation 을 행렬을 μ΄μš©ν•΄ ν‘œν˜„ν•  수 μžˆλŠ”λ°, 이렇듯 ν™•μž₯된 ν–‰λ ¬μ˜ μ’Œν‘œκ³„λ₯Ό λ™μ°¨μ’Œν‘œκ³„(Homogeneous Coordinates) 라고 ν•œλ‹€. 3. 원점이 μ•„λ‹Œ 점을 κΈ°μ€€μœΌλ‘œ 물체λ₯Ό νšŒμ „ν•˜λ €λ©΄, κΈ°μ€€ 점을 μ›μ μœΌλ‘œ Translation ν›„,..

Game Dev/OpenGL ES 2023. 4. 12. 00:38
[OpenGL ES] 3κ°• : λͺ¨λΈλ§, 폴리곀 λ©”μ‹œ, ν‘œλ©΄ 법선(Surface Normal), 정점 법선(Vertex Normal)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. κ·Έλž˜ν”½μŠ€μ—μ„œλŠ” 물체λ₯Ό 폴리곀 λ©”μ‹œμ˜ μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•œλ‹€. μ΄λ•Œ ν΄λ¦¬κ³€μœΌλ‘œλŠ” 일반적으둜 μ‚Όκ°ν˜•μ„ μ‚¬μš©ν•œλ‹€. 2. 폴리곀 λ©”μ‹œλ“€μ˜ 정점 μ’Œν‘œμ™€ Normal 은 Vertex Array 의 ν˜•νƒœλ‘œ μ €μž₯ν•œλ‹€. 3. ν‘œλ©΄ 법선(Surface Normal)은 폴리곀 λ©”μ‹œ μ‚Όκ°ν˜•μ˜ Normal 벑터이며, 정점 법선(Vertex Normal) 은 νŠΉμ • Vertex μ—μ„œμ˜ Normal 벑터이닀. λ§€λˆν•œ 물체λ₯Ό ν‘œν˜„ν•  λ•ŒλŠ” Vertex Normal 이 맀우 μœ μš©ν•˜λ‹€.폴리곀 λ©”μ‹œ (Polygon Mesh)폴..

Game Dev/OpenGL ES 2023. 4. 11. 21:02
[OpenGL ES] 2κ°• : λ²‘ν„°μ˜ 내적/외적, μ„ ν˜• 보간(Linear Interpolation)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. μ’Œν‘œκ³„λŠ” Orthonormal ν•œ κΈ°μ € λ²‘ν„°λ‘œ μ •μ˜ν•  수 μžˆλ‹€. 2. 벑터λ₯Ό λ‚΄μ ν•˜λ©΄ μ ˆλŒ“κ°’μ— 코사인 값을 κ³±ν•œ κ²°κ³Όκ°€ λ‚˜μ˜¨λ‹€. 90 도일 경우 0 이닀! 3. μ™Έμ μ˜ 경우, 였λ₯Έμ† λ²•μΉ™μœΌλ‘œ λ°©ν–₯을 ꡬ할 수 μžˆλ‹€. μ™Έμ μ˜ μ ˆλŒ“κ°’μ€ 두 벑터가 λ§Œλ“œλŠ” ν‰ν–‰μ‚¬λ³€ν˜•μ˜ 넓이이닀. μ’Œν‘œκ³„ (Coordinate System and Basis) 와 λ²‘ν„°μ˜ 내적/외적 μ’Œν‘œκ³„λŠ” 원점(origin)κ³Ό κΈ°μ €(basis) 둜 이루어진닀. μœ„μ˜ κ·Έλ¦Όμ—λŠ” 2D 곡간을 μ΄λ£¨λŠ” κΈ°μ € λ²‘ν„°μ˜ 쑰합이 λ‚˜μ™€ μžˆλŠ”λ°, ..

Game Dev/OpenGL ES 2023. 4. 11. 01:19
[OpenGL ES] 1κ°• : κ·Έλž˜ν”½μŠ€ 개둠, λͺ¨λΈλ§, 리깅, μ• λ‹ˆλ©”μ΄μ…˜, λ Œλ”λ§

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. κ·Έλž˜ν”½μŠ€ μž‘μ—… 과정은 λͺ¨λΈλ§ -> 리깅 -> μ• λ‹ˆλ©”μ΄μ…˜ -> λ Œλ”λ§ -> 포슀트 ν”„λ‘œμ„Έμ‹±μœΌλ‘œ λ‚˜λˆ„μ–΄ λ³Ό 수 μžˆλ‹€. 2. μ‹€μ‹œκ°„ κ·Έλž˜ν”½μŠ€μ—μ„œλŠ” μ• λ‹ˆλ©”μ΄μ…˜ μž¬μƒ, λ Œλ”λ§, 포슀트 ν”„λ‘œμ„Έμ‹±μ„ μ²˜λ¦¬ν•œλ‹€. 3. κ²Œμž„μ—”μ§„μ€ κ·Έλž˜ν”½μŠ€ API λ₯Ό μ‚¬μš©ν•˜λŠ”λ°, κ·Έλž˜ν”½μŠ€ API λŠ” GPU λ₯Ό κ°€λ™ν•˜λŠ”λ° ν•„μš”ν•œ μ†Œν”„νŠΈμ›¨μ–΄ μΈν„°νŽ˜μ΄μŠ€λΌκ³  μƒκ°ν•˜λ©΄ λœλ‹€! κ·Έλž˜ν”½μŠ€ 개둠 컴퓨터 κ·Έλž˜ν”½μŠ€μ˜ 연산은 μ˜€ν”„λΌμΈκ³Ό λŸ°νƒ€μž„μœΌλ‘œ λ‚˜λ‰˜λŠ”λ°, modeling κ³Ό rigging, animation μ²˜λ¦¬λŠ” κ·Έλž˜ν”½ μ•„ν‹°μŠ€νŠΈλ“€μ΄ ..

Game Dev/OpenGL ES 2023. 4. 11. 00:08