목록전체 글 (183)
on my way

내적 (스칼라 곱 or 점곱, dot product, inner product) 물체가 빛을 받으면 밝은 부분과, 어두운 부분이 생긴다. 이런 명암을 컴퓨터 그래픽으로 모델링할 때 벡터의 내적 연산이 사용된다. 왼쪽은 렌더링 된 결과물, 오른쪽은 카메라와 물체의 관계를 옆에서 본 모습이다. 파란색 벡터 A,B,C,D는 각 벡터의 법선 벡터이다. 법선벡터 (노말벡터) 어느 표면에 붙어있던 해당 표면에 수직인 벡터이다. 검은색 선은 각 폴리곤으로부터 카메라쪽으로 향하는 벡터를 나타낸 것이다. 그림으로 봤을 때, 두 벡터 사이의 각도가 90도 이하이면 해당 폴리곤은 해당 카메라를 바라보고 있다고 판단할 수 있다. (A, B) 반대로 90도보다 크면 카메라를 등지고 있다고 판단할 수 있다. (C, D) 카메라를..

벡터의 뺄셈 뺄셈을 할 때는 수식에서 그대로 -로 표현하여 덧셈하면 된다. 벡터에 -를 붙인다는 것은, 크기는 그대로 두변서 방향만 반대로 바꾸는 것이다. 즉 B-A는 B+(-A)이다. 벡터의 덧셈이란 시작점의 꼬리에서 끝점의 머리까지 잇는 것이다. 즉, 뺄셈도 방향만 바꾸어 그대로 적용하면 위와같은 C 벡터를 얻을 수 있다. 또한 오른쪽 그림처럼 두 빨간 벡터는 크기와 방향이 같기 때문에 완전히 동일한 벡터이다. 따라서 벡터의 뺄셈은 위처럼 특정 위치에서 다른 위치를 향하는 벡터를 구할 때 사용하면 쉽게 해당 벡터를 구할 수 있다. 게임 프로그래밍에서는 캐릭터를 특정 장소로 움직이도록 만들 때 사용한다. 예를 들어 플레이어를 추적하는 몬스터를 구현할 때 몬스터가 플레이어의 현재 위치를 향해 매 프레임 ..
GLSL (OpenGL Shading Language) a.k.a Shader Shader을 사용하는 이유는? 비주얼적으로 기하학적인 점선면을 넘어서 픽셀 단위로 그라데이션이 뚜렷한 작업을 할 수 있기 때문이다. => 비주얼 프로그래밍이 가능하다. Shader의 종류로는 - Vertex Shaer (정점 쉐이더) - Fragment (픽셀 쉐이더) 두 가지가 있다. 쉐이더는 복잡하지만 빠르다. 이는 CPU와 GPU의 특성으로 이해해볼 수 있다. 비유를 들자면 CPU는 성능이 좋은 하나의 대포이고, GPU는 파괴력이 약하지만 여러 대의 소총 다발이다. CPU는 GPU에 비해 스레드 처리 능력은 훨씬 강력하나, 픽셀 바이 픽셀 (예를 들면 1920*1080일때 이 픽셀을 모두 반복하는) 연산이기 때문에, 일..