일상 기록,생각들

2018 3월15일

JinFluenza 2018. 3. 15. 23:48

오늘은 집에 손님들이 오셔서 도서관에 잠시 갔다왔다.


정렬관련 알고리즘들을 좀 봤다.


합병정렬(merge sort) 이라는 개념이 있었는데 이미 정렬된 것들을 모아서 다시 정렬하는 것이란다.


이게 아마 외부정렬에서 사용하는게 아닌지 싶었고.


힙정렬이라는 간결하고 강력한 정렬 방법도 있었다. 오오.. 하면서 본것 같다.


최근에 이론적인 부분들을 많이 보고 있는데, 바로 써먹는 것들이 아닌 이론은 어떻게 보면


지루하고 따분하기도 하다. 하지만 이것들이 나중에 뼈가되고 살이된다는 것을 나는 잘 알고 있다.



예전에 학원에서 DirectX를 배우던 시절에, 이론적인 것들을 배우면서 느꼈던 것들이 있었다.


당시에 학원 선생님들 마다 스타일이 달라서 배우는 것들에  차이가 있었는데


우리반 같은 경우는 완성된 것을 배우기 보다는 아주 기초적인 것들을 처음부터 직접 만들어 가면서 했다.


맨처음에는 벡터,행렬 클래스를 구현하고,  연산까지 직접 구현 했었던것 같다. 


역행렬도 직접 구현해보고 지금생각해보면 어떻게 했던건지 싶다 .,ㅠ


그리고는 Windows API를 이용해서 2D화면에 직접 렌더링 파이프라인을 만들고 점들을 찍어서 큐브를 띄웠었고.


그 원리 그대로 DIrectX상에서 똑같이 큐브를 띄우고, UV좌표를 하나하나 넣어가며 마인크래프트 캐릭터 텍스쳐


를 맵핑하던 것도 기억난다.


3D캐릭터도 직접 파싱하고.. 애니메이션 파일도 파싱해서 직접 캐릭터 애니메이션도 적용해 보고 별걸 다했던것 


같다. (매일매일 나오는 숙제에 머리가 터질것 같았다..)


백스페이스 컬링, 프러스텀 컬링같은 것들도 직접 공식을 적용해 가며 만들어 봤었다.


이런 이론적인 것들만 하면서 당시에 다른반이 조금 부럽기도 했다. 우리반은 이론 같은 것만 맨날 하는데 


다른반 하는것을 보면 사용만 하면 뭔가 뚝딱뚝딱 화려하게 나왔었다.(트레일 렌더러 라던지, 그림자 라던지..)


포트폴리오를 만들때도 다른반은 그림자도 있고, 쉐이더도 적용돼있어서 뭔가 화려하고 세련된 모습이었고,  


우리것은 조금 투박하긴 했었던것 같다. 


하지만 이때 몸으로 체득 했던 기본적인 원리들은 지금도 가끔씩 도움이 된다. 


뭐 예를들자면 셰이더에서 앞면이 아니고 뒷면만 보이게 하려면 뭘 처리 해줘야 하는지,


텍스쳐에서 UV값을 건드는 것들이 어떤 의미인지, 유니티 자체적으로 하는 프러스텀 컬링이 어


떤식으로 돌아가고, 어떤 계산을 하는지 같은 것들을 이해하는데 많은 도움이 된다.


지금 공부하고 있는 기본적인 알고리즘들도 나중에 갔을때 마찬가지로 많은 힘이 될 것이라고 생각한다. 


조금은 지루하고 따분하더라도 열심히 하자!




-찾아보니 예전에 했던 숙제들을 스크린샷으로 찍어놨었다.

(백스페이스 컬링)


(프러스텀 컬링)



(행렬 클래스)


어떻게 했던거지..?