본문 바로가기

프로그래밍/개발일지

군집 시뮬레이션 - 주제선정

반응형

 올해 학교 소프트웨어경진대회를 준비할겸 토이프로젝트를 준비하고 있습니다. '개발자는 실력' 이라고 많이들 말하지만, 개발자들의 SNS을 보면 수상경력으로 가득차 있는것이 부럽길래.. 실력증진과 동시에 수상을 목적으로 토이프로젝트를 준비해보기로 마음먹었습니다. 작년 공지를 보면 대회의 작품제출기간이 8월까지로 현재부터 6개월 이상의 시간이 남아있지만, 이번 프로젝트를 나의 2021대표 프로젝트로 만들 생각으로 오랫동안 조금씩 진행해보도록 하겠습니다.

 

 관심있는 분야는 그래픽스 프로그래밍과 GPU를 이용한 최적화와 그래픽 기술입니다. 사용기술은 유니티기반의 C#과 Shaderlab으로 프로젝트를 진행해왔고, 앞으로 DirectX, OpenGL, WebGL과 같은 그래픽 라이브러리와 이를 위한 HLSL, C++공부와 Geometry Shader, Compute Shader, GPU 프로그래밍에 대한 공부를 준비하고 있습니다. 이번 프로젝트도 이러한 기술들을 바탕으로 자료조사를 진행할 예정입니다.

 

1. 2020 컴퓨터과학과 소프트웨어경진대회 공지 분석

 대회목적: 컴퓨터과학과 재학생들의 소프트웨어 개발 능력 및 실무 관련 능력을 향상하고, 최신기술 및 지식 습득을 통하여 경쟁력을 높이는 기회를 제공함

 출품분야: 게임, 멀티미디어, 유틸리티, 모바일 앱 등 모든 응용 분야

 출품제한: 타인의 저작권을 침해하거나 도용한 작품 또는 회사 소유의 상업적으로 사용하는 작품은 응모할 수 없으며 추후 적발시 입상 취소 및 민형사상의 책임을 물음.

 가산점: 컴퓨터과학과 교과과정에서 배운 프로그래밍 언어 사용한 경우, 스터디 팀으로 참가한 경우

 작품제출: 2020.06.03 ~ 2020.08.03 (2020년 기준)

 제출물: 실행, 설치 및 소스 파일, 발표 자료, 작품 설명 동영상

 

소스코드로 제작된것이면 어떠한 주제던 상관이 없는듯 합니다. 학교측에서 유니티로 진행한 프로젝트를 어떻게 생각하는지 파악하기 위해 유니티로 진행된 작품중에 수상한 작품이 있는지 확인해봐야겠습니다. 공지를 읽으면서 가장 신경쓰이는 부분이 바로 가산점입니다. 딱히 같이 참여할 사람도 없고, 교과과정에서 배운 언어를 사용한다고 하기에도 애매한 상황입니다. 일단은 가산점을 받지 않은 상태로 유니티 프로젝트가 경쟁력이 있는지 확인해봐야겠습니다.

 

2. 이전 소프트웨어 대회 수상작 조사

 다행이였던 점은 유니티 베이스로 개인 참가해서 수상한 작품들이 있었다는 것입니다! 제가 생각하고 있는 단계까지 제대로 구현된다면 동상까지는 노려볼만 하지 않을까 생각하고 있습니다. 일단 동상을 목표로 구현해보고, 금상을 넘어 대상까지 노려볼정도로 구현해보도록 하겠습니다.

 

 

3. 주제선정

 메인주제

 일본 IndieVisualLab의 'Unity Graphics Programming 1권 ~ 3권'까지의 책을 읽어보며 연구할 메인주제 후보들을 선정하였습니다. 선정의 기준은 먼저 시각적으로 우수한 효과를 보여주는가, 그리고 내가 '빠른 시간안에 이해하고 이를 바탕으로 새로운 연구를 진행할 수 있는가' 입니다. 일단은 시각적으로 마음에 드는 주제들을 먼저 선정해보았습니다.

 

1권: 군집 시뮬레이션, 마칭큐브

2권: 지오메트리 와이어프레임, 컬 노이즈

3권: 튜링 패턴, 세포 분열 시뮬레이션, N-Body 시뮬레이션

 

 

 서브주제

 - 렌더 파이프라인 (URP, HDRP)

 '시각적으로 우수한 효과'를 더욱 부각시키고 그래픽 프로그래밍을 더욱 이해하기 위해 URP(Universal Render Pipeline)나 HDRP(High Definition Render Pipeline)를 고려하게 되었습니다. 기존 엔진에서 제공하는 레거시 렌더파이프라인과 비교하여 URP는 더 유연한 개발이 가능하고, HDRP는 시각적으로 매우 우수한 효과를 구현할 수 있습니다.

-그래픽 최적화
 시뮬레이션을 최대한 최적화하고 현재 작업중인 PC에서 할 수 있는 최대한 큰 규모의 시뮬레이션을 실행하기 위해, 렌더링 과정을 분석하고 최대한 최적화시키기 위해 노력해보겠습니다. 이를 위해 GPU에 대해 공부하고 GPU프로그래밍에 대한 정보를 얻어볼 예정입니다.


4. 군집시뮬레이션

새의 군집

 

 

 메인주제는 군집시뮬레이션을 진행하기로 결정했습니다! 구현예제가 쉬우면서도 제가 공부하고 싶은 부분이 들어가있고, 최적화를 진행하지 않은 부분이 눈에 띄어서 연구하기 적절한 주제로 판단되었습니다. 시각적으로 우수하면서도 동물 무리의 움직임을 시뮬레이션 한다는 점에서 학술적인 느낌도 들어 학교 프로젝트에 어울리겠다는 생각이 들었습니다. 수식도 넣고 학술 자료들도 인용하면 있어보이는 발표 자료를 작성할 수 있을듯 합니다. 아래는 제가 참고하기로한 군집시뮬레이션 예제의 동영상입니다.

 

 

 

 

 

 

다음번에는 군집시뮬레이션에 대해서 글을 써보도록 하겠습니다.

 

 


 

오늘 새로 배운 내용

 유니티의 그래픽 기술을 활용한 다양한 시뮬레이션들

 그래픽스 프로그래밍의 기술들

 

고민한 내용:

 어떤 주제를 선정해야 그래픽 프로그래밍을 공부하는데 적절하면서 프로그래밍적으로 내가 활약을 할 수 있을까

 어떻게 프로젝트의 결과물을 산출해야 입상을 할 수 있을까

 

참고할 만한 내용:

- IndieVisuallab, Unity Graphics Programming [http://indievisuallab.github.io]

- Craig W. Reynolds, "Flocks, Herds, and Schools:A Distributed Behavioral Model", 1987, Computer Graphics, 21(4), July 1987, pp. 25-34.[http://www.cs.toronto.edu/~dt/siggraph97-course/cwr87/]

 

회고:

- keep: 대회 공지가 궁금할때 이 글을 보며 작업하면 좋을듯함, 새로운 주제를 추가할때도 유용

- problem: 이 글의 내용 그대로 발표자료로 쓰기에 단어들이 어려울듯함, 글 자체의 읽는맛이 부족함

- try: 일단은 지금처럼 개발일지 작성, 프로젝트 윤곽이 잡히고 기술들이 정리되면 발표자료 순서를 생각하며 쉬운 설명이 필요할듯한 부분을 따로 정리해보자. 그리고 다른 사람들의 개발 일지같은 글들을 참고하여 어떻게 글을 디자인해야 부드럽게 읽히는지 연구해보자

 

프로젝트 아이디어:

 URP를 이용한 몽환적인 느낌으로 바다속 구현하기

 간단한 Lowpoly 모델링으로 바다속 구현해보기

 

 

반응형