절두체 컬링 (Frustum Culling)
컴퓨터 그래픽스/DirectX2024. 12. 10. 14:31절두체 컬링 (Frustum Culling)

절두체 컬링이란 절두체 컬링이란 절두체 안에 들어온 물체만 그리겠다는 뜻이다.현재 색이 들어간 물체들은 모두 DrawCall을 호출하고 있다. PixelShader단계 까지 가지만 절두체 밖에 있는 물체들은 그려지지 않는다. '즉 모든 오브젝트가 DrawCall을 호출하기 때문에 절두체 안에 들어와 있는 녀석들만 DrawCall을 호출하게 하여 성능 향상을 도모 하겠다는 것'이다.이렇게 절두체 밖에 있는 오브젝트들은 DrawCall을 아예 호출하지 못하도록 하는 것이다. 구현 방법평면의 방정식과 NDC 공간의 개념만 알고 있으면 어렵지 않다.우선 NDC상의 절두체를 선언해준다. 기억이 나나? 좌상단은 (-1, 1), 우하단은 (1, -1) 가운데가 (0, 0)이다.이렇게 점 8개를 선언해둔다. 이후 해당..

[Animation] 애니매이션을 만들어보기 (정리글)
컴퓨터 그래픽스/DirectX2024. 12. 6. 21:09[Animation] 애니매이션을 만들어보기 (정리글)

게임을 모작하게 되어서 Assimp라이브러리로 모델들을 추출했는데 원하는 애니매이션들이 없어서 직접 만들게 되었고 그 과정을 최대한 간략하게 개념과 함께 정리했다.당연히 기초적인 수준의 애니매이션을 만들었고 기초 지식만을 가지고 응용했다.아래 설명하는 방식은 절대 정답이 아니고 그냥 헤딩해서 터득한 방법과 시행착오들을 '흐름만'정리 해 두었다.코드에 대한 자세한 설명이나 Imgui, Assimp설명은 없다. (너무 길고 힘들다 ㅠ)애니매이션의 기초적인 지식이 없으면 이해하기 힘들다.고려대 그래픽스 강의에서 애니매이션을 꼭 듣기 바라고 내가 쓴 글인 https://cjbworld.tistory.com/75 도 같이 보자 ㅎㅎ;;그냥 이사람은 이런 흐름으로 했구나 정도로 읽어주길 바란다. 흐름 정리우선 본인..

[Animation] 스키닝 애니매이션이란? (Skinning Animation)
컴퓨터 그래픽스/DirectX2024. 11. 10. 14:28[Animation] 스키닝 애니매이션이란? (Skinning Animation)

스키닝 애니매이션이란?스키닝 애니메이션(Skinning Animation)은 3D 컴퓨터 그래픽에서 객체가 자연스럽게 움직이도록 하기 위해 사용하는 애니메이션 기법이다. 3D 모델의 뼈대를 기반으로 정점을 뼈대에 결합시키는 기법이다. 이렇게 개념만 보면 무슨 말인지 모르겠다.그래서 본인이 스스로 공부한 것을 바탕으로 최대한 이해하기 쉽게 정리해보려고한다.(렌더링 파이프라인과정과 좌표계 변환 개념을 잘 이해하지 못하고 있다면 어렵다)모델이란?모델은 여러개의 메쉬들로 이루어진 경우가 많기 때문에 본인은 모델의 정의를 '여러 메쉬들로 이루어진 메쉬의 집합'라 하겠다.  그리기의 단위는 점, 선, 삼각형 순인데 정점 3개가 모이면 '폴리곤(polygon)'이라 부르고 이 폴리곤의 집합을 '메쉬(mesh)'라고 ..

원근 투영 변환 행렬과 투영 변환 행렬의 의미 (수정)
컴퓨터 그래픽스2024. 8. 5. 18:26원근 투영 변환 행렬과 투영 변환 행렬의 의미 (수정)

수정 및 추가된 부분먼저 이전에 원근 투영 변환 행렬에 대해서 조금 잘 못 알고있던 부분을 수정했고 투영 변환 행렬에 대한 정확한 의미?를 추가하였습니다.원근 투영 변환 행렬이란?우선 원근 투영은 인간의 눈과 비슷하게 3차원 공간의 객체를 2차원 평면에 사영(Projection)하여 화면에 나타내는 방식이다. 즉, 3D 뷰 공간(space)으로 부터 2D 뷰포트 공간에 정점들을 변환 하는 행렬을 말한다.근데, 보통 구글링을 하면 3차원 공간에서 바로 2차원 뷰포트로 가는듯이 말을하는 글들이 많은데 중간 과정이 있다.바로 아래와 같이 카메라 시야각(FOV)안에 담긴 물체들을 -1~1크기의 정육면체 안으로 변환한다.NDC좌표계로 변경된 좌표를 이제 뷰포트 매핑을 해주어 화면에 보이게 되는 것이다. 왜 변환을..

[C++] union (DX Matrix)
CPP2023. 9. 4. 12:14[C++] union (DX Matrix)

이번글은 union 키워드에 대한 간단한 글입니다! union union이란? A union is a special class type that can hold only one of its non-static data members at a time. 라고 합니다! 해석하면 한번에 하나의 non-static 데이터 멤버를 가질 수 있다고 합니다. 약간 카멜레온을 생각해주시면 될거같습니다. 어쩔때는 A였다가 어쩔때는 B였다가 하는 식으로요(저는 이렇게 이해했습니다) 아니면 키워드 그대로 '연합체'느낌으로 받아 드리셔도 될거같습니다. 우리는 하나의 연합체다ㅎㅎ 그래서 메모리도 공유한다. 또한 union은 다른 데이터 멤버중에 가장큰 크기를 가지는 데이터 타입의 크기를 할당받습니다. 바로 예시코드를 보면서 이..

image