목록Game Dev/OpenGL ES (19)
KoreanFoodie's Study
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. GPU 테셀레이션을 이용해 복잡한 표면을 실시간에 생성할 수 있는데, 대표적으로 변위 매핑(Displacement Mapping) 과 PN-삼각형이 있다. 실제로는 변위 매핑을 많이 사용한다. 2. 먼저, 컨트롤 쉐이더는 패치(patch) 정보를 받아, 테셀레이션을 얼마나 잘게 쪼개 진행할지를 테셀레이터에게 알려준다. 그럼 테셀레이터는 레벨에 맞게 패치를 쪼개 정의역(Domain) 을 생성한다. 생성 쉐이더는 2차원 메시의 각 정점마다 사각형 패치의 한 점을 생성한 후, 하이트 맵(..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 베지어 곡선은, 주어진 정점(control point)을 잇는 곡선이다. 점이 N 개 있을때, N-1 차 베지어 곡선을 만들 수 있는데, 그냥 선형 보간을 여러 번 반복해서 취하면 된다. 이 기법을 드 카스텔조 알고리즘이라고 한다. 2. 테셀레이션은, 컴퓨터가 곡선 및 곡면을 처리하는 방식으로, 베지어 곡선 및 곡면을 작은 선분이나 폴리곤의 조합으로 쪼개는 과정을 의미한다. 간격이 작을 수록 더 매끈한 곡면을 만들 수 있을 것이다. 컨트롤 포인트를 기준으로 선형 보간을 반복하여 패치..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. Phong 라이팅 모델은 local illumination 을 만들어내는 데는 유용하지만, 전역 조명(Global Illumination) 을 자연스럽게 만들어내기 위해서는, 3 가지 추가적인 요소를 고려해야 한다. 즉, 그림자 광선(Shadow Ray), 반사광(Reflection Ray), 굴절광(Transmitted/Refraction Ray) 을 반영해야 한다. 2. 레이 트레이싱 기법은 재귀적으로 Ray 값들을 계산하여 색상을 계산한다. 각 Ray 는 Primary Ray ..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 쉐도우 매핑(Shadow Mapping) 은 그림자를 처리하기 위해 Vertex Shader 에서 light source 로부터 각 surface 점까지의 깊이값과 visibility 값을 저장하는 기법을 의미한다. 2. Pass 1 에서는 각 표면까지의 깊이값 z 를, Pass 2 에서는 실제 점까지의 거리 d 를 저장하여, 이를 비교해서 Shadow 여부를 결정한다. Nearest Sampling 과 Bilinear Interpolation 둘 다 별 도움은 되지 않으므로, PC..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 고해상도 메시에서, 실시간으로 라이팅을 처리하는데는 비용이 많이 들 것이다. 이를 해결하기 위해, 노말 매핑(Normal Mapping) 과 저해상도 메시를 사용하여 효율적으로 그럴듯한 라이팅 효과를 만들어낼 수 있다. 2. 노말 맵을 만드는 대중적인 방법으로는 Height Field 가 있다. 메시에서 한 점에 인접한 4개의 점에서 각 2개의 점씩 직선의 방정식을 만든 다음, 두 직선 벡터에 대해 외적을 취하는 방법이다. 그럼 (x, y) 좌표에 대한 z 의 값을 방정식으로 표현할..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 캐릭터 애니메이션을 구현할 때는 일반적으로 스켈레톤을 많이 사용한다. 각 뼈는 서로 부모 자식 관계를 맺고 있으며 뼈에 있는 각 vertex 는 해당 뼈의 Bone Space 에 정의된 좌표를 가질 수 있다. 2. Forward Kinematics 는 Skeleton 의 Hierarchy 에서 부모로부터 자식까지, Top-Down traversal 방식으로 움직임을 적용하는 방식이다. 각 뼈가 독립적으로 움직인다고 가정하고, 해당 Bone Space 에서 Character Space..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다.요약 : 1. 오브젝트 피킹(Object Picking)을 하면, 스크린 스페이스에서 Ray 를 z 축 방향 안쪽으로 쏜 다음, 처음으로 부딪히는 오브젝트를 선택되었다고 인식한다. 이 Ray 를 Object Space 로 바꾸기 위해 3번의 변환(Screen -> Camera -> World -> Object)을 진행해야 한다(각 Ray 에 대해 Object 별로 Ray 가 생성) 2. 오브젝트 피킹에는 Ray Intersection(폴리곤 메시에서 Ray 가 삼각형 안에 있는지 체크) 과 Boun..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. 오일러 변환은 주 축(Principal Axes)을 기준으로 일정 각도의 회전을 연속적으로 적용할 때 사용할 수 있다. 그런데 오일러 변환의 결과값은 교환법칙이 성립하지 않는다. 2. 키프레임 보간을 할 때, 오일러 변환은 어색한 결과를 보여줄 수 있는데, 이를 해결하기 위해 쿼터니언을 사용한다. 쿼터니언은 사원수를 이용한다. 3. 쿼터니언을 이용하면 임의의 축에 대해 𝛉 만큼의 각도로 점/벡터를 회전시키는 회전 행렬을 쉽게 만들어 낼 수 있다(qpq*). 그리고 쿼터니언 사이의 보..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다.요약 : 1. 출력 병합 단계에서는 Fragment Shader 를 통해 전달받은 픽셀을 보여줄지 말지, 혹은 어떻게 보여줄지를 결정한다. 이때 3 가지의 버퍼를 사용한다(Color Buffer, Depth Buffer, Stencil Buffer) 2. Z-buffering 을 이용해 z 값을 이용한 컬링을 스크린 스페이스에서 수행할 수 있다. 이때, 어떤 물체를 먼저 렌더링하는지와 관계없이 결과값은 동일하다. 3. 알파 블렌딩(Alpha Blending) 을 이용하면 투명한 오브젝트들이 겹쳐져 ..
이 강의는 유투브에 무료로 공개되어 있는 한정현 교수님의 컴퓨터 그래픽스 강좌를 정리한 글입니다. 자세한 내용은 강의를 직접 들으시거나 책을 구입하셔서 확인해 보세요. 강의 자료는 깃헙 링크에 올라와 있습니다. 요약 : 1. Fragment Shader 는 Texturing 과 Lighting 을 수행하는데, Lighting 의 대표적인 모델로는 퐁 라이팅 모델(Phong Lighting Model 이 있다). 2. 퐁 라이팅 모델에서, 빛은 4 가지의 요소를 더한 행렬로 표현된다 : Diffuse(난반사), Specular(정반사), Ambient(주변광), Emissive(자체 발광). 3. Specular 에 필요한 View 벡터의 경우, Vertex Shader 가 월드 공간에서 구한 View 벡..