프로젝트 회고

[펄어비스 x 경희 소융] 프로젝트 회고

꿀꺽람 2023. 2. 6. 17:30
반응형

한 학기 동안 공들여서 진행한 프로젝트가 드디어 최종 발표로 끝을 냈다.

10/20 에 첫 주제 발표를 시작으로 2/2에 최종 발표를 마쳤으니까 대략.. 3달 반 정도 되지 않을까 싶다.

 

이번에 참가한 프로그램은 펄어비스와 경희대학교 소프트웨어융합학과에서 진행하는 펄어비스 인재양성 프로그램이다. 

쉽게 말해 펄어비스에서 장학금을 제공하면서 경희대학교 소프트웨어융합학과 학생들을 키우고, 해당 학생들은 주제를 정하고 교수님의 피드백과 함께 프로젝트를 진행하면서 펄어비스의 기준에 걸맞는 최종 프로젝트 완성을 목표로 진행하게 된다.

물론 난 소프트웨어융합학과는 아니었지만 ㅎㅎ.. 대략 열명이 진행했는데, 이 중 나 포함 두 명이 컴퓨터공학과였다.

나는 전에 소융 수업인 게임 PX 디자인 수업을 들었었고, 해당 수업에서 언리얼에 대해 배울 수 있었기 때문에 언리얼 엔진에 큰 거부감은 없었다. 하지만 언리얼에 익숙치 않다면 프로젝트 시작 전에 언리얼 튜토리얼이라도 공부하는 것을 추천한다.. 

 

우선 다음학기에 또 이런 기회가 열린다면 참가할 마음이 있는 사람들에게 전하고 싶다.

진짜 무조건 해보세요 

 

물론 조금 빡세긴 하다. 아무래도 장학금을 받고 펄어비스와 연구과제를 진행하는 것이다 보니 주제 정하는 것부터 어렵다. ㅋㅋ ㅠㅠ

그럼에도 불구하고 추천하는 이유는 나는 이 프로그램으로 엄청 많은 것을 배웠고 앞으로 배우고 공부하고 싶은 것도 더 많아졌기 때문이다.

 

내 주제는 Combustion Simulation for Buildings 였다.

빌딩에서의 연소 시뮬레이션을 주제로 프로젝트를 진행했고, 빌딩에서 불이 퍼지는 모습을 구현하고 이를 영상과 발표에서 시각화하며 프로젝트를 완성하였다. 

주제 발표를 시작으로 2주에 한 번씩 교수님께 현재 진행상황에 대한 발표를 진행했고, 두 번 발표를 진행한 후 중간 발표, 또 그 후 두 번 정도 발표를 진행한 후 최종 발표를 진행했다. 시험기간이 겹칠 때는 발표를 한 주 정도 쉬어가기도 했다.

 

주제 선정

주제 정할 때부터 엄청 고민을 많이 했는데, 나는 two minute papers라는 유튜브 채널에서 흥미로운 주제를 찾아서 이를 다르게 적용시켜보는 식으로 주제를 정했다.

사실 처음부터 연소 시뮬레이션을 하고 싶은 건 아니었고, 주제 후보가 여러 개 있었다.

아래는 내가 주제 선정할 때 생각해봤던 주제들이다.

이들 중 너무 어렵거나, 너무 간단하거나 혹은 대충 구글링해봤을 때 자료가 턱없이 부족한 주제들을 제외했더니 연소 시뮬레이션이 남았고, 그렇게 주제를 정하게 되었다.

저 중에서는 아직도 해보고 싶은 주제들이 많다. 특히 사운드소스가 공간 상에서 반사되고 굴절되고,, 등등 공간에서의 사운드 표현을 해보고싶었는데 너무 어려울 것 같아서 포기했었다. 나중에라도 꼭 해보고 싶은 주제이다.

 

프로젝트 진행

프로젝트는 약 3단계 정도로 개발을 진행했다.

Heat Transfer - Biological & Physical Attributes - Fire Simulation

의 단계로 진행되었는데,

이 중 가장 공들였던 Heat Transfer에 대해서 간단하게 말하려고 한다.

 

먼저 이 주제를 선택한 이상 가장 잘 보여줘야 할 것은 '이게 정말 열이 잘 전달되어 불이 퍼지는가' 였다.

그냥 대충 퍼지게 불 피워놓고 '건물에서 불이 퍼지는 모습을 구현하였습니다.' 는 부족했다. 이를 시각화하는 무언가가 필요했고, 나는 Vertex Color를 이용하여 각 버텍스들에게 열이 어떤 속도로 전달되고 있고, 발화점에 도달했는지, 언제쯤 발화점에 도달할 지 등에 대해 시각화하는 과정을 추가하였다.

Unity에서는 버텍스 관련 문서들도 많고 전에 인턴할 때 몇 번 다뤄봤었기 때문에 언리얼도 비슷하겠지~ 하고 일단 뛰어들었다.

삽질을 그냥 지구 내핵까지 했다. ㅋㅋ

삽질 과정에서 구글링해서 나오는 코드들을 넣어서 돌려봤고, 각 코드들의 한계점까지 파악하게 되었다. 

겨우 찾아서 와 됐다!! 하면 다른 기능이 안되고.. 또 그게 되면 이게 안되고.. 

뭐 알지도 못하는 상태에서 시작하니까 Vertex, Vertex Instance 에서 아주 애를 먹었고 이게 해결되니까 Vertex Color에서, 그 다음은 Vertex Position에서 끊임없이 막혔다. 진짜 산 넘어 산이었다. ㅋㅋㅋㅋ ㅜㅜ

막힌 부분에 대해서는 나중에 따로 정리해서 업로드하려고 한다. 나와 비슷한 문제를 겪고 있는 사람들이 삽질을 덜 하길 바라면서.. ㅋㅋ ㅜㅠ

하루종일 해결하다가 새벽쯤에 이게 대체 왜 안되지.. 하고 구글링으로 겨우 찾아낸 자료가 '이렇게 하면 원래 안되는 거였네..' 인 날은 현타가 미친듯이 왔다.. 뭔가 하루를 다 썼는데 결국 원점인 느낌..? 학기 중에 진행한 프로젝트였기에 몇 번 이렇게 데이고 난 후에는 그냥 프로젝트 개발 시작 전에 무조건 과제, 공부를 다 마치고 진행하려고 했다. 

내가 원하는 버텍스 관련 함수를 찾으려고 구글을 다 뒤졌는데도 안나와서 처음으로 언리얼 포럼에다가 질문도 작성해봤다. 근데 답은 안달렸다. ㅋㅋ ㅠㅠ

 

그래서 결국 엔진 코드까지 뜯어봤다.

이쯤에서 IDE 영업 하나 하자면.. 

"Jetbrains의 Rider" 진짜 갓 IDE 내가 써본것들 중 최고다. (물론 써본거라곤 VS, VSCode가 전부다.)

jetbrains는 Pycharm, IntelliJ로 유명한데, 나는 Unreal / Unity 와 호환이 되는 Rider를 사용하였다.

https://www.jetbrains.com/rider/

 

Rider: The Cross-Platform .NET IDE from JetBrains

Develop .NET, ASP.NET, .NET Core, Xamarin or Unity applications on Windows, Mac, Linux

www.jetbrains.com

그냥 진짜 엄청 편하다. 기존 코드 뜯어보기도 편하고, 디버그 / 빌드 툴도 엄청 잘 되어 있고, Git 버전 관리도 굉장히 편하게 할 수 있다. (머지 툴 최고) 로컬 히스토리도 확인할 수 있고 클래스, 함수 document 작성도 굉장히 편리하다.

특히 Unreal Engine 코드 뜯어볼 때가 가장 편했다. 원하는 함수, 변수, 클래스 명 등을 검색하거나 Usage 찾는 과정이 엄청 편하고 손쉽게 가능했다. 

Rider로 Jetbrains의 ide에 입문한 나는 .. 이제 모든 IDE를 다 바꾸기 시작했다.. C++/C는 CLion, Python은 Pycharm 등을 사용하고 있는데 만족도 200%다. 대학생은 무료니까 아직 인생 IDE를 찾지 못했다면 한번 고려해보는 것도 좋을 것 같다!

(그리고 일단 이뻐서 코드 짤 맛이 난다.)

 

결국 엔진 코드에서 vertex color, position, index 등등이 어떤 식으로 구성되어 있는 지를 확인했고, 여러 시행착오 끝에 하나하나씩 해결할 수 있었다.

비록 삽질도 많이하고 어려움도 많았지만 그래도 점점 완성되어가는 모습이 뿌듯했다.

 

프로젝트 결과물

2/2에 프로젝트 최종 발표를 진행했다. 

발표는 온라인으로 진행되었고, 펄어비스 관계자분들도 들어오셔서 발표를 들어주셨다.

발표에는 3분 내외의 최종 영상과 5분의 ppt 발표를 준비했다.

Combustion Simulation for Buildings_7_최종발표.pdf
0.71MB

 

위 pdf를 발표자료로 사용하였고, 최종 영상은 교수님 유튜브에 올라와있다. 구경하세요~~

https://www.youtube.com/watch?v=7byZo9cqBuI 

 

교수님께서 '흠잡을데가 없다'라고 하셨다.

뿌듯 그 자체였다.

교수님 유튜브 메인 영상으로 올라왔다!

 

후기

진짜 어려웠다. 처음 해보는 게 너무 많았고 모르는 것도 많아 애초에 시작을 어디서부터 해야할지도 감이 안잡혔다. 

학기 중이었기에 다른 학교 공부/과제랑도 겹쳐 머릿속에서 할 일들이 뒤죽박죽 섞여있었다. 특히 발표 3 ~ 4일전에는 그냥 집에 박혀서 프로젝트만 했다. 인스타 스토리에서도 적었다시피 구조짜고 알고리즘 짜고.. 꿈에서도 코딩하고.. 나도 모르게 부담감을 갖고 진행한 것 같기도 하다. 물론 그 부담감은 잘하고 싶어서 그런거겠지만.. ㅎㅎ

그냥 잘하고 싶었다. 좋은 기회이니만큼 내 최선을 다해서 프로젝트를 해보고 싶었고, 발표때마다 다른 분들 발표보면서 자극도 많이 받고 대단하다는 생각도 했다. 주제 정할 때는 내가 모르는 게 너무 많아서 어디서부터 검색해봐야 할지도 감이 안 잡혔고, 프로젝트를 시작한 후에는 처음에 짰던 구조를 계속 뒤엎고, 알고리즘 뒤엎고 하면서 어설프지만 완성해갔다. 내 프로젝트가 완벽하다고 하지는 못하겠다. 아직 고칠 점들이 많고, 시뮬레이션이지만 실제와는 조금 거리가 있는 것 같다. 나중에 시간이 난다면 더 보완해보고 싶다.

진짜 값진 경험이 된 것 같다. 많이 배우고, 진짜 많은 것을 경험했다. 일주일동안 해결안되던 문제가 해결되는 순간 그냥 뿌듯함 그 자체였다. 이 경험을 통해 배우고 싶은 것도 더 많아졌고, 차근차근 공부해서 블로그에다 정리해 업로드하려고 한다.ㅎㅎ

앞으로 더 공부 열심히 해서 성장하자!!

반응형