공부/Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문 (25) 썸네일형 리스트형 [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 16 - 전역 조명과 텍스처링 [2/2] 16.3 환경 매핑 16.3.1 큐브 매핑 다음 그림과 같이 주변 환경을 반사하는 매끄러운 물체를 렌더링하는 기법이 환경 매핑(environment mapping)이다. 이를 위해 첫 번째로 해야 할 일은 환경맵(environment map)이라고 불리는 텍스처에 주변 환경의 영상을 담는 것이다. 가장 많이 쓰이는 환경맵은 큐브맵(cube map)이다. 이 정육면체의 여섯 개 면 각각을 향해서 수직과 수평 방향으로 모두 90˚의 시야각(field of view)을 설정해 사진을 찍거나 렌더링을 수행하면 여섯 개의 정사각형 이미지를 얻을 수 있다. 물체 표면의 점 p가 주변 환경을 반사하도록 만들기 위해서, 카메라로부터 p를 향해 광선 $I$를 발사하고 이를 추적한다. $I$는 p의 표면 노멀 n을 기준으.. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 16 - 전역 조명과 텍스처링 [1/2] 조명 모델은 일반적으로 지역 조명(local illumination)과 전역 조명(global illumination) 두 가지로 구분된다. 퐁 모델은 지역 조명 모델인데, 이는 조명 대상인 물체의 표면 재질과 광원의 속성만 이용해 해당 표면의 색상을 결정할 뿐, 같은 공간에 있는 다른 물체는 고려하지 않는다. 퐁 모델로 $S_2$를 라이팅할 때, $S_1$은 전혀 고려되지 않는다. 따라서, 그림에서 확인할 수 있듯이, 마치 $S_1$이 존재하지 않는 것처럼 $S_2$는 빛을 받는다. 퐁 모델은 물리학적으로 올바르지 않은 모델이다. 16.1 전역 조명 모델 컴퓨터 그래픽스 역사 초기에 제안된 전역 조명 기법은 광선 추적법(ray tracing)과 래디오 시티(radiosity)인데, 이들은 현재에도 여전.. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 15 - 쉐도우 매핑 렌더링된 영상의 시각적 사실감을 높이는 데 있어 그림자는 필수불가결한 항목이다. (a)에서 캐릭터와 지면 간 상대적인 위치는 명확하지 않는 반면, (b)에서는 캐릭터가 지면에 착지하는 중임을 쉽게 알아낼 수 있다. 15.1 두 단계 렌더링 쉐도우 매핑 알고리즘은 두 번의 렌더링 패스(rendering pass)를 통해 수행된다. 첫 번째 패스에서는 쉐도우맵(shadow map)이라는 특수한 텍스처를 생성한다. (a)는 광원에서 나온 빛이 미치는 표면은 굵은 선으로 표시되었다. 이들 표면을 균일하게 샘플하여, 각 샘플점 $p$마다 광원까지의 거리를 쉐도우 맵에 저장한다. 이 거리를 $z$로 표기하는데, 이는 광원에서 본 3차원 장면의 깊이다. (Z Buffer) 따라서, 쉐도우맵은 광원 기준의 깊이맵(de.. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 14 - 노멀 매핑 [2/2] 노멀 매핑을 사용하지 않을 경우, 모든 프래그먼트의 노멀은 z축을 향하는 단위 벡터인 (0, 0, 1)로 고정된다. 노멀 매핑을 사용하는 경우, 프래그먼트의 노멀은 모두 노멀맵에서 읽어오는데, 이 노멀은 (0, 0, 1)을 이쪽저쪽으로 조금씩 '흔들어 놓은' 벡터일 것이다. 인접한 프래그먼트라 하더라도 다른 방향의 노멀을 가질 수 있고, 이에 따라 쉐이딩 결과는 매우 불규칙하게 되어 그림 하단과 같은 영상을 얻게 된다. 노멀 매핑은 기초 표면 자체를 오돌토돌하게 바꾸는 게 아니라 노멀을 사용하여 오돌토돌한 표면을 '흉내' 내는 것임을 이해해야한다. 위 그림의 하단 렌더링 결과를 보면 테두리가 일직선임을 발견할 수 있는데, 이 같은 한계는 피할 수 없다. 14.4 탄젠트 공간 노멀 매핑 텍스처링은 물체 표.. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 14 - 노멀 매핑 [1/2] (d)에서 세 개의 점 a, b, c에서의 디퓨즈 반사를 보면 이는 노멀 $n$과 빛 벡터 $l$에 의해 결정되는데, b의 경우 $n$과 $l$ 사이 각도가 작아서 빛을 많이 받아 밝게 보인다. 하지만, a와 c는 $n$과 $l$ 사이 각도가 커서 빛을 적게 받고 어두워 보인다. 표면 전체에 걸쳐 이처럼 노멀이 불규칙하게 변하므로, 표면 밝기도 불규칙하게 변해서 오돌토돌한 표면을 잘 표현해 준다. 하지만 폴리곤 메시의 해상도가 너무 높은 고해상도 메시는 처리에 많은 시간이 소요된다. 빠른 연산을 위해 삼각형 두 개로 구성된 메시를 사용하였지만, 이런 메시로는 오돌토돌한 표면을 잘 표현할 수 없다. (d)를 보면 a에서 b를 거쳐 c로 갈 때, $n$과 $l$ 사이의 각도는 서서히 작아져서 점차 밝아보이게.. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [4/4] 13.4 역기구학 정기구학(forward kinematics)은 로봇 팔의 관절 각도를 입력으로 받아 말단 장치의 위치 및 방향을 결정한다. 이러한 작업의 역(逆)순을 역기구학(inverse kinematics; 이하 IK로 약칭)이라 한다. 즉, 목표로 하는 말단 장치의 위치 및 방향이 입력으로 주어지면, 이 목표를 달성하기 위해 필요한 각 관절의 각도를 계산한다. 로봇 분야에서 개발된 IK는 캐릭터 애니메이션에도 유용하게 사용된다. 로봇 분야에서는 미분 방정식을 풀어서 IK 해를 구하는데, 이는 복잡한 계산 과정을 거치고 연산 시간이 많이 든다는 단점이 있다. 실시간 응용 분야에서는 이를 대신하는 간단한 알고리즘이 널리 사용되는데, 이 절은 그 중 두 가지 기법을 소개하고 있다. 13.4.1 해석적 .. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [3/4] 13.3 스키닝 캐릭터의 폴리곤 메시를 피부(skin)라고도 부르는데, 이 챕터는 골격 움직임에 따라 어떻게 피부를 부드럽게 변형하는지 다룬다. (b)는 a가 위팔에 속하고 b와 c는 아래팔에 속한다고 가정했을때, 두 팔이 회전했을 때의 결과를 보여준다. 결과인 변형된 피부는 부드럽지 않다. 이러한 문제는 한 정점은 오직 하나의 뼈에 속한다는 제약 때문에 문제가 발생한 것 이다. 여러 개의 뼈가 한 정점에 영향을 주도록 하고 그 결과를 블렌딩(blending)하면 이 문제는 상당히 완화될 수 있다. 각 뼈가 한 정점에 얼마나 영향을 주는지 미리 정해줘야 하는데, 이를 블렌딩 가중치(blending weight) 혹은 간단히 가중치라 부른다. (d)를 보면 $a_u'$와 $a_f'$에 각각 0.7과 0.3.. [Open GL ES를 이용한 3차원 컴퓨터 그래픽스 입문] 챕터 13 - 캐릭터 애니메이션 [2/4] 13.2 정기구학 각 정점은 자신이 속한 뼈에 의해 움직이는데, 오른쪽 그림은 아래팔(foream)이 회전함에 따라 $v_5$도 회전한 것을 보여준다. 이렇게 애니메이션이 완료된 정점을 렌더링에 사용하기 위해서는 이를 다시 캐릭터 공간으로 변환해야 한다. 그래야 애니메이션 포즈의 캐릭터 전체가 GPU 파이프라인을 따라 월드 변환, 뷰 변환 등을 거쳐서 최종적으로 스크린에 렌더링될 것이다. $v_5$에 애니메이션을 적용 그 결과를 캐릭터 공간으로 옮기는 변환이 필요하다. 이를 $M_5,a$라 표기하자. 오른쪽 그림에서 아래팔은 90도 회전했다. 이는 아래팔의 뼈 공간의 원점인 팔꿈치를 중심으로 한 회전이다. 이러한 지역적인(local) 특성을 반영하여 이를 지역 변환(local transform)이라 부르.. 이전 1 2 3 4 다음