본문 바로가기

Theory

Simple Polygon 학교 후배가 지원한 회사의 입사 전 문제로 심플 폴리곤 이라는 문제를 주었어요. (절대 심심해서 그런건 아니고) 마침 UML 만들기도 짜증이 울끈 불끈 쏟아 올라서, 잠시 머리 좀 식혀(?!!) 줄 겸사 한번 풀어 보려고 해요. 어차피 OpenGL 관련해서, 이미 구축해 놓은 베이스 엔진도 있겠다, 테스트도 해볼 수 있기에 시도 했어요 :) 문제 자체는 간단해요. 임의의 점들이 주어 지고, 점들을 이어서 선분이 겹쳐지지 않게 하나의 면으로 만들어 주면 끝! 가령, 아래와 같은 모양새겠죠? 일단 이런 문제해결에는 알고리즘을 만들어 줘야 하고, 그에 따른 자료 구조가 필요 하겠죠! 차례대로 나열해 볼게요. 재료 정점들 주어진 문제 그 자체죠. 언어(Language) 저는 C/C++ 유저이므로 사용 하는 언어.. 더보기
텍스쳐 바르기(Texture Mapping) 직역이 참 맛갈나게(음??!) 됐네요:-D 보통은 그냥 텍스쳐 매핑이라고 얘기 한답니다. 3차원 상에서 물체는 수많은 점들의 정보로 이루어 지는 건 앞서 설명 했으니까 알고 있겠죠?ㅎ 그런데 그것만 가지고는 우리가 게임에서 봐오던 예쁜 물체들을 볼 순 없겠죠T^T 그래서 그 위에 보기 좋은 그림을 덧 입힙니다. 예를 들자면, 렌즈를 끼는 거죠. 어떤 렌즈를 끼느냐에 따라 내 눈은 달라 보이겠죠? 더불어 얼굴상 전체가~ 그런데 이 매핑이라는걸 대충 하면 안되겠죠? 도수가 있는 렌즈라면 초점도 안 맞을 테고 보는 이로 하여금 이상해 보일테고... 물체와 텍스쳐의 좌표를 맞춰주는 것이 매핑 하는 거죠. 3D 상에서의 한 면과 텍스쳐의 그림을 좌표 평면에 나타내면 다음과 같이 나타낼 수 있습니다. 그럼 이것을 .. 더보기
빛(Lighting) 이 부분은 서적에서 중요시 다루지 않았네요. 내부적으로 처리 해서 인지, 아니면 다른 기술이 적용 되서 그런 건지는 모르겠지만, 학과에서 배웠던 내용에 기반해서 설명해 볼게요. 우리가 색상을 인지하는 것은 빛이 물체에 "반사" 되어서 특정한 가시광선이 들어오는 것 인데요, 이러한 실세계에서의 것을 컴퓨터로 표현하기에는 굉장한 제한이 따르게 됩니다. 일단 살포시 예시 그림을 보여드릴 게요. 뭐 다양하게 빛이 우리 눈으로 들어오게 되고, 그 때 들어온 빛의 성분에서 어떤 가시광선 색이 더 많이 있느냐를 가지고 해당 물체로 부터 온 색이 뭔지 알 수 있게 되는 것입니다.(태양으로 부터 들어온 빛도 물론 볼 수 있지만, 세기가 너무 강해서 직접 보기는 힘들죠:-D) 그런데 저렇게 수많은 빛의 반사로 부터 파생되.. 더보기
투영(Projection) 실컷 3D의 세계에 대해서 떠들었네요. 그 기본이 되는 수학도 잠시 살펴보고:-D 이제 우리 눈에 보여질 것들에 대해서 설명하려고 합니다. 일단 그 기본이 되는게 projection이죠. 뭐 한글로 구지 풀어쓰자면 투영인데, 어딘가에 비추는 겁니다. 컴퓨터 내부에서 백날 3D로 계산하고 어쩌구 해도 실제 우리 눈에 비춰지는 것은 2D잖아요.(모니터) 뭐 3D모니터는 뭔가요? 라고 물어보시면 어차피 그건 눈속임이지 완전 우리 실생활에 있는 거처럼 3차원으로 보여지고 그런건 아니랍니다. 그런거면 안경이나 다른 3D장비가 왜 나오나요~ 3~ 잡설이 좀 길었네요. 그럼 투영이 뭔지 설명하는 거보다 아래 그림 하나 보는게 더 빠를 거 같아요. 까만색 원이 바라보는 시각인데, 이것을 camera라고 합니다. 카메라.. 더보기
변환(Transformation) 저번 "행렬과 연산" 포스팅에 이은 행렬을 이용한 변환? 변형? (아 뭐라고 해야 할지는 모르겠네요 ;_;) 기법에 대해서 알아 보려고 합니다. 이 포스팅을 하는 목표가 게임엔진 제작을 위한 3D 그래픽에 관련된 부분이라 한 가지 집고 넘어가야 하는 부분이 있습니다. 왜 하필 "행렬"을 이용 할까? 입니다. 알고 싶으신 분들만 보도록 하세요 :-D 최대한 간단하게 설명 한 거 보기 최대한 간단하게 설명 한 거 닫기 컴퓨터에서 보이는 모든 것들에는 "곡선" 이라는게 없습니다. 곡선 처럼 보이는 건 있어도... 이것은 컴퓨터가 처리하는 행동자체 때문이기도 한데, 이 내용을 더욱 심도 있게 공부하시고 싶으신 분은 찾아보세요 :-D, 이 때문에 직선에 대한 처리를 해야 합니다. 직선을 만드는 최소한의 조건은 무.. 더보기