2022년 2학기: 나의 첫 VR 프로젝트, 의료영상 시뮬레이션

실질적인 나의 첫 VR 프로젝트

[3학년부터 시작된 본격 VR 인생]

2학년 때까지는 안드로이드 프로젝트나 개인 공부만 하던 제게, 3학년 여름 즈음부터 본격적으로 VR 프로젝트의 기회가 찾아왔습니다. 교수님의 제안으로 VR 환경에서 의료 영상을 띄워서 보이는 프로젝트를 진행하게 된 것입니다.

하지만… 나는 아직 제대로 Unity를 공부하지 못했다고요!

저는 무언가 준비되기 전에 어떤 일을 시작하는 것을 상당히 두려워합니다. 아무것도 모르고 그렇게 일을 시작해서 꾸중을 들었던 일이 많았거든요. 물론 시간을 충분히 준다면 모를까, 고정된 목표 날짜에 맞춰서 뭔가 일을 진행하다 보면 중간에 변수가 있기 때문에 확신을 못 가지는 경우가 많았습니다. (지금도 이런 갑자기 새로운 것을 맞이하면 고민하는 경우가 있는데, 그래도 ‘연구’한다는 게 그런 거니까, 점점 배워나가며 태도를 바꾸는 게 맞지 않을까 싶습니다.)

정확히 이것을 위한 건 아니지만, 어쨌더나 연구를 위해서라도 Unity를 배울 필요는 있었습니다. 개발이 목적이 아닌 연구가 목적이지만, 그래도 개발 역시 ‘수단’이니까요. 통계 분석, 논문 작성 방법 등등 배워야 할 것은 배워야만 연구할 수 있습니다.

간단한 예제 연습

그래서 2학년을 마친 2022년 1~2월에 다른 공부와 병행하며 Unity 공부를 처음으로 시작하게 되었습니다. 이때 과거 제가 군에 있을 때 사 두었던 책을 펼치게 되었습니다. (레트로의 유니티 게임 프로그래밍 에센스) 좀 어렵긴 하지만 기초를 이해하는 데 많은 도움을 받을 수 있었고, 간단한 예제를 따라서 만들어보며 원리를 이해할 수 있었습니다. 그래서 예제를 응용하여 다른 것도 만들어볼 수 있었지요. 그렇게 학습한 과정을 블로그에 조금씩 올렸습니다.

Unity 연습 모음

학기가 시작되고 나서는 많이 공부하진 못했지만, 1학기가 종료되고 7~8월에는 이전에 익혔던 Unity 기초에 더해 본격적으로 Meta Quest 2 앱 개발을 위한 SDK 학습도 시작했습니다. 처음에는 컨트롤러 연결 방법을 익히고, 그 다음에는 Hand tracking도 사용해보았습니다. 오브젝트나 버튼도 추가해보았습니다. 그렇게 조금씩 VR 개발의 길에 발을 들였습니다.



[3학년 2학기, 산학협력프로젝트]

이렇게 공부하다가 맞이한 ‘가상현실 의료 영상 시뮬레이션’ 프로그램. 하지만 VR 개발 방법을 이해했더라도 의료 영상을 이해하는 건 또 다른 문제였습니다. 무엇보다도, 이 프로젝트를 3학년 2학기 교과목인 ‘산학협력프로젝트’와 연계하여 진행하게 되었다는 점이 제게는 약간 부담이 되었습니다. 시간이 그렇게 길지 않았기 때문입니다. 실질적으로 10월부터 개발을 시작해서 최종 발표가 12월 초이니, 단 2달 만에 결과물을 내야 했습니다.

VR 팀 결성

일단 VR에 관심 있는 팀원을 모아서 시작하게 되었는데, 모두들 VR 개발을 제대로 해본 경험은 없었습니다. 우선은 여러 차례 팀 미팅도 갖고, 사업단에서 지원해주신 기업체 멘토님과도 미팅을 갖고 어떻게 진행할지 고민하였습니다. 구현을 위한 방법을 열심히 찾다가 DICOM 파일이 의료 영상이라는 사실과, 그 DICOM을 Unity에서 불러와줄 수 있는 라이브러리를 발견하였고, 이를 개발에 활용하게 되었습니다.

의료 영상 파일은 공개되어 있는 샘플 파일로 진행되었습니다. 그런데 Unity에 첨부된 의료 영상이 어마어마하게 무거워서(씬 크기가 1기가를 넘나들었습니다), Quest 2가 컴퓨터 없이 단독 사용 가능함에도 불구하고 컴퓨팅 파워가 부족하기 때문에 PC에서 Quest Link를 통해서만 원활하게 실행할 수 있었습니다. 그래도 캡스톤이라는 게 ‘아이디어’이니까, 컴퓨팅 파워로 인한 문제는 사실 문제가 아니겠지요. 가능성만 보여도 성공인 게 캡스톤이라고 생각합니다.

그렇게 의료 영상을 Unity에 띄우는 데 성공하였고, 오브젝트 및 스케치 기능도 구현해 나갔습니다.

네트워킹…

가장 문제는 2인 이상 동시 접속을 염두에 두는 네트워킹이었습니다. 이 프로젝트가 단순하게 의료 영상을 VR에 띄우는 것이 아니라, (그건 별 의미가 없는 것이고) 실제 사용 사례를 들면서 갖고 나온 것이 바로 ‘회의 시스템’이기 때문입니다. 회의 시스템이기 때문에 스케치나 오브젝트 추가 기능도 넣은 것입니다.

이번 학기에 막 컴퓨터 네트워크 수업을 듣고 있었기도 했지만, 모르는 개념이 너무 많았고, 아무리 라이브러리를 쓴다고 해도 그냥 뚝딱 한다고 완성되는 건 아니었습니다. Host-Client 개념을 이해하는 데 한참 걸렸고, RPC를 이해하는 것도 어려웠습니다. 1인 플레이에서는 기능 하나를 구현하는 게 그렇게 어렵지 않았지만, 데이터를 전송하여 같은 형태로 상대방 컴퓨터에서도 표시되게끔 하는 일이 상당히 어려웠고 코드도 몇 배로 불어났습니다.

2022년 11월, 내 인생에서 가장 바빴던 때 중 하나.

이런 이유로 2022년 11월은 ‘나중에 대학원생이 되면 이런 기분일까?’를 체험해볼 수 있는 기간이었습니다. 이 당시에 저는 산학협력 프로젝트 수업뿐 아니라, 연구실 자체적으로 진행하는 연구 프로젝트도 진행했기 때문입니다. 이 해 겨울에 사용자 실험을 목표로 개발을 진행했었는데, 그것 역시 다양한 오류에 시달리고 있었습니다. 결국 저는 2가지 VR 개발을 학기 내내 진행하였기 때문에, (천만다행으로 그건 네트워킹이 필요하진 않았습니다) 제한 시간, 즉 12월 초 내에 모든 개발을 마치려면 연구실에서 거의 살다시피 해야 했습니다. 결국 11월 한 달간 밤을 세 차례 샜고, 특히 11월 21~27일에는 매일매일 새벽 3시에 자고 아침 6시에 일어나는 쪽잠 수준의 삶을 살았습니다. (일기장 참고…) 이 기간에 예비군 훈련도 겹치고, 포스터 논문도 겹치고, 경진대회도 겹쳐 있었군요.

이런 피나는 노력 끝에 11월 말에 네트워킹 기능을 무사히 마무리짓고 여러 차례 시연도 끝내고, 다른 팀원이 개발한 기능까지 모두 합쳐 프로젝트를 마무리했습니다.

발표

그리고 12월 2일 최종 발표가 진행되었습니다. 발표도 굳이 학교에서 안 하고 다른 데 가서 하더군요. 피곤한데. 그런데 확실히 다른 팀들은 웹 기반 개발을 했는데 VR 개발을 하다 보니 모두의 시선이 집중되었습니다. 확실히 흥미도는 높았고, 잠재력이 있는 분야라는 생각이 들었습니다.

최종 발표는 10분 발표 5분 질의응답으로 진행되었고, 추후 5분 단축 발표 영상을 추가로 제출하였습니다. 발표 영상을 게시하기는 좀 어려워서 주요 내용 스크린샷으로 대체합니다.



[이 프로젝트의 결말]

이 프로젝트에서 제작된 의료 영상 시뮬레이션은 이후 다른 연구원이 이어 받아 업그레이드되었고, 다른 논문의 실험에 활용되며 최종적으로 논문이 출판되는 데 기여하였습니다.

Effect of Auto-Erased Sketch Cue in Multiuser Surgical Planning Virtual Reality Collaboration System

사실 논문에 제 이름이 들어가진 않았지만, 당초 이 애플리케이션은 논문을 위한 것은 아니었고, 프로젝트를 넘긴 이후 많은 변화가 있었기 때문에, 그리고 논문에 전혀 관여하지 않았기 때문에 들어가지 않아도 된다 생각했습니다. 그 대신, 저는 이 프로젝트와 동시에 진행했던 다른 VR 프로젝트의 실험을 마치고 논문을 준비했고, 조금의 우여곡절이 있었지만 2023년 11월 마침내 논문으로 인정받았습니다. 이 내용은 추후 Project 탭에서 설명드리겠습니다. 이것만으로도 저는 학부 시절에 많은 경험을 할 수 있었고 결과도 내었다는 점에서 감사하게 생각하고 있습니다.

comments powered by Disqus