Published on

고급컴퓨터그래픽스 | Course Overview

Introduction

사실 작년 1학기, 그러니까 석사 2기 때 들었던 수업인데, 게으름과 바쁜 관계로 정리하는 포스트를 적지 못했다. 인공지능개론만 적기에는 석사 생활이 아깝고 고급컴퓨터그래픽스와 지능형로보틱스개론만큼은 기록을 남기고 싶어서 여름동안에는 포스트로 남기려고 한다. 물론 1년 지난 수업이라ㅠ 자세히는 기억은 못할 것 같으나, 복습하는 차원에서 남겨보려고한다.

필자는 먼저 캐릭터 애니메이션을 강화학습으로 연구하는 연구실에서 몸을 담았었고, 컴퓨터그래픽스의 경우 거의 현재까지 4년내내 조교 포함 공부를 해왔어서 생략되는 내용도 있을 수도 있다. 최대한은 모르는 입장에서 적도록 하겠음..!

본 강의는 한양대학교 석박사수업 중 하나였으며, KCGS 2022 여름학교에서도 짧막하게 강의가 된 적이 있었다. 또한 캐릭터 애니메이션이 주된 내용이라 혹시 mesh, rendering을 생각하고 오셨다면 이 강의는 맞지 않을 것이다.

Course Overview

강의는 간단하게 아래와 같이 구성되었다.

  • Software Design
    • Refactoring
    • Unit testing
    • Test-driven development
  • Human motion data structure
  • Kinematic character animation
    • Forward/Inverse Kinematics
    • Motion Warping/Stitching/Blending
  • Physics-based character animation
    • Particle Dynamics
    • Charcter Simulation & Control
  • Deep learning-based character animation
    • Deep motion synthesis
    • Deep control policy

Why software design?

나도 이 강의 들었을 당시 가장 큰 의문이었는데, 왜 소프트웨어 디자인을 배우지..? 라고 생각했다. 물론 예외처리를 유연하게 하기 위함이겠지라고 생각했고 강의 과제를 수행하면서 교수님께 엄청 까였..던 파트이기도 했다. 당시 나로선 이해가 되지 않았지만 돌이켜보면, 타당한 이유에서 배우는 부분이었다.

이유는 두 개로 나뉘어볼 수 있었다.

  • Universal
  • User friendly

Universal

내 블로그도 내 스스로 보수하는 입장에서 각기 다른 브라우저에서도 돌아가는지 체킹하는데, 소프트웨어 기획에 있어서 변경에 유연하게 대응할 수 있도록 코드를 짜는 것은 매우 중요하다. 연구도 마찬가지로 아이디어도, 문제 해결 방법도 시시각각 언제나 변할 수 있기 때문에 변화에 대응하는 설계가 필수적인데, 한가지 구조에서 벗어나 다양한 실험을 추가하여 contribution을 늘릴 수 있도록 새로운 제안에도 변화에 적응할 수 있는 설계가 바로 여기서 필요한 것!

User friendly

만약 많은 사람들을 목표로 프로그램을 만든다면 특정 기술을 기반해서 사람들에게 친숙하게 기능을 살리는 것이 중요하다. (Production-level code).

Wrapup & Conclusion

다음 시간에는 Software design에 대해 다루어보겠음.

Authors