전체 글

개발은 좋은데 뭘로 개발할까
CS/컴퓨터그래픽스와 메타버스

[그래픽스] 3. Rendering (1) - Shading

렌더링은 빛과 물체가 있을 때, 관찰자가 현재 물체를 어떻게 보는지를 그려내는 과정이다.3D 모델을 화면에 표시하는 과정은 크게 위와 같다.이번 글부터는 위 단계 중 Lighting 과 Shading 단계를 자세히 살펴본다. Lightening 은 illumination 이라고도 부르며,물체가 빛을 받았을 때, 그 물체의 정점의 색이 어떻게 되는지를 계산하는 과정이다.Shading 은 결정된 정점 색을 기준으로 물체 내부에 색을 입히는 과정이다.(폴리곤의 내부 픽셀 각각의 색을 결정하는 과정) 폴리곤 메시 형태의 모델에 대해 색을 입히는 Polygon Mesh Shading 은 기본적으로 각 폴리곤 면마다 lighting 모델을 적용하여 색을 결정한다.그리고 구체적인 방법에 따라 크게 Flat Shadi..

CS/컴퓨터그래픽스와 메타버스

[그래픽스] 2. Modeling

물체를 모델링할 때 고려할 특성은 크게 3가지가 있다. 1. Geometric property (기하학적 특성)2. Material property (텍스처, 색상 등)3. Behavior property (애니메이션과 같은 동작) 텍스처와 색상은 다음 글에서 더 자세히 보고, 이번 글에서는 기하학적 특성을 중점적으로 정리한다. Geometric Model기하학적 모델을 만드는 방법은 크게 3가지가 있다. 1. 손수 그리기공간 크기를 직접 계산해서 그리거나, 모델링 툴을 활용해서 직접 조각하여 만들 수 있다. 2. 알고리즘 (Algorithmically) 3. 스캐닝 기하학적 모델을 표현하는 방식은 크게 4가지가 있다. 1. Raw Data2. Surface (표면만 모델링)3. Solid (내부까지 ..

CS/컴퓨터그래픽스와 메타버스

[그래픽스] 1. 컴퓨터 그래픽스

컴퓨터 그래픽스컴퓨터의 도움으로 영상을 창조(create), 조작(manipulate), 저장(store), 표현(display)하는 것영상을 만들고 조작하는 것 뿐만 아니라 저장하고 출력하는 입출력도 포함된 개념이다. 컴퓨터 그래픽스도 다른 컴퓨터 작업과 마찬가지로 어떤 일이 주어졌을 때, 이를 수학적으로 잘 표현한 뒤이를 기반으로 알고리즘 또는 슈도 코드를 작성하는 과정을 거친다. 컴퓨터 그래픽스는 다양한 분야에서 사용된다.게임, 애니메이션과 같은 엔터테이먼트 분야, 시뮬레이션, CAD, 과학 연구의 시각화, 의학, 교육, VR, AR 등에서 활용될 수 있다. 그래픽스의 역사는 1950년대부터 시작되었다.1950년대에는 CRT 디스플레이, 라이트 펜을 이용한 드로잉, 벡터 그래픽의 시대였다.이때 t..

CS/소프트웨어공학

[소프트웨어공학] 18. Refining the Requirements Model

C 라는 절차지향 언어에서 C++ 이라는 객체지향 언어가 등장한 이유는 '모듈화' 때문이다.모듈화를 한다는 것은 소스코드의 각 조각을 독립적으로 만든다는 것이고,각 조각이 독립적이라는 것은 다른 소스코드에 의존하지 않는다는 것이다.또한 각 조각은 필요에 따라 얼마든지 쉽게 '재사용' 될 수 있다. 객체지향에서 소스코드를 재사용하기 위한 제일 핵심적인 개념은 '캡슐화(encapsulation)' 이다.필요한 행위만 외부에 보여주고 나머지 디테일한 구현은 다 숨기는 것이다. 캡슐화를 할 때는 2가지를 지켜야 한다.1. 외부에 보여질 인터페이스의 수 (public function) 를 최소화해야 한다.2. 인터페이스를 한번 정의할 때, 시간이 지나도 수정되지 않도록 잘 정의해야 한다. 지금까지는 캡슐화의 범위..

CS/소프트웨어공학

[소프트웨어공학] 16. Designing Boundary Class

지금까지 requirement description 을 기반으로 커뮤니케이션 다이어그램 또는 시퀀스 다이어그램을 그린 뒤, 이 결과를 클래스 다이어그램으로 변환하는 모든 과정을 살펴보았다.이번 글에서는 사용자 UI 를 설계하는 과정을 더 자세히 정리한다. 우리는 시스템 아키텍처를 설계할 때 boundary class, control class, entity class 3가지 종류로 구분하여 설계하였다.이를 가리켜 3-tier architecture 라고도 부른다. boundary class 는 presentation layer 라고도 부르며,사용자 또는 다른 외부 시스템에서 사용하는 인터페이스를 다루고,사용자가 데이터를 입력할 수 있는 매커니즘을 제공하며,인터페이스에 가지고 있는 데이터를 적절하게 포맷팅..

CS/소프트웨어공학

[소프트웨어공학] 15. Detailed Design

지난 글에서는 커뮤니케이션 다이어그램 대신 그릴 수 있는 시퀀스 다이어그램에 대해 정리하였다.이번 글에서는 커뮤니케이션 다이어그램 / 시퀀스 다이어그램을 통해 그렸던 analysis class diagram 에 detailed design 을 추가하는 방법을 정리해본다. 클래스 다이어그램에 detailed design 을 추가하는 것은 다음 작업들을 하는 것이다. 1. 어트리뷰트 타입 추가클래스 다이어그램에 어트리뷰트를 기술할 때는 다음과 같이 기술한다. 이름 : 타입 = 초기값 {특성 값} 특성 값에는 constant, fixed, not null 과 같은 특성을 기술한다.이름 앞에 / 를 붙이면 상속받은 (derived) 특성을 나타내고, 밑줄을 그으면 class-scope(static) 변수를 나타..

CS/소프트웨어공학

[소프트웨어공학] 14. Object Interaction

지난 글에서는 use case description 으로부터 시스템을 설계하는 class diagram 을 만드는 과정을 정리하였다.이때 중간에 오브젝트 간 상호작용을 표현하는 방법으로서 communication diagram 으로 상호작용을 표현했다.이번 글에서는 sequence diagram 이라는 또 다른 오브젝트 간 상호작용 표현 방법을 정리해본다. Sequence Diagram시퀀스 다이어그램은 오브젝트간 상호작용을 시간순으로 나타낸 다이어그램이다.그리고 이 상호작용의 디테일 정도는 계층을 나눠서 필요한 만큼만 표현한다.한번에 모든 상호작용의 전체 디테일을 다 표현하면 너무 복잡하기 때문이다. 시퀀스 다이어그램은 클래스 다이어그램을 그리기 전 커뮤니케이션 다이어그램 대신에 그릴 수 있는 다이어그..

자기계발/생각 정리

2025년 5월 회고

세상에서 제일 바빴던 5월이 지나갔다.팀플, 학교 내외에서 진행하는 프로젝트, 스터디 활동 등만족스러운 경험, 만족스럽지 못한 경험들이 많았다. 진로 관련1. 전공소프트웨어 공학은 랜덤으로 구성된 팀원들과 팀플을 진행했다.모두 각자의 역할을 열심히 수행해서 팀원에 대한 스트레스는 하나도 없었지만, qna를 보면서 교수님의 답변을 따라 과제를 수시로 수정하는 점은 힘들었다. 그래도 과제 결과가 만족스럽게 나와서 다행이었고, 이때는 5월 초에 진행해서 소공에만 집중할 수 있었다보니 괜찮았다. 다음 소공 과제는 개인과제로 1차, 2차로 나뉘어 진행했다.1차는 클래스 다이어그램을 그려 설계만 하는 과제, 2차 과제는 코드로 구현하고 실행을 확인한 뒤 수정된 설계도를 그리는 과제였다.지금까지는 머릿속으로 설계하고..

CS/소프트웨어공학

[소프트웨어공학] 13. Requirement Analysis

소프트웨어 개발의 주요 단계를 다시 정리해보면 다음의 5단계를 거쳐서 소프트웨어를 개발한다. 1. specification2. design3. implementation4. test5. maintenance specification 단계에서는 사용자의 요구사항을 파악하고, use case diagram 을 통해 시스템의 기능을 시각화하였다.그리고 사용자의 액션에 따라서 시스템이 어떻게 응답해야 하는지 use case description 을 작성하여 시스템에서 개발해야 하는 부분이 어디인지 명확하게 정의하였다. 이번 글부터는 design 단계를 진행한다.design 단계에서는 앞서 파악한 요구사항을 분석하여, 실제로 프로그램을 개발할 때 어떤 클래스와 메서드를 사용할 지 설계한다.이 과정을 마치고나면 커..

에버듀
Blog. 에버듀