Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018

587 views

Published on

Published in: Technology
  • Be the first to comment

문석진, 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ, NDC2018

  1. 1. 데브캣스튜디오, 프로젝트DH 팀 문석진(msg88@nexon.co.kr) 프로젝트DH의 절차적 애니메이션 시스템 Ⅱ
  2. 2. 발표자 소개 □ 프로젝트 경험 ■ 마비노기 듀얼 ■ 프로젝트 DH □ 관심분야 ■ 컴퓨터 그래픽스, 물리기반 모델링 & 시뮬레이션
  3. 3. 목차 □ 프로젝트 DH □ 절차적 애니메이션 1. 절차적 애니메이션이란? 2. 실버바인(Silvervine) 모션 엔진 □ 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환 □ Q&A
  4. 4. 프로젝트 DH
  5. 5. 1. 절차적 애니메이션이란? 2. 실버바인(Silvervine) 모션 엔진 절차적 애니메이션
  6. 6. 일반적 의미 □ 논리적으로 실시간 생성되는 애니메이션 ■ Ex) IK, Dynamics ■ 파티클, 의상, 헤어, 캐릭터 애니메이션 분야
  7. 7. 개발 과정 □ 입력에 대한 결과를 정의
  8. 8. 개발 과정 □ 입력에 대한 결과를 정의 ■ 입력: 첫 번째 톱니의 회전각 ■ 결과: n 번째 톱니의 회전각
  9. 9. 개발 과정 □ 입력에 대한 결과를 정의 ■ 입력: 첫 번째 톱니의 회전각 ■ 결과: n 번째 톱니의 회전각 □ 규칙과 순서를 정의
  10. 10. 개발 과정 □ 입력에 대한 결과를 정의 ■ 입력: 첫 번째 톱니의 회전각 ■ 결과: n 번째 톱니의 회전각 □ 규칙과 순서를 정의 ■ k 번째 톱니의 회전각 ▪ k-1 번째 톱니의 회전각, 반지름 ■ 1부터 n번째 톱니까지 순차적 계산
  11. 11. 개발 과정 □ 플래닝 □ 구현 □ 튜닝
  12. 12. 개발 과정 플래닝 구현 튜닝
  13. 13. 특징 및 장점 □ 입력에 따른 다양한 결과 생성 □ 모션의 추가/삭제, 수정 용이 □ 자연스럽고 다양한 상호 작용 □ 애니메이션 제작 비용 절약 ■ 비슷한 종류의 애니메이션 최소화 ▪ Ex) 구조가 서로 다른 n 개의 캐릭터 걷는 애니메이션: n x [전진, 후진, 회전, 게걸음] x [평지, 오르막, 내리막]
  14. 14. 적용 사례 □ Spore ■ 유저가 정의하는 임의 형태의 캐릭터의 애니메이션 생성
  15. 15. 적용 사례 □ Last Guardian ■ 원본 애니메이션을 상황에 맞게 수정하는 방법으로 자연스러운 애니메이션 연출
  16. 16. 적용 사례 □ For Honor ■ 모션매칭: 방대한 모션 데이터베이스에서 상황에 적합한 애니메이션을 선택
  17. 17. 1. 절차적 애니메이션이란? 2. 실버바인(Silvervine) 모션 엔진 절차적 애니메이션
  18. 18. 실버바인 모션 엔진 □ 완전히 절차적인(fully-procedural) 애니메이션 시스템 개발 시도 ■ 오로지 코드로만 애니메이션을 생성 ■ 애니메이션 품질이 프로그래머 역량에 깊게 의존 ■ 생성된 모션이 불안정함
  19. 19. 실버바인 모션 엔진 □ 준 절차적(semi-procedural) 애니메이션 시스템 ■ Automated Semi-Procedural Animation for Character Locomotion 논문 기반 ■ 샘플 애니메이션 분석을 통한 로코모션의 실시간 생성 ■ 게걸음, 후진, 회전, 속도 변화 …
  20. 20. 작년 발표 리뷰 □ 로코모션을 중점적으로 개발 진행 ■ 게이머가 실제로 가장 많이 보게 될 부분 ■ 모션엔진의 필수 기능 ■ 개발 난이도 ↑
  21. 21. 작년 발표 리뷰 □ 모션 분석 데이터의 기본 요소 ■ 본(뼈대)
  22. 22. 작년 발표 리뷰 □ 모션 분석 데이터의 기본 요소 ■ 본(뼈대) ■ 스파인(척추)
  23. 23. 작년 발표 리뷰 □ 모션 분석 데이터의 기본 요소 ■ 본(뼈대) ■ 스파인(척추) ■ 림(팔다리)
  24. 24. 작년 발표 리뷰 □ NDC Replay ■ http://ndcreplay.nexon.com/NDC2017/sessions/NDC2017_0026.html
  25. 25. 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환
  26. 26. 목적 □ 지면의 기울기에 맞는 애니메이션을 생성 ■ 언덕 ■ 바위, 자갈 ■ 계단
  27. 27. 필요성 □ 기존의 모션엔진은 경사가 없는 평지만을 가정 ■ 경사를 고려한 절차적 처리 없음 ■ 샘플 애니메이션은 모두 평지 전용
  28. 28. 필요성 □ 기존의 모션엔진은 경사가 없는 평지만을 가정 ■ 경사를 고려한 절차적 처리 없음 ■ 샘플 애니메이션은 모두 평지 전용 □ 4족 이상의 캐릭터 등장 ■ 인간과 같은 2족 구조에 비해 복잡함 ■ 특별하고 일반화된 방법 필요
  29. 29. 접근 방법 □ 4족 구조의 캐릭터
  30. 30. 접근 방법 □ 4족 구조의 캐릭터 ?
  31. 31. 접근 방법 □ 척추를 다리 기준으로 병합
  32. 32. 접근 방법 □ 척추를 다리 기준으로 병합
  33. 33. 용어 정의 □ 척추를 다리 기준으로 병합 핀 세그먼트
  34. 34. 용어 정의 □ 척추를 다리 기준으로 병합 루트 세그먼트 핀 세그먼트
  35. 35. 접근 방법 □ 4족 구조의 캐릭터 ?
  36. 36. 접근 방법 □ 4족 구조의 캐릭터
  37. 37. 접근 방법 □ 4족 구조의 캐릭터
  38. 38. 접근 방법 □ 4족 구조의 캐릭터
  39. 39. 접근 방법 □ 4족 구조의 캐릭터
  40. 40. 접근 방법 □ 4족 구조의 캐릭터
  41. 41. 접근 방법 □ 6족 이상의 캐릭터도?
  42. 42. 접근 방법 정리 □ 척추를 세그먼트 단위로 병합 □ 루트 세그먼트에 경사 적용 □ 다음 세그먼트에 경사 적용 ■ 양 끝에 핀이 존재하는 세그먼트만 해당 □ 마지막 세그먼트까지 반복
  43. 43. 세그먼트 경사 적용 방법 □ 경사 측정 □ 세그먼트 회전 □ 기준 높이를 적용 ■ Ex) 다리 길이 □ 반복
  44. 44. 세그먼트 경사 적용 방법 □ 경사 측정
  45. 45. 세그먼트 경사 적용 방법 □ 경사 측정
  46. 46. 세그먼트 경사 적용 방법 □ 경사 측정
  47. 47. 세그먼트 경사 적용 방법 □ 세그먼트 회전
  48. 48. 세그먼트 경사 적용 방법 □ 세그먼트 회전
  49. 49. 세그먼트 경사 적용 방법 □ 기준 높이 적용
  50. 50. 세그먼트 경사 적용 방법 □ 기준 높이 적용
  51. 51. 세그먼트 경사 적용 방법 □ 반복 ■ 탈출조건: 경사각의 차이가 이하𝜀
  52. 52. 세그먼트 경사 적용 방법 □ 세그먼트 수에 따른 척추의 모습
  53. 53. 서스펜션 □ 완충장치 ■ 요철이 심한 지형에서 급격한 포즈 변형을 완화
  54. 54. 서스펜션 □ 완충장치 ■ 요철이 심한 지형에서 급격한 포즈 변형을 완화 □ 선형, 각 스프링 설치 ■ Hooke의 법칙: F= − 𝑘(X − X0) − 𝑐V
  55. 55. 서스펜션 □ 완충장치 ■ 요철이 심한 지형에서 급격한 포즈 변형을 완화 □ 선형, 각 스프링 설치 ■ Hooke의 법칙: ■ 필요한 힘과 토크를 계산 F= − 𝑘(X − X0) − 𝑐V
  56. 56. 서스펜션 □ 서스펜션의 중요성 서스펜션 적용 서스펜션 미적용
  57. 57. 데모: 게임 내 적용 모습
  58. 58. 다양한 애니메이션의 경사 적용
  59. 59. 요약 □ 세그먼트 기반의 경사 적용 방법 ■ 경사 측정 ■ 세그먼트 회전 ■ 기준높이 적용 □ 서스펜션
  60. 60. 의의 □ 평지 전용 애니메이션 이용 □ 복잡한 지형에서의 애니메이션을 절차적으로 생성 □ 4족 이상의 캐릭터에 모두 사용가능
  61. 61. 향후 계획 □ 경사 적용의 정확도 향상 □ 급격한 경사 변화에 대한 반응 ■ 절벽 근방에서 어색한 포즈 ■ 계단 형태의 지형에서의 진동 □ 수직 이상의 기울기 지형 ■ 절벽의 벽면, 동굴 천장
  62. 62. 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환
  63. 63. 목적 □ 물리 시뮬레이션을 통한 척추의 물리적 반응을 생성 ■ 관성에 따른 척추의 움직임 ■ 피격 반응 ■ 단, 원본 애니메이션을 최대한 존중
  64. 64. 필요성 □ 애니메이션이 자연스러워지길 기대함
  65. 65. 필요성 □ 애니메이션이 자연스러워지길 기대함 □ 휴리스틱한 방법보다 간단하고 효과적
  66. 66. 필요성 □ 애니메이션이 자연스러워지길 기대함 □ 휴리스틱한 방법보다 간단하고 효과적 □ 창발적인 애니메이션 생성 가능
  67. 67. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정
  68. 68. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정 □ 동역학 영역의 물리 시뮬레이션 ■ 운동의 원인(힘)이 필연적
  69. 69. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정 □ 동역학 영역의 물리 시뮬레이션 ■ 운동의 원인(힘)이 필연적 □ 서로 상반된 성질 ■ 애니메이션을 유지하면서 척추를 물리적으로 시뮬레이션
  70. 70. 접근 방법 □ 운동학 기반의 모션엔진 ■ 매 프레임 애니메이션에 의해 포즈가 결정 □ 동역학 영역의 물리 시뮬레이션 ■ 운동의 원인(힘)이 필연적 □ 서로 상반된 성질 ■ 애니메이션을 유지하면서 척추를 물리적으로 시뮬레이션
  71. 71. 접근 방법 □ 동역학 기반의 모션엔진 ■ 척추의 물리적 시뮬레이션 ■ 애니메이션 포즈를 제약조건으로 사용
  72. 72. 접근 방법 □ 동역학 기반의 모션엔진 ■ 척추의 물리적 시뮬레이션 ■ 애니메이션 포즈를 제약조건으로 사용 □ 문제점 ■ 포즈가 의도한 대로 나오지 않을 가능성 존재 ■ 리팩토링 비용 ↑
  73. 73. 접근 방법 □ 독립적인 물리 시뮬레이션 ■ 척추에 해당하는 구조(체인)를 물리적으로 시뮬레이션 ■ 물리 시뮬레이션 결과를 척추에 적용 ■ 애니메이션 포즈를 유지하기 위한 복원력
  74. 74. 체인 물리 시뮬레이션 □ 체인의 구조 □ Sandbox 시뮬레이터 □ 안정성 향상 □ 월드 스페이스 시뮬레이션
  75. 75. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 체인 물리 시뮬레이션
  76. 76. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 □ 강체는 각각의 척추에 대응 체인 물리 시뮬레이션
  77. 77. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 □ 강체는 각각의 척추에 대응 □ 척추와 동일한 계층 구조를 적용 체인 물리 시뮬레이션
  78. 78. 체인의 구조 □ 강체가 선형 및 각 제약조건으로 연결된 구조 □ 강체는 각각의 척추에 대응 □ 척추와 동일한 계층 구조를 적용 □ 체인의 한쪽 끝은 척추의 회전 중심에 고정 체인 물리 시뮬레이션
  79. 79. 체인의 구조 □ 에디터 설정 및 프리뷰 씬 체인 물리 시뮬레이션
  80. 80. Sandbox 시뮬레이터 □ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터 체인 물리 시뮬레이션
  81. 81. Sandbox 시뮬레이터 □ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터 □ 모션엔진에서 쉽게 쓸 수 있게 커스터마이징 체인 물리 시뮬레이션
  82. 82. Sandbox 시뮬레이터 □ AnimDynamics에 사용된 컴팩트 물리 시뮬레이터 □ 모션엔진에서 쉽게 쓸 수 있게 커스터마이징 □ 문제점 ■ Constraint solver의 안정성이 다소 떨어짐 체인 물리 시뮬레이션
  83. 83. 안정성 향상 □ Sub stepping ■ Delta time을 n sub step으로 분할 ■ 성능과 안정성을 트레이드오프 ■ 단순히 iteration수를 높이는 것 보다 효과적 체인 물리 시뮬레이션
  84. 84. 월드 스페이스 시뮬레이션 □ 목적 ■ 월드 좌표계에서 시뮬레이션 되는 것처럼 속임 ■ 체인의 시뮬레이션 영역은 컴포넌트 좌표계 체인 물리 시뮬레이션
  85. 85. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 체인 물리 시뮬레이션
  86. 86. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 체인 물리 시뮬레이션
  87. 87. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 체인 물리 시뮬레이션 ∆p
  88. 88. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 체인 물리 시뮬레이션 ∆p
  89. 89. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 체인 물리 시뮬레이션
  90. 90. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 □ 체인 전체에 역 델타 트랜스폼 적용 체인 물리 시뮬레이션
  91. 91. 월드 스페이스 시뮬레이션 □ 체인을 고정하는 위치 제약조건에 델타 트랜스폼 적용 □ 물리 시뮬레이션 □ 체인 전체에 역 델타 트랜스폼 적용 체인 물리 시뮬레이션 ∆p−1
  92. 92. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용
  93. 93. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변)
  94. 94. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변) ■ 초기 로컬 트랜스폼: ■ 변형 후 로컬 트랜스폼: R 𝑡 = C 𝑡P𝑡 −1 R0 = C0P0 −1
  95. 95. 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변) ■ 초기 로컬 트랜스폼: ■ 변형 후 로컬 트랜스폼: ■ 로컬 트랜스폼 변화량: ∆R = R0 −1 R 𝑡 R 𝑡 = C 𝑡P𝑡 −1 R0 = C0P0 −1
  96. 96. ∆R = P0C0 −1 C 𝑡P𝑡 −1 시뮬레이션 결과 적용방법 □ 강체의 로컬 트랜스폼 변화량을 척추에 적용 ■ 로컬 트랜스폼은 회전 성분만 고려 (척추의 길이는 불변) ■ 초기 로컬 트랜스폼: ■ 변형 후 로컬 트랜스폼: ■ 로컬 트랜스폼 변화량: ∆R = R0 −1 R 𝑡 R 𝑡 = C 𝑡P𝑡 −1 R0 = C0P0 −1
  97. 97. 복원력 □ 체인이 초기 상태로 복귀하려는 힘
  98. 98. 복원력 □ 체인이 초기 상태로 복귀하려는 힘 ■ 초기상태: ■ 원본 애니메이션 포즈로 복귀 ∆R = R0 −1 R 𝑡 = I
  99. 99. 복원력 □ 체인이 초기 상태로 복귀하려는 힘 ■ 초기상태: ■ 원본 애니메이션 포즈로 복귀 □ 체인이 나열된 방향으로 외력을 적용 ∆R = R0 −1 R 𝑡 = I
  100. 100. 복원력 □ 체인이 초기 상태로 복귀하려는 힘 ■ 초기상태: ■ 원본 애니메이션 포즈로 복귀 □ 체인이 나열된 방향으로 외력을 적용 ■ 물리적으로 올바른 방법은 아님 ■ 효과는 충분! ∆R = R0 −1 R 𝑡 = I
  101. 101. 데모: 관성에 의한 척추 변형 □ 복원력 적용 유무 비교
  102. 102. 데모: 피격 반응
  103. 103. 요약 □ 체인 물리 시뮬레이션 □ 시뮬레이션 결과 적용 방법 □ 복원력
  104. 104. 의의 □ 운동학 기반의 애니메이션에 물리 반응 적용 □ 간단하고 효과적인 방법 □ 원본 애니메이션은 최대한 유지
  105. 105. 향후 계획 □ 물리 시뮬레이션 안정성 확보 ■ PBD (Position Based Dynamics) □ 물리적으로 올바른 복원력 적용
  106. 106. 새로운 기능들 1. 지면의 경사 적용 2. 물리적 반응 모션 3. 애니메이션 전환
  107. 107. 목적 □ 애니메이션 간의 자연스러운 트랜지션
  108. 108. 필요성 □ 엔진에서 제공하는 기능은?
  109. 109. 필요성 □ 엔진에서 제공하는 기능은?
  110. 110. 필요성 □ 엔진에서 제공하는 기능은? □ 발 미끄러짐 절대 금지
  111. 111. On our own □ 자연스러운 애니메이션 전환 ■ 포즈 블렌딩 ■ 발 위치 제어
  112. 112. 포즈 블렌딩 Source
  113. 113. 포즈 블렌딩 □ 소스 포즈의 스냅샷 Source 𝑡
  114. 114. 포즈 블렌딩 □ 소스 포즈의 스냅샷 □ 타겟 포즈는 시간에 따라 변화 Source Target 𝑡
  115. 115. 포즈 블렌딩 □ 소스 포즈의 스냅샷 □ 타겟 포즈는 시간에 따라 변화 □ 두 포즈의 로컬 트랜스폼을 선형 보간 𝑡 𝑡 + 𝑡 𝑏𝑙𝑒𝑛𝑑 Source Target
  116. 116. 포즈 블렌딩 □ 소스 포즈의 스냅샷 □ 타겟 포즈는 시간에 따라 변화 □ 두 포즈의 로컬 트랜스폼을 선형 보간 Source Target 𝑡 𝑡 + 𝑡 𝑏𝑙𝑒𝑛𝑑 발 위치 제어의 편의성 증가! 퍼포먼스 이득!
  117. 117. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리
  118. 118. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리 ■ 스냅샷 또는 타겟 포즈의 발이 공중에 있을 경우 위치 보간 ■ 스냅샷과 타겟 포즈의 발이 모두 지면위에 있을 경우 스텝 추가
  119. 119. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리 타겟 포즈 발 위치 지면 공중 스냅샷 포즈 발 위치 지면 스텝 추가 보간 공중 보간 보간
  120. 120. 발 위치 제어 방법 □ 스냅샷과 타겟 포즈의 발 위치에 따른 처리 □ 스텝 추가 ■ 보간 시 발 미끄러짐 발생 ■ 시간에 따른 sin 값을 발 높이에 더함 타겟 포즈 발 위치 지면 공중 스냅샷 포즈 발 위치 지면 스텝 추가 보간 공중 보간 보간
  121. 121. 발 위치 제어 순서 □ 공중에 떠있는 발 우선 ■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지
  122. 122. 발 위치 제어 순서 □ 공중에 떠있는 발 우선 ■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지 □ 타겟 위치로부터 가장 멀리 떨어진 발 ■ 무게중심에서 가장 벗어남을 의미
  123. 123. 발 위치 제어 순서 □ 공중에 떠있는 발 우선 ■ 스텝 추가로 인해 공중 동시 체류를 최대한 방지 □ 타겟 위치로부터 가장 멀리 떨어진 발 ■ 무게중심에서 가장 벗어남을 의미 □ 랜덤
  124. 124. 데모: 애니메이션 전환
  125. 125. 요약 □ 자연스러운 모션 전환 ■ 포즈 블렌딩 ■ 발 위치 제어
  126. 126. 향후 계획 □ 포즈 블렌딩 개선 ■ Inertialization: High-Performance Animation Transitions in Gears of War, GDC 2018 ▪ 스냅샷 포즈와 타겟 포즈를 블렌딩 ▪ 스냅샷 포즈의 관성을 타겟 포즈에 적용
  127. 127. 마치며... □ 모션엔진의 새로운 기능들 소개 ■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성 ■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가 ■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환
  128. 128. 마치며... □ 모션엔진의 새로운 기능들 소개 ■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성 ■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가 ■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환 □ 발전 가능성과 개선의 여지가 많음
  129. 129. 마치며... □ 모션엔진의 새로운 기능들 소개 ■ 지면의 경사 적용: 다양한 지형과 캐릭터에 적응적인 모션 생성 ■ 물리적 반응 모션: 척추의 움직임에 자연스러움 추가 ■ 애니메이션 전환: 포즈 블렌딩, 발 위치 제어를 통한 자연스러운 애니메이션 전환 □ 발전 가능성과 개선의 여지가 많음 □ 효율적이고 실용적인 절차적 애니메이션 시스템!
  130. 130. Q&A
  131. 131. 감사합니다.

×