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..
물체를 모델링할 때 고려할 특성은 크게 3가지가 있다. 1. Geometric property (기하학적 특성)2. Material property (텍스처, 색상 등)3. Behavior property (애니메이션과 같은 동작) 텍스처와 색상은 다음 글에서 더 자세히 보고, 이번 글에서는 기하학적 특성을 중점적으로 정리한다. Geometric Model기하학적 모델을 만드는 방법은 크게 3가지가 있다. 1. 손수 그리기공간 크기를 직접 계산해서 그리거나, 모델링 툴을 활용해서 직접 조각하여 만들 수 있다. 2. 알고리즘 (Algorithmically) 3. 스캐닝 기하학적 모델을 표현하는 방식은 크게 4가지가 있다. 1. Raw Data2. Surface (표면만 모델링)3. Solid (내부까지 ..
컴퓨터 그래픽스컴퓨터의 도움으로 영상을 창조(create), 조작(manipulate), 저장(store), 표현(display)하는 것영상을 만들고 조작하는 것 뿐만 아니라 저장하고 출력하는 입출력도 포함된 개념이다. 컴퓨터 그래픽스도 다른 컴퓨터 작업과 마찬가지로 어떤 일이 주어졌을 때, 이를 수학적으로 잘 표현한 뒤이를 기반으로 알고리즘 또는 슈도 코드를 작성하는 과정을 거친다. 컴퓨터 그래픽스는 다양한 분야에서 사용된다.게임, 애니메이션과 같은 엔터테이먼트 분야, 시뮬레이션, CAD, 과학 연구의 시각화, 의학, 교육, VR, AR 등에서 활용될 수 있다. 그래픽스의 역사는 1950년대부터 시작되었다.1950년대에는 CRT 디스플레이, 라이트 펜을 이용한 드로잉, 벡터 그래픽의 시대였다.이때 t..
C 라는 절차지향 언어에서 C++ 이라는 객체지향 언어가 등장한 이유는 '모듈화' 때문이다.모듈화를 한다는 것은 소스코드의 각 조각을 독립적으로 만든다는 것이고,각 조각이 독립적이라는 것은 다른 소스코드에 의존하지 않는다는 것이다.또한 각 조각은 필요에 따라 얼마든지 쉽게 '재사용' 될 수 있다. 객체지향에서 소스코드를 재사용하기 위한 제일 핵심적인 개념은 '캡슐화(encapsulation)' 이다.필요한 행위만 외부에 보여주고 나머지 디테일한 구현은 다 숨기는 것이다. 캡슐화를 할 때는 2가지를 지켜야 한다.1. 외부에 보여질 인터페이스의 수 (public function) 를 최소화해야 한다.2. 인터페이스를 한번 정의할 때, 시간이 지나도 수정되지 않도록 잘 정의해야 한다. 지금까지는 캡슐화의 범위..
지금까지 requirement description 을 기반으로 커뮤니케이션 다이어그램 또는 시퀀스 다이어그램을 그린 뒤, 이 결과를 클래스 다이어그램으로 변환하는 모든 과정을 살펴보았다.이번 글에서는 사용자 UI 를 설계하는 과정을 더 자세히 정리한다. 우리는 시스템 아키텍처를 설계할 때 boundary class, control class, entity class 3가지 종류로 구분하여 설계하였다.이를 가리켜 3-tier architecture 라고도 부른다. boundary class 는 presentation layer 라고도 부르며,사용자 또는 다른 외부 시스템에서 사용하는 인터페이스를 다루고,사용자가 데이터를 입력할 수 있는 매커니즘을 제공하며,인터페이스에 가지고 있는 데이터를 적절하게 포맷팅..
지난 글에서는 커뮤니케이션 다이어그램 대신 그릴 수 있는 시퀀스 다이어그램에 대해 정리하였다.이번 글에서는 커뮤니케이션 다이어그램 / 시퀀스 다이어그램을 통해 그렸던 analysis class diagram 에 detailed design 을 추가하는 방법을 정리해본다. 클래스 다이어그램에 detailed design 을 추가하는 것은 다음 작업들을 하는 것이다. 1. 어트리뷰트 타입 추가클래스 다이어그램에 어트리뷰트를 기술할 때는 다음과 같이 기술한다. 이름 : 타입 = 초기값 {특성 값} 특성 값에는 constant, fixed, not null 과 같은 특성을 기술한다.이름 앞에 / 를 붙이면 상속받은 (derived) 특성을 나타내고, 밑줄을 그으면 class-scope(static) 변수를 나타..
지난 글에서는 use case description 으로부터 시스템을 설계하는 class diagram 을 만드는 과정을 정리하였다.이때 중간에 오브젝트 간 상호작용을 표현하는 방법으로서 communication diagram 으로 상호작용을 표현했다.이번 글에서는 sequence diagram 이라는 또 다른 오브젝트 간 상호작용 표현 방법을 정리해본다. Sequence Diagram시퀀스 다이어그램은 오브젝트간 상호작용을 시간순으로 나타낸 다이어그램이다.그리고 이 상호작용의 디테일 정도는 계층을 나눠서 필요한 만큼만 표현한다.한번에 모든 상호작용의 전체 디테일을 다 표현하면 너무 복잡하기 때문이다. 시퀀스 다이어그램은 클래스 다이어그램을 그리기 전 커뮤니케이션 다이어그램 대신에 그릴 수 있는 다이어그..