Notice
Recent Posts
Recent Comments
Link
관리 메뉴

λͺ©λ‘μ „체 κΈ€ (1099)

KoreanFoodie's Study

[OpenGL ES] 13κ°• : μŠ€μΌˆλ ˆν†€(Skeleton), Bone Space, Skinning, Forward Kinematics, Inverse Kinematics

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. 캐릭터 μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•  λ•ŒλŠ” 일반적으둜 μŠ€μΌˆλ ˆν†€μ„ 많이 μ‚¬μš©ν•œλ‹€. 각 λΌˆλŠ” μ„œλ‘œ λΆ€λͺ¨ μžμ‹ 관계λ₯Ό λ§Ίκ³  있으며 λΌˆμ— μžˆλŠ” 각 vertex λŠ” ν•΄λ‹Ή 뼈의 Bone Space 에 μ •μ˜λœ μ’Œν‘œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. 2. Forward Kinematics λŠ” Skeleton 의 Hierarchy μ—μ„œ λΆ€λͺ¨λ‘œλΆ€ν„° μžμ‹κΉŒμ§€, Top-Down traversal λ°©μ‹μœΌλ‘œ μ›€μ§μž„μ„ μ μš©ν•˜λŠ” 방식이닀. 각 λΌˆκ°€ λ…λ¦½μ μœΌλ‘œ 움직인닀고 κ°€μ •ν•˜κ³ , ν•΄λ‹Ή Bone Space μ—μ„œ Character Space..

Game Dev/OpenGL ES 2023. 4. 26. 02:02
[OpenGL ES] 12κ°• : Object Picking, Ray Intersection, Bounding Volume, Arcball

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. 였브젝트 ν”Όν‚Ή(Object Picking)을 ν•˜λ©΄, 슀크린 μŠ€νŽ˜μ΄μŠ€μ—μ„œ Ray λ₯Ό z μΆ• λ°©ν–₯ μ•ˆμͺ½μœΌλ‘œ 쏜 λ‹€μŒ, 처음으둜 λΆ€λ”ͺνžˆλŠ” 였브젝트λ₯Ό μ„ νƒλ˜μ—ˆλ‹€κ³  μΈμ‹ν•œλ‹€. 이 Ray λ₯Ό Object Space 둜 λ°”κΎΈκΈ° μœ„ν•΄ 3번의 λ³€ν™˜(Screen -> Camera -> World -> Object)을 진행해야 ν•œλ‹€(각 Ray 에 λŒ€ν•΄ Object λ³„λ‘œ Ray κ°€ 생성) 2. 였브젝트 ν”Όν‚Ήμ—λŠ” Ray Intersection(폴리곀 λ©”μ‹œμ—μ„œ Ray κ°€ μ‚Όκ°ν˜• μ•ˆμ— μžˆλŠ”μ§€ 체크) κ³Ό Boun..

Game Dev/OpenGL ES 2023. 4. 26. 01:42
[OpenGL ES] 11κ°• : 였일러 λ³€ν™˜(Euler Transform) κ³Ό μΏΌν„°λ‹ˆμ–Έ(Quaternion)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. 였일러 λ³€ν™˜μ€ μ£Ό μΆ•(Principal Axes)을 κΈ°μ€€μœΌλ‘œ 일정 κ°λ„μ˜ νšŒμ „μ„ μ—°μ†μ μœΌλ‘œ μ μš©ν•  λ•Œ μ‚¬μš©ν•  수 μžˆλ‹€. 그런데 였일러 λ³€ν™˜μ˜ 결과값은 κ΅ν™˜λ²•μΉ™μ΄ μ„±λ¦½ν•˜μ§€ μ•ŠλŠ”λ‹€. 2. ν‚€ν”„λ ˆμž„ 보간을 ν•  λ•Œ, 였일러 λ³€ν™˜μ€ μ–΄μƒ‰ν•œ κ²°κ³Όλ₯Ό 보여쀄 수 μžˆλŠ”λ°, 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μΏΌν„°λ‹ˆμ–Έμ„ μ‚¬μš©ν•œλ‹€. μΏΌν„°λ‹ˆμ–Έμ€ μ‚¬μ›μˆ˜λ₯Ό μ΄μš©ν•œλ‹€. 3. μΏΌν„°λ‹ˆμ–Έμ„ μ΄μš©ν•˜λ©΄ μž„μ˜μ˜ 좕에 λŒ€ν•΄ 𝛉 만큼의 κ°λ„λ‘œ 점/벑터λ₯Ό νšŒμ „μ‹œν‚€λŠ” νšŒμ „ 행렬을 μ‰½κ²Œ λ§Œλ“€μ–΄ λ‚Ό 수 μžˆλ‹€(qpq*). 그리고 μΏΌν„°λ‹ˆμ–Έ μ‚¬μ΄μ˜ 보..

Game Dev/OpenGL ES 2023. 4. 24. 02:02
[OpenGL ES] 10κ°• : 좜λ ₯ 병합(Output Merger), 색상 버퍼(Color Buffer), 깊이 버퍼(Depth Buffer)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€.μš”μ•½ : 1. 좜λ ₯ 병합 λ‹¨κ³„μ—μ„œλŠ” Fragment Shader λ₯Ό 톡해 전달받은 픽셀을 보여쀄지 말지, ν˜Ήμ€ μ–΄λ–»κ²Œ 보여쀄지λ₯Ό κ²°μ •ν•œλ‹€. μ΄λ•Œ 3 κ°€μ§€μ˜ 버퍼λ₯Ό μ‚¬μš©ν•œλ‹€(Color Buffer, Depth Buffer, Stencil Buffer) 2. Z-buffering 을 μ΄μš©ν•΄ z 값을 μ΄μš©ν•œ 컬링을 슀크린 μŠ€νŽ˜μ΄μŠ€μ—μ„œ μˆ˜ν–‰ν•  수 μžˆλ‹€. μ΄λ•Œ, μ–΄λ–€ 물체λ₯Ό λ¨Όμ € λ Œλ”λ§ν•˜λŠ”μ§€μ™€ 관계없이 결과값은 λ™μΌν•˜λ‹€. 3. μ•ŒνŒŒ λΈ”λ Œλ”©(Alpha Blending) 을 μ΄μš©ν•˜λ©΄ 투λͺ…ν•œ μ˜€λΈŒμ νŠΈλ“€μ΄ 겹쳐져 ..

Game Dev/OpenGL ES 2023. 4. 20. 22:42
[OpenGL ES] 9κ°• : λΌμ΄νŒ…, 퐁 λͺ¨λΈ(Phong Model), λ‚œλ°˜μ‚¬(Diffuse), μ •λ°˜μ‚¬(Specular), μ£Όλ³€κ΄‘(Ambient), 자체 λ°œκ΄‘(Emissive)

이 κ°•μ˜λŠ” μœ νˆ¬λΈŒμ— 무료둜 κ³΅κ°œλ˜μ–΄ μžˆλŠ” ν•œμ •ν˜„ κ΅μˆ˜λ‹˜μ˜ 컴퓨터 κ·Έλž˜ν”½μŠ€ κ°•μ’Œλ₯Ό μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ κ°•μ˜λ₯Ό 직접 λ“€μœΌμ‹œκ±°λ‚˜ 책을 κ΅¬μž…ν•˜μ…”μ„œ 확인해 λ³΄μ„Έμš”. κ°•μ˜ μžλ£ŒλŠ” κΉƒν—™ 링크에 μ˜¬λΌμ™€ μžˆμŠ΅λ‹ˆλ‹€. μš”μ•½ : 1. Fragment Shader λŠ” Texturing κ³Ό Lighting 을 μˆ˜ν–‰ν•˜λŠ”λ°, Lighting 의 λŒ€ν‘œμ μΈ λͺ¨λΈλ‘œλŠ” 퐁 λΌμ΄νŒ… λͺ¨λΈ(Phong Lighting Model 이 μžˆλ‹€). 2. 퐁 λΌμ΄νŒ… λͺ¨λΈμ—μ„œ, 빛은 4 κ°€μ§€μ˜ μš”μ†Œλ₯Ό λ”ν•œ ν–‰λ ¬λ‘œ ν‘œν˜„λœλ‹€ : Diffuse(λ‚œλ°˜μ‚¬), Specular(μ •λ°˜μ‚¬), Ambient(μ£Όλ³€κ΄‘), Emissive(자체 λ°œκ΄‘). 3. Specular 에 ν•„μš”ν•œ View λ²‘ν„°μ˜ 경우, Vertex Shader κ°€ μ›”λ“œ κ³΅κ°„μ—μ„œ κ΅¬ν•œ View 벑..

Game Dev/OpenGL ES 2023. 4. 20. 01:48
[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