오늘 정보처리기사 실기 결과가 나와서 합격 후기와 공부 방법을 기록으로 남겨본다. 기출에 비해 난이도가 많이 어려워서 걱정했는데 한번에 끝내서 다행이었다.1회 실기 시험은 4월 20일 일요일에 봤고, 결과가 오늘 나왔다. 일단 나는 컴퓨터공학과 전공 4학년이고, python, c, java 모두 프로그래밍 경험이 어느 정도 있다.알고리즘 문제는 파이썬으로 풀고, 자바로 백엔드 개발을 하고, 학교 과제는 대부분 c 로 나오기 때문에 셋 모두 기본 문법엔 익숙하다.그래서 점점 코딩 문제 난이도가 어려워진다는 요즘 기조에 유리할 것이라고 생각해서 대충 공부해도 되지 않을까 하는 안일한 생각으로 토요일 새벽부터 공부를 시작했다. https://www.coupang.com/vp/products/856087196..
이제 3d 물체를 2d 스크린 좌표계로 변환하는 transformation 을 정리해본다. 좌표계를 변환하는 과정은 위와 같다.먼저 모델 좌표계 (MC) 를 world 좌표계로 변환하고 (WC) 이를 카메라 좌표계로 변환한다. (VC)그리고 카메라 스크린 면으로 정사영을 내린 2차원 좌표계로 변환한다 (PC)이제 스크린 면에서 카메라의 시야각을 고려하여 정규화 및 clipping 과정을 거친 좌표계로 변환하고 (NC)이 좌표계는 -1 ~ 1 사이의 정규화된 좌표값으로 변환된 것이기 때문에 최종적으로 모니터 크기에 맞춰 viewport 에 맞는 좌표계로 변환하면 (DC) 모든 변환이 끝난다. 보통 proejection 과 normalization 부분은 하나로 합치는 경우가 많기 때문에 4번의 변환 단계..
illumination model 은 물체의 색상을 계산하는 방법으로 light model, shading model 등으로도 불린다.대부분의 모델은 단순화하고 추상화하여, 간단한 수식 한 줄로 이루어져 있는 경우가 많다.이렇게 해도 사람 눈에는 비슷하게 보이기 때문이다.우선 텍스쳐 값은 고려하지 않고, 빛과 물체 자체의 색상만 고려하여 계산하는 과정을 따라가보자. 이번 글에서는 Blinn-phong illumination model 에 대해서 정리한다.이 모델은 빛의 반사를 고려한다.반사에는 평면이 매끈하여 입사각과 반사각을 기반으로만 반사하는 정반사와, 평면이 울퉁불퉁하여 여기저기로 빛이 반사되는 난반사가 있다. phong reflection model 에서는 크게 3가지 빛 반사를 고려한다. 1...
scan conversion 은 rasterization 과 같은 말이다. 그래픽스 파이프라인을 보면 3차원 좌표계에 모델링 된 3D 물체가 있다.이 좌표계에는 물체의 각 정점, 정점의 텍스처 값, 면을 구성하는 꼭짓점 값 등의 정보가 있다.이제 이 모델을 2D 화면에서 보는 것과 같아지고도록 좌표변환을 거치면, 각 정점의 2D 이미지상 위치를 얻게 된다. 아직까지는 이미지에서 정점만 찍혀있기 때문에, 이제 정점을 연결하고 면 내부를 채워야한다.이 과정이 Rasterization (scan conversion) 단계이다. 이 단계를 거치고나면 최종적으로 화면에 보여질 2D 이미지가 완성된다. Scan Converting Line먼저 정점이 있을 때 정점을 잇는 선부터 그어보자.선은 그냥 그으면 되는 것..
소프트웨어 개발 단계를 다시 정리해보면 다음과 같다. specification - design - implementation - testing - maintanance 우리는 지금까지 요구사항을 정리하여 use case description 을 만드는 specification커뮤니케이션 다이어그램, 시퀀스 다이어그램, 클래스 다이어그램을 그리는 design, implementation 까지 모두 살펴보았다. 이제 마지막으로 testing 에 대해 정리해보자. Verification & Validation (V & V)중간고사 범위의 글에서 간략하게 정리했던 것처럼 testing 단계는 verification & validation 단계라고도 표현한다. verification (검증) 은 소프트웨어를 s..
Lightening 기본 개념직접광 & 간접광직접광 : direct light, 광원에서 바로 나오는 빛간접광 : indirect light, 광원에서 나온 빛이 주변 환경에 부딪힌 뒤, 흡수되지 못하고 반사되는 일부 빛간접광은 주변을 밝게 하면서 검은 그림자 일부에 영향을 준다. local illumination광원과 물체만 이용하여 빛을 계산하는 방법직접광만 고려하고 간접광, 주변환경, 물체에 의한 그림자 등은 고려하지 않는다.Blinn-Phong illumination 기법이 해당한다. global illumination주변 환경, 간접광, 물체간 상호 반사, 그림자 등까지 고려하여 물체의 밝기를 계산계산량이 많지만 그 만큼 더 사실적인 표현이 가능하다.Ray Tracing, Radiosity 등의..
디자인 패턴은 특정 상황에서 반복적으로 등장하는 문제에 대한 잘 알려진 솔루션이다.디자인 패턴은 말그대로 '패턴' 이기 때문에 이렇게 만들어야겠다 하고 만들어낸 것이 아니라 (not invented)사람들이 자주 사용하는 솔루션들을 발견하여 패턴으로 정리해낸 것이다. (discover) 그렇다고 아무 문제에서 누구나 쉽게 떠올릴 수 있는 솔루션들을 정리한 것은 아니다.디자인 패턴은 어려운 문제에 대해 기발하고 유용했던 솔루션들을 모아서 정리함으로써,비슷한 문제가 발생했을 때 동일한 솔루션을 재사용해서 효율적으로 문제를 풀어나가기 위한 방법이다. 디자인 패턴은 이름, 문제, 해결방법, 예시코드, 연관된 패턴 정보들로 구성되어있다.이름은 그 패턴의 이름만으로 이 패턴이 어떤 문제를 어떻게 해결하려고 하는지를..
Texture Mapping텍스처는 물체 표면의 질감(거침, 부드러움)을 나타내는 무늬를 가진 2차원 배열 이미지를 말한다.이 2D 이미지를 3차원 모델에 입혀서 사실감을 더해주는데 사용되며, 2D 텍스처 이미지를 3D 모델에 입히는 것을 가리켜 texture mapping 이라고 한다.텍스처는 사람이 직접 찍거나, 스캔하는 등의 방식으로 얻어낼 수 있다. 텍스처 매핑 방법은 크게 Non-parametric 방식과 parametric 방식으로 나뉜다.Non-parametric 방식은 배경에 이미지를 두고, 물체에 구멍을 뚫어서 구멍을 통해 보이는 배경으로 텍스처를 간접 매핑하는 방식이다.물체가 이동, 회전해도 배경은 그대로기 때문에 자연스러운 방법은 아니다. 중요한 것은 parametric texture..
지금까지 클래스 단위의 모듈화, 컴포넌트 단위의 모듈화 방법을 정리하였다.이제 단계를 높여서 서브 시스템 아키텍처를 설계해보자. 소프트웨어를 만들 때 requirement 를 모두 찾았다면 제일 먼저 아키텍처를 그려야 한다.'아키텍처' 라고 하면 big picture 를 생각하면 된다.그리고 제일 먼저 서브 시스템과 컴포넌트를 찾아서 이들 사이의 관계 (인터페이스) 를 정의해야 한다. 서브 시스템을 정의해보면 같은 특성을 공유하는 element 의 그룹으로 정의한다.예를 들어 UI 와 같이 사람과 컴퓨터 사이의 인터페이스 역할을 하는 element 를 모으면 'HCI 서브 시스템' 과 같이 분류할 수 있다. 이렇게 서브 시스템을 나누면 몇 가지 장점이 있다.'독립적인' 개발 단위 크기가 줄어들고 comp..
렌더링은 빛과 물체가 있을 때, 관찰자가 현재 물체를 어떻게 보는지를 그려내는 과정이다.3D 모델을 화면에 표시하는 과정은 크게 위와 같다.이번 글부터는 위 단계 중 Lighting 과 Shading 단계를 자세히 살펴본다. Lightening 은 illumination 이라고도 부르며,물체가 빛을 받았을 때, 그 물체의 정점의 색이 어떻게 되는지를 계산하는 과정이다.Shading 은 결정된 정점 색을 기준으로 물체 내부에 색을 입히는 과정이다.(폴리곤의 내부 픽셀 각각의 색을 결정하는 과정) 폴리곤 메시 형태의 모델에 대해 색을 입히는 Polygon Mesh Shading 은 기본적으로 각 폴리곤 면마다 lighting 모델을 적용하여 색을 결정한다.그리고 구체적인 방법에 따라 크게 Flat Shadi..