KR20210123614A - 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법 - Google Patents

모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법 Download PDF

Info

Publication number
KR20210123614A
KR20210123614A KR1020200040981A KR20200040981A KR20210123614A KR 20210123614 A KR20210123614 A KR 20210123614A KR 1020200040981 A KR1020200040981 A KR 1020200040981A KR 20200040981 A KR20200040981 A KR 20200040981A KR 20210123614 A KR20210123614 A KR 20210123614A
Authority
KR
South Korea
Prior art keywords
posture
character
motion
data
posture data
Prior art date
Application number
KR1020200040981A
Other languages
English (en)
Other versions
KR102359969B1 (ko
Inventor
최명걸
배태성
이은지
김하은
박민지
Original Assignee
가톨릭대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 가톨릭대학교 산학협력단 filed Critical 가톨릭대학교 산학협력단
Priority to KR1020200040981A priority Critical patent/KR102359969B1/ko
Publication of KR20210123614A publication Critical patent/KR20210123614A/ko
Application granted granted Critical
Publication of KR102359969B1 publication Critical patent/KR102359969B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/403D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/246Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
    • G06T7/251Analysis of motion using feature-based methods, e.g. the tracking of corners or segments involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • G06T7/33Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Processing Or Creating Images (AREA)

Abstract

본 발명은 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법에 관한 것이다. 본 발명에 따르면, 캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고 수집된 자세 데이터를 기초로 자세 검색 DB를 구축하는 단계와, 매 프레임마다 사용자의 머리와 양 손을 포함한 신체 부위에 장착된 복수의 모션 센서로부터 위치 값을 각각 획득하는 단계와, 현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 상기 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색하는 단계, 및 상기 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어하는 단계를 포함하는 캐릭터 동작 제어 방법을 제공한다.
본 발명에 따르면, 머리와 양손에 설치된 모션 센서와 가상 캐릭터를 위하여 제작된 소량의 애니메이션 데이터를 기반으로 사용자의 자세와 유사한 캐릭터 자세를 직접 검색하여 캐릭터의 동작을 빠르게 제어할 수 있고 캐릭터 제어 과정에서 창작자가 의도한 캐릭터 고유의 스타일이 보존될 수 있다.

Description

모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법{Character motion control apparatus by using motion sensors and animation data and method thereof}
본 발명은 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법에 관한 것으로서, 보다 상세하게는 가상 캐릭터를 위하여 제작된 소량의 애니메이션 데이터를 기반으로 사용자의 자세와 유사한 캐릭터 자세를 직접 검색하여 캐릭터의 동작을 제어하는 캐릭터 동작 제어 장치 및 그 방법에 관한 것이다.
게임 등의 디지털 스토리텔링에 사용되기 위해 창조된 가상 캐릭터에는 창작자가 의도한 뚜렷한 개성이 부여된다. 캐릭터의 개성은 캐릭터의 외형뿐만 아니라 자세나 동작에서도 고유한 스타일로 나타난다. 캐릭터 동작의 스타일은 스토리텔링에 중요한 요소이므로 가능한 창작자가 만든 그대로 표현되는 것이 마땅하다.
예를 들어 버튼으로 조작하는 전통적인 비디오 게임의 경우, 사용자가 같은 상황에서 같은 점프버튼을 누르더라도 현재 선택된 캐릭터에 따라 서로 다른 스타일의 동작이 플레이되어야 한다. 사용자 입력의 자유도는 제한적이지만 창작자가 의도한 캐릭터 고유의 스타일이 온전히 표현될 수 있다는 장점이 있다.
반면 최근 VR HMD 장비의 보급과 함께 늘어나고 있는 인체 모션 센서를 이용하는 게임의 경우, 사용자 신체의 움직임이 그대로 복사되어 가상 캐릭터의 동작으로 나타난다. 그 결과 사용자의 동작 제어에 대한 자유도가 무한에 가깝게 확장되지만, 창작자가 의도한 캐릭터 고유의 동작 스타일은 완전히 사라지는 부작용이 발생한다.
한편, 가상현실 게임의 경우에는 웨어러블 모션 센서를 이용 한 방법이 널리 사용되고 있다. 모션 센서란 인체에 착용되어 해당 부분에 대한 3차원 공간상의 위치와 방향에 대한 정보를 지속적으로 측정하는 장치이다.
일반적으로 사용자 몸에 부착하는 모션 센서의 수는 인체 자세에 대한 모든 정보를 얻기에 부족하다. 예를 들어 가상현실에서 주로 사용되는 모션 센서는 주로 3개(머리와 양손에 장착)이며, 경우에 따라 양발, 허리 등에 2~3개의 센서가 추가되기도 한다. 이렇게 제한된 정보로부터 전체 인체 자세를 유추하기 위해서 기계 학습에 기초한 기법들이 주로 연구되어 왔다.
그런데, 기계 학습은 대량의 학습 데이터를 필요로 한다. 더욱이, 게임 캐릭터를 위해 특별히 제작된 동작 데이터는 그 양이 일반적인 기계학습법의 학습 데이터로 사용하기에는 턱없이 부족하다. 따라서 대량의 학습 데이터를 필요로 하는 기계학습법을 피하는 대신, 소량의 애니메이션 데이터로부터 사용자의 자세와 유사한 캐릭터 자세를 직접 검색하여 사용하는 기술이 요구된다.
본 발명의 배경이 되는 기술은 한국공개특허 제2017-0006247호(2017.01.17 공개)에 개시되어 있다.
본 발명은, 가상 캐릭터를 위하여 제작된 소량의 애니메이션 데이터를 기반으로 사용자의 자세와 유사한 캐릭터 자세를 직접 검색하여 캐릭터의 동작을 제어하며 캐릭터의 고유 스타일이 보존될 수 있는 캐릭터 동작 제어 장치 및 그 방법을 제공하는데 목적이 있다.
본 발명은, 캐릭터 동작 제어 장치를 이용한 캐릭터 동작 제어 방법에 있어서, 캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고 수집된 자세 데이터를 기초로 자세 검색 DB를 구축하는 단계와, 매 프레임마다 사용자의 머리와 양 손을 포함한 신체 부위에 장착된 복수의 모션 센서로부터 위치 값을 각각 획득하는 단계와, 현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 상기 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색하는 단계, 및 상기 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어하는 단계를 포함하는 캐릭터 동작 제어 방법을 제공한다.
또한, 상기 자세 검색 DB를 구축하는 단계는, 상기 캐릭터의 동작 별 기 저장된 동작 데이터로부터 해당 동작을 구성하는 시간별 자세 데이터를 수집하는 단계와, 전체 동작에 대응하여 수집된 전체 자세 데이터 중에서 일부의 자세 데이터들을 샘플링하는 단계, 및 상기 샘플링된 자세 데이터들을 상기 자세 검색 DB에 저장하는 단계를 포함할 수 있다.
또한, 상기 샘플링하는 단계는, 해당 동작을 구성한 시간별 자세 데이터 중 주변 시간 대비 속도가 지역적 최소 값을 가지는 적어도 하나의 자세 데이터를 1차적으로 샘플링하고, 시간 순으로 나열된 상기 시간별 자세 데이터 중에 일부를 설정 시간 간격에 따라 간헐적으로 선택하는 방식으로 2차적으로 샘플링할 수 있다.
또한, 상기 시간별 자세 데이터를 수집하는 단계는, 상기 수집한 자세 데이터의 구성을 단순화하도록, 상기 자세 데이터 내 포함된 캐릭터의 각 관절의 위치값과 방향값 중 방향값을 소거하고, 캐릭터의 머리 및 양 손에 대응한 관절 부분을 제외한 나머지 관절의 위치값을 소거하여 상기 자세 데이터를 재정리할 수 있다.
또한, 상기 현재 사용자 자세와 매칭되는 자세 데이터를 검색하는 단계는, 상기 자세 검색 DB 내 저장된 자세 데이터(Pi) 중에서 현재 사용자 자세와 매칭되는 o번째 자세 데이터(Po)를 아래 수학식을 이용하여 검색할 수 있다.
Figure pat00001
여기서, S는 상기 각 모션 센서의 위치 값의 집합, i는 저장된 자세 데이터의 인덱스, d(S,Pi)는 S와 Pi 간 차이를 정의하는 함수, Ω은 상기 자세 검색 DB 내 저장된 자세 데이터의 집합을 나타낸다.
또한, 상기 d(S,Pi)는 아래의 수학식으로 정의될 수 있다.
Figure pat00002
여기서, k는 상기 모션 센서의 개수, j는 사용자와 캐릭터 간 대응하는 신체 부위의 인덱스, pj는 자세 데이터(Pi)에 포함된 k개의 위치 값 중 j번째 위치 값, Ri는 S와 Pi를 전역 공간에서 정합하는 정합 행렬, Dj는 사용자에게 장착된 각 모션 센서 및 캐릭터의 각 관절 간의 위치와 방향에 대한 차이를 보정하는 보정 행렬, T는 캐릭터의 신체 크기와 상기 사용자의 신체 크기 간의 차이를 보정하는 크기 변환 행렬을 나타낸다.
또한, 상기 현재 사용자 자세와 매칭되는 자세 데이터를 검색하는 단계는, 검색 대상이 되는 자세 데이터(Pi) 마다 상기 정합 행렬(Ri)을 각각 결정하되, 캐릭터와 사용자의 서로 대응한 신체 부위 간의 위치 오차를 최소화하는 위치 변환 행렬 R을 아래 수학식에 의해 연산하여 정합 행렬(Ri)을 결정한 후 상기 d(S,Pi) 연산 식에 대입할 수 있다.
Figure pat00003
또한, 상기 위치 변환 행렬(R)은 설정 제약 조건에 따라 아래 수학식과 같은 호모지니어스 좌표계로 표현되며, 상기 설정 제약 조건은, 캐릭터의 크기, 이동 및 회전 변환 중에서 크기 변환을 금지하여 이동 및 회전 변환만 허용하는 조건, 지면과 수직한 y축을 기준으로 하는 회전만 허용하는 조건, y축 상의 이동을 금지하는 조건을 포함할 수 있다.
Figure pat00004
여기서, θ는 y축을 기준으로 하는 회전 각도, tx는 x축 방향 이동 거리, tz는 z축 방향 이동 거리이다.
또한, 상기 정합 행렬(Ri)에 대한 수학식은 상수와 변수를 분리하여 정리하면 아래와 같이 각 변수 α, β, tx, ty에 대한 최적화 식으로 간소화될 수 있다.
Figure pat00005
여기서, A는 상수 행렬이고, b는 상수 벡터이다.
또한, 상기 캐릭터의 자세를 실시간 제어하는 단계는, 현재 프레임과 직전 프레임에서 검색된 자세 데이터 간의 자세 변화의 비율을 아래의 수학식을 통하여 제한할 수 있다.
Figure pat00006
여기서, Pt'는 현재 프레임에 적용된 자세 변화의 비율, Po는 현재 프레임에서 검색된 자세 데이터, Pt-1는 이전 프레임에서 검색된 자세 데이터, ω는 가중치,
Figure pat00007
는 캐릭터의 자세 데이터에서 위치 값의 경우 선형 보간법을 하고 방향 값의 경우 구면 보간법을 적용하는 연산을 나타낸다.
그리고, 본 발명은, 캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고 수집된 자세 데이터를 기초로 자세 검색 DB를 구축하는 데이터 구축부와, 매 프레임마다 사용자의 머리와 양 손을 포함한 신체 부위에 장착된 복수의 모션 센서로부터 위치 값을 각각 획득하는 센서 데이터 획득부와, 현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 상기 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색하는 자세 검색부, 및 상기 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어하는 자세 제어부를 포함하는 캐릭터 동작 제어 장치를 제공한다.
또한, 상기 데이터 구축부는, 상기 캐릭터의 동작 별 기 저장된 동작 데이터로부터 해당 동작을 구성하는 시간별 자세 데이터를 수집하고, 전체 동작에 대응하여 수집된 전체 자세 데이터 중에서 일부의 자세 데이터들을 샘플링하여 상기 자세 검색 DB에 저장할 수 있다.
본 발명에 따르면, 머리와 양손에 설치된 모션 센서와 가상 캐릭터를 위하여 제작된 소량의 애니메이션 데이터를 기반으로 사용자의 자세와 유사한 캐릭터 자세를 직접 검색하여 캐릭터의 동작을 빠르게 제어할 수 있고 캐릭터 제어 과정에서 창작자(애니메이터)가 의도한 캐릭터 고유의 스타일이 보존될 수 있다.
도 1은 본 발명의 실시예에 따른 캐릭터 동작 제어 장치의 구성을 나타낸 도면이다.
도 2는 도 1을 이용한 캐릭터 동작 제어 방법을 설명하는 도면이다.
도 3은 본 발명의 실시예에서 캐릭터의 자세 데이터를 간소화하는 원리를 설명하는 도면이다.
도 4는 캐릭터의 점프 동작에 대한 시간별 자세 데이터를 예시한 도면이다.
도 5는 본 발명의 실시예에 따른 데이터 샘플링 과정을 설명하는 도면이다.
도 6은 본 발명의 실시예에서 사용자와 캐릭터 간 보정 행렬을 획득하는 방법을 설명한 도면이다.
도 7은 본 발명의 실시예에서 사용자와 캐릭터 간 데이터 정합 개념을 설명한 도면이다.
도 8은 본 발명의 실시예에서 후처리 과정을 통하여 캐릭터의 손 위치를 보정한 모습을 예시한 도면이다.
도 9는 본 발명의 실시예에서 인접 프레임 간 캐릭터 자세 변화의 비율을 제한하는 모습을 예시한 도면이다.
도 10은 유사한 사용자 입력값에 대한 결과 차이를 나타낸 도면이다.
도 11은 동작 센서의 추가에 따른 비교 결과를 나타낸 도면이다.
그러면 첨부한 도면을 참고로 하여 본 발명의 실시 예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다.
본 발명은 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 기법으로, 대량의 학습 데이터를 필요로 하는 복잡한 기계 학습법을 피하는 대신 소량의 애니메이션 데이터 만으로 유사 캐릭터 자세를 직접 검색하여 사용할 수 있고, 캐릭터 제어 과정에서 캐릭터 스타일이 보존될 수 있는 캐릭터 동작 제어 기법을 제안한다.
도 1은 본 발명의 실시예에 따른 캐릭터 동작 제어 장치의 구성을 나타낸 도면이다.
도 1에 도시된 것과 같이, 본 발명의 실시예에 따른 캐릭터 동작 제어 장치(100)는 데이터 구축부(110), 센서 데이터 획득부(120), 자세 검색부(130), 자세 제어부(140)를 포함한다.
데이터 구축부(110)는 캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고 수집된 자세 데이터를 기초로 자세 검색 DB를 구축한다.
여기서 데이터 구축부(110)는 전체 동작에 대응하여 수집된 전체 자세 데이터 중에서 일부를 샘플링하여 선택된 데이터만을 검색 대상 집합으로 지정함으로써 추후 검색의 효율을 높인다.
센서 데이터 획득부(120)는 매 프레임마다 사용자의 머리와 양 손을 포함한 신체 부위에 장착된 복수의 모션 센서로부터 위치 값을 각각 획득한다.
캐릭터 동작 제어 장치(100)는 통신부(미도시)를 포함하여 각각의 모션 센서와 유무선 연결되어 모션 센서의 데이터를 실시간 획득할 수 있다. 물론, 통신부는 Wi-Fi, Bluetooth, RF, WLAN 등의 무선 네트워크 방식을 통하여 각각의 모션 센서와 무선 연결될 수 있다.
또한, 본 발명의 실시예는 가상 현실 게임에서 요구되는 최소한의 센서 즉, 머리와 양 손을 포함한 3개의 모션 센서를 활용하는 것을 대표 예시로 한다. 다만, 이 경우 상체 동작 위주로 센싱이 이루어지며 하체 동작을 추가로 정확하게 매칭하고자 한다면 허리 및 양 발에 모션 센서를 추가로 장착할 수 있다.
자세 검색부(130)는 현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 상기 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색한다.
자세 제어부(140)는 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어한다. 이때, 자세 제어부(140)는 현재 프레임과 직전 프레임에서 검색된 자세 데이터 간의 자세 변화의 비율을 제한함으로써 급작스런 자세 변화를 방지할 수 있다.
캐릭터 동작 제어 장치(100)는 가상 현실 영상을 출력하는 출력부를 더 포함할 수 있으며, PC, 노트북, 스마트폰, 스마트 패드, 일반 디스플레이 기기 등에 소프트웨어와 같은 응용 프로그램으로 구현될 수 있으며, 게임 소프트웨어에 내장될 수도 있다. 물론, 캐릭터 동작 제어 장치(100)는 사용자의 머리에 장착되는 헤드마운트 디스플레이(HMD)에 응용 프로그램으로 내장되어 동작할 수도 있다.
본 발명에서 제안하는 캐릭터 동작 제어 방법은 매 프레임마다 다음의 과정을 반복한다. 먼저, 제한된 개수의 모션 센서로부터 사용자의 현재 자세 정보를 얻는다. 다음, 캐릭터를 위해 제작된 동작 데이터를 대상으로 현재 사용자의 자세와 가장 유사한 자세를 검색한다. 이때, 이때 전역 위치와 방향에 대한 정합행렬 계산을 최대한 빠르게 수행하는 알고리즘을 사용한다. 마지막으로, 검색된 자세를 보정하여 캐릭터 자세 변화의 연속성을 유지하도록 한다.
이하에서는 본 발명의 실시예에 따른 캐릭터 동작 제어 방법을 구체적으로 설명한다. 도 2는 도 1을 이용한 캐릭터 동작 제어 방법을 설명하는 도면이다.
먼저, 데이터 구축부(110)는 캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고, 수집된 자세 데이터를 기초로 자세 검색 DB를 구축한다(S210,S220).
여기서, 캐릭터의 각 동작을 구성하는 시간별 자세 데이터는 장착자에 의해 기 제작된 애니메이션 데이터부터 획득 가능한 요소이다. 데이터 구축부(110)는 캐릭터 애니메이션 데이터가 저장된 애니메이션 DB(미도시)로부터 해당 캐릭터에서 수행 가능한 여러 동작들과 해당 동작을 구성하는 시간별 자세 데이터를 로딩(수집)하고 이를 기초로 자세 검색 DB를 구축할 수 있다.
여기서, 애니메이션 DB는 캐릭터 동작 제어 장치(100)에 포함될 수도 있고 캐릭터와 관련한 정보를 보유한 외부 서버(제작사 서버 등)에 포함될 수도 있다. 후자의 경우 캐릭터 동작 제어 장치(100)는 외부 서버에 네트워크 접속하여 관련 데이터를 수집할 수 있다.
S210 단계는 캐릭터에 대응하여 제작된 애니메이션 데이터로부터 캐릭터의 각 동작에 대한 시간별 자세 데이터를 수집하는 단계이고, S220 단계는 수집된 데이터를 기초로 자세 검색 DB를 구축하는 단계이다.
이때, 동작에 대응한 시간별 자세 데이터란, 해당 동작(예: 점프, 발차기, 펀치 동작)을 취하는 경우에 시간 흐름에 따라 가변하는 자세 데이터를 의미한다. 따라서 어떠한 동작(모션)을 구성하는 자세 데이터들은 프레임(시간) 별로 존재하게 된다.
여기서, 데이터 구축부(110)는 수집된 자세 데이터 전부를 사용하지 않고 사전 샘플링을 통하여 선택한 일부 자세 데이터만을 이용하여 자세 검색 DB를 구축함으로써 검색 대상이 되는 데이터의 수를 제한하고 DB를 경량화하며 검색 속도와 효율을 높인다.
또한, 데이터 구축부(110)는 자세 데이터에 포함된 캐릭터의 각 관절의 위치값과 방향값 중 위치 값만을 이용하여 데이터를 재구성할 수 있고 이를 통하여 캐릭터 자세 정보를 단순화함은 물론 추후 검색 단계에서 캐릭터 관절의 방향값을 무시하여 검색 효율을 높인다.
이 모든 단계는 데이터의 전처리 과정에 해당한다. 즉, 데이터 구축부(110)는 실시간 자세 검색의 효율성을 최대화하기 위해서 캐릭터 동작 데이터에서의 캐릭터 관절 구조를 단순화하고 검색 대상이 되는 데이터의 수를 제한하기 위한 사전 샘플링 과정을 수행한다.
구체적으로, 데이터 구축부(110)는 캐릭터의 동작 별 기 저장된 동작 데이터로부터 해당 동작을 구성하는 시간별 자세 데이터를 애니메이션 DB로부터 수집한다(S210).
캐릭터의 자세 데이터는 일반적으로 캐릭터를 구성하는 전체 관절에 대한 위치와 방향 값에 관한 정보를 포함하여 구성된다. 데이터 구축부(110)는 이와 같은 속성을 가지는 자세 데이터의 정보를 그대로 활용할 수도 있지만, 자세 데이터의 정보를 단순화할 수 있다.
이를 위해, 데이터 구축부(110)는 자세 데이터 내 포함된 캐릭터의 각 관절의 위치값과 방향값 중 방향값을 소거한다. 또한, 캐릭터르 구성하는 전체 관절 중에서도 머리 및 양 손에 대응한 세 가지 관절 부분을 제외한 나머지 관절(모션 센서의 장착 부위와는 무관한 관절)에 대한 위치값을 소거하여 자세 데이터를 재정리할 수 있다.
도 3은 본 발명의 실시예에서 캐릭터의 자세 데이터를 간소화하는 원리를 설명하는 도면이다.
일반적으로 게임 등에 사용되는 가상 캐릭터의 관절 구조는 일반 모션캡쳐 데이터에서 사용되는 관절 구조보다 복잡한 경우가 많다. 예를 들면, 도 3의 (a)와 같이, 캐릭터 머리카락의 움직임이나 옷의 펄럭임 등을 표현하기 위해 뼈대(관절)를 추가하는 경우가 있으며, 캐릭터가 사용 중인 도구나 무기(예: 활) 등에 뼈대를 추가하는 경우도 있다. 본 실시예의 경우 캐릭터의 신체 자세만을 제어 대상으로 하므로, 도 3의 (b)와 같이 신체가 아닌 부분에 대한 캐릭터 관절 구조는 계산에서 제외하였다.
일반적으로 캐릭터의 동작 데이터는 시간에 따른 자세의 변화로 표현되므로,
Figure pat00008
와 같은 집합으로 표현된다. 여기서, Pi은 해당 동작에 대한 i번째 프레임(시간)의 자세 데이터, n은 해당 동작을 구성하는 전체 프레임의 수를 나타낸다.
하나의 자세 데이터 P는 다시 3차원 위치와 방향 값의 집합
Figure pat00009
으로 표현된다.
Figure pat00010
Figure pat00011
는 각각 해당 자세의 전역 위치와 방향값이고,
Figure pat00012
는 각 관절의 3차원 방향값이다. m은 관절 구조에 있는 총 관절의 개수다.
본 발명의 실시예는 검색 단계(S240)에서 관절의 방향값은 사용하지 않고 3차원 위치 값만을 사용하도록 하기 위하여, 도 3의 (c)와 같이 각 관절의 위치 정보만 남기고 방향 정보를 제거한다.
물론, 모션 센서를 통해서도 해당 신체 부위의 방향에 대한 정보를 쉽게 취득할 수 있으므로 검색에 방향값을 모두 고려하는 것은 어려운 문제가 아니지만, 실험을 통해 경험적으로 발견한 사실은 방향값까지 고려했을 때의 검색 결과과 오히려 좋지 못했다는 것이다. 그 이유는 게임 캐릭터의 특성상 캐릭터 고유의 자세가 일반 사용자가 묘사하기 어려운 디테일을 포함하고 있는 경우가 많기 때문이다. 예를 들어 서로 다른 캐릭터는 일반적인 서있는 자세에서 각자의 스타일에 따라 손목의 방향이 완전히 다를 수 있다. 이러한 디테일은 사용자가 무시할 수 있도록 하기 위하여 캐릭터 관절의 방향값은 검색 단계에서 무시한다.
본 발명의 실시예의 경우 검색에서 위치값만 사용하므로 모든 동작 데이터의 관절에 대해 미리 정기구학(forward kinematics) 계산을 수행하여 3차원 좌표값을 계산한다. 그리고, 검색 단계(S240)에서 각 관절과 사용자에게 장착된 모션 센서를 일대일 매칭하여 비교하므로, 도 3의 (d)와 같이 해당하는 관절(머리, 좌우 양손)의 위치 값만 남겨둔다.
결과적으로 단순화된 자세 Pi의 형태는
Figure pat00013
로 표현된다. pi는 모션 센서와 대응되는 각 관절 부위의 3차원 위치값이고 k는 모션 센서의 개수이다. 본 발명의 실시예의 경우, 머리와 양 손에 각각 모션 센서가 장착되므로 k=3이다.
데이터 간소화 이후, 데이터 구축부(110)는 전체 동작에 대응하여 수집된 전체 자세 데이터 중에서 일부의 자세 데이터들을 샘플링(sampling)하고 이를 자세 검색 DB에 저장한다(S220).
데이터 샘플링을 진행하는 이유는 다음과 같다. 본 발명에서 사용하는 검색 알고리즘은 선형 검색이다. 일반적으로 동작 데이터의 프레임 간격은 매우 짧기 때문에, 시간적으로 인근한 프레임들은 서로 매유 유사한 자세를 나타낸다. 이때, 거의 비슷한 자세들은 검색 대상에서 제외하면 검색의 효율을 높일 수 있다. 따라서 전체 동작 데이터를 샘플링하여 선택된 프레임만을 검색 대상 집합으로 지정한다.
도 4는 캐릭터의 점프 동작에 대한 시간별 자세 데이터를 예시한 도면이다.
도 4와 같이, 모션 데이터의 경우 비슷한 시간대의 데이터는 매우 유사한 형태를 띄며, 이러한 모션 데이터를 일일이 검색하는 것은 매우 비효율적인 작업이므로 효율적인 사용을 위해 전체 데이터 중 일부를 샘플링하여 사용하는 것이 바람직하다.
도 5는 본 발명의 실시예에 따른 데이터 샘플링 과정을 설명하는 도면이다.
도 5를 참조하면 임의 동작에 대한 시간별 자세 데이터 중에서 중요 프레임(파란색)을 1차로 샘플링하고(도 5의 (a)), 일정 시간 간격으로 프레임(빨간색)을 2차로 샘플링하여(도 5의 (b)), 샘플링된 데이터만을 자세 검색 DB에 저장하는 모습을 나타낸다. 이러한 샘플링 과정은 캐릭터의 개별 동작마다 수행된다.
1차 샘플링 단계에서, 데이터 구축부(110)는 해당 동작을 구성한 시간별 자세 데이터 중 주변 시간 대비 속도가 지역적 최소 값을 가지는 적어도 하나의 자세 데이터를 1차적으로 샘플링한다.
즉, 캐릭터의 해당 동작 시 머리 및 양손에 해당한 세 가지 관절 부위에서 순간적으로 저속 또는 멈춤이 발생한 시점에 해당한 자세 데이터를 1차적으로 샘플링한다. 즉, 해당 동작 시에 해당 관절 부위에 대한 시간에 따른 속도 그래프가 지역적으로 최소값을 나타내는 순간의 자세 데이터를 선택한다.
예를 들어, 머리 부위의 센서를 기반으로 점프 동작의 경우 가장 높이 뛰어오른 순간의 자세 데이터, 착지 과정에서 무릎이 굽혀진 순간의 자세 데이터, 무릎이 펼쳐져 자세가 안정화된 순간의 자세 데이터, 팔 동작이 정리 되면서 손의 움직임이 멈춘 순간의 자세 데이터 등을 1차적으로 샘플링한다. 이러한 데이터는 반드시 검색될 필요가 있는 중요한 데이터에 해당한다.
이후에는, 2차 샘플링을 진행하는데, 이는 시간 간격으로 수행되는 무작위 샘플링에 해당한다. 즉, 데이터 구축부(110)는 도 4의 좌측 그림과 같이 시간 순으로 나열된 시간별 자세 데이터 중에 일부를 설정 시간 간격에 따라 간헐적으로 선택하는 방식으로 2차적으로 샘플링한다. 결과적으로 도 4의 우측 그림과 같이, 1차 및 2차 선택된 자세 데이터만을 이용하여 자세 검색 DB를 구축한다.
창작자에 의해 만들어진 캐릭터 동작 데이터는 양이 제한적인데, 본 발명의 실시예는 반드시 검색될 필요가 있는 중요 자세를 1차적으로 선택하며 나머지 부분에 대해서는 일정한 시간 간격으로 2차적으로 샘플링하여 DB를 구축한다.
이후에는 사용자의 머리와 양손에 설치된 모션 센서로부터 모션 데이터를 획득하고 각 신체 부위의 모션 데이터와 일치하는 캐릭터의 자세 데이터를 자세 검색 DB로부터 검색하여 가상 현실 상에 표출되는 캐릭터 동작을 실시간 제어한다.
우선, 센서 데이터 획득부(120)는 매 프레임마다 사용자의 머리와 양 손에 장착된 복수의 모션 센서로부터 해당 부위에 대한 위치 값을 각각 획득하여, 이를 자세 검색부(130)로 전달한다(S230).
자세 검색부(130)는 현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색한다(S240).
자세 검색부(130)는 자세 검색 DB에 저장된 모든 자세 데이터를 대상으로 선형 검색을 수행한다. 현재 사용자가 장착한 모션센서 위치의 집합을
Figure pat00014
라고 할 때 최적의 캐릭터 자세는 다음의 방법으로 검색된다.
자세 검색부(130)는 자세 검색 DB 내 저장된 자세 데이터(Pi) 중에서 현재 사용자 자세와 매칭되는 o번째 자세 데이터(Po)를 아래 수학식 1에 의해 검색한다.
Figure pat00015
여기서, S는 상기 각 모션 센서의 위치 값의 집합, i는 저장된 자세 데이터의 인덱스, d(S,Pi)는 S와 Pi 간 차이를 정의하는 함수이다. 그리고, Ω은 자세 검색 DB 내 저장된 자세 데이터의 집합이며, 샘플링된 프레임 번호의 집합에 해당한다.
이때, 함수 d(S,Pi)는 아래의 수학식 2와 같이 정의된다.
Figure pat00016
여기서, k는 모션 센서의 개수, j는 사용자와 캐릭터 간 대응하는 신체 부위의 인덱스, pj는 자세 데이터(Pi)에 포함된 k개의 위치 값 중 j번째 위치 값을 나타낸다. 본 발명의 실시예에서 k=3이므로, j={1,2,3}으로 정의된다. 예를 들어, j=1은 머리 부위, j=2,3은 양 손 부위에 해당한다.
Ri는 S와 Pi를 전역 공간에서 정합하는 변환 행렬(이하, 정합 행렬), Dj는 사용자에게 장착된 각 모션 센서 및 캐릭터의 각 관절 사이의 위치와 방향에 대한 차이를 보정하는 보정 행렬, T는 캐릭터의 신체 크기와 사용자의 신체 크기 간의 차이를 보정하는 크기 변환 행렬를 나타낸다.
여기서, 변환 행렬 Dj와 T는 사용자 신체와 캐릭터 신체의 차이를 보정하는 변환행렬이므로, 사용자가 초기에 각 모션 센서를 착용한 직후 한 번만 계산하면 된다. 이를 위하여, 사용자가 T-자세(양팔을 수평으로 벌리고 다리를 모으고 서는 자세) 상태로 있을 때의 모션 센서 위치를 측정하고 캐릭터가 T-자세 일 때의 관절의 위치와 비교한다.
도 6은 본 발명의 실시예에서 사용자와 캐릭터 간 보정 행렬을 획득하는 방법을 설명한 도면이다.
우선, 도 6의 (a)와 같이, 크기 변환 행렬 T는 초기에 사용자가 양 팔을 벌린 상태에서 측정된 양손 사이의 거리와 가상 현실 상의 캐릭터의 양 손 사이의 거리 간의 비율을 측정하여 획득할 수 있다.
즉, T는 스케일 변환 행렬로서, 사용자가 양손에 모션 센서를 장착하고 있는 경우 사용자와 캐릭터의 양손 간의 거리의 비율을 이용하여 3차원 직교 좌표계의 3축에 대해 균일하게 스케일링하여 획득한다. 이와 같이, 사용자와 캐릭터의 크기 차이 비율을 양 손 거리의 차로 측정하여 세 축에 대하여 균일하게 스케일링할 수 있다. 만일 사용자가 양손 센서에 더해 양발과 머리에 대한 센서를 착용하고 있다면, 수직축에 대해서는 머리에서 양 발 사이의 거리의 비율을 이용하여 스케일링을 다르게 진행할 수 있다.
이러한 크기 보정 행렬 T에 대한 연산 이후, 캐릭터 관절과 모션 센서 사이의 위치와 방향에 대한 차이를 보정한다. 예를 들어, 사용자의 경우 양 손에 들고 있는 모션 센서를 통하여 캐릭터의 손목 관절을 제어하기 때문에 사용자의 모션 센서와 캐릭터의 관절 사이의 오차가 발생할 수 있다. 이를 해결하기 위하여 사용자의 모션 센서의 위치가 캐릭터의 실제 관절 위치에 맞게 보정한다.
Dj는 위치와 방향에 대한 변환 행렬로서, 도 6의 (b)와 같이, 캐릭터와 사용자가 모두 T-자세이고 모션 센서 위치에 스케일 변환 T가 적용된 후에, j번째 캐릭터 관절과 모션 센서 사이의 위치와 방향에 대한 차이를 이용하여 Dj를 획득한다. 한편, 수학식 2의 d(S,Pi)를 연산하려면 정합 행렬 Ri을 계산해 주어야 한다.
도 7은 본 발명의 실시예에서 사용자와 캐릭터 간 데이터 정합 개념을 설명한 도면이다. 이러한 도 7은 사용자와 캐릭터 간 매칭된 동일 자세에 대하여, 사용자의 머리와 양 손에 장착된 모션 센서로부터 획득된 데이터(s1,s2,s3)와 그와 매칭된 캐릭터 각 관절의 자세 데이터(p1,p2,p3) 간에 정합을 수행하는 개념을 나타낸다.
만일 캐릭터 모델과 사용자가 같은 3차원 좌표계에 있다고 가정하고 두 자세의 전역 위치와 방향을 정확히 알고 있다면 두 자세를 서로 겹치고 정합하는 일은 간단한 계산으로 처리될 수 있다. 하지만 본 발명에서 사용자의 신체에 부착되는 모션 센서는 최소 3개(머리, 양손)로 제한적이므로 전체 신체에 대한 정확한 위치와 방향을 정의하기 어렵다. 따라서 아래와 같이 현재 캐릭터 관절의 위치와 모션 센서의 위치의 오차를 최소화하는 방법으로 정합 행렬 Ri을 정의한다.
즉, 자세 검색부(130)는 검색 대상이 되는 자세 데이터(Pi) 마다 정합 행렬(Ri)을 각각 결정하는데, 캐릭터와 사용자의 서로 대응한 신체 부위 간의 위치 오차를 최소화하는 위치 변환 행렬 R을 아래 수학식 3에 의해 연산하여 정합 행렬(Ri)을 결정한 후 결정된 정합 행렬(Ri)을 수학식 2에 대입하여 d(S,Pi)를 구한다.
Figure pat00017
정합 행렬 Ri는 Dj 나 T와는 달리 검색 대상이 되는 각각의 캐릭터 자세 Pi 마다 새롭게 계산되어야 한다. 따라서 가능한 계산이 단순해야 한다. 변수의 수를 줄이기 위해 먼저 위치 변환 행렬 R를 다음과 같이 단순화한다.
위치 변환 행렬(R)은 3차원 공간에 존재하는 위치 변환 행렬로써 다음의 수학식 4와 같은 4행 4열의 호모지니어스 좌표계로 나타낼 수 있다.
Figure pat00018
여기서, R의 단순화를 위하여 수학식 4에 대해 설정 제약 조건을 적용한다.
이때, 설정 제약 조건은, 캐릭터의 크기/이동/회전 변환 중 크기 변환을 금지하는 제1 조건(캐릭터 이동/회전 변환만 허용), 지면과 수직한 y축을 기준으로 하는 회전만 허용하는 제2 조건(수직축 회전만 허용), y축 상의 이동을 금지하는 제3 조건(수직축 상의 이동 제한)을 포함한다.
상술한 3가지 제약 조건에 따라 수학식 4는 수학식 5와 같이 단순화된다.
Figure pat00019
여기서, θ는 y축을 기준으로 하는 회전 각도, tx는 x축 방향 이동 거리, tz는 z축 방향 이동 거리이다.
이와 같이, 본 발명의 실시예는, R을 단순화하기 위하여, 정합 과정에서 신체 스케일의 변형화는 금지하고 신체의 회전과 이동 변환 만을 허용(고려)한다. 또한 자세가 수직축(사용자가 직립한 상태의 축)을 기준으로 한 방향으로 기울어지는 것을 금지하기 위하여, 수직축 (y축) 회전만을 허용한다. 그리고 정합 과정에서 캐릭터가 하늘에 떠 있거나 땅 속으로 들어가는 것을 금지하여 수직 축을 따라 이동하는 것은 제한한다.
이후, 빠른 계산을 위하여, 수학식 5에서 비선형적인 요소인 cos과 sin 함수를 변수 α와 β로 치환하면, 수학식 6과 같이 정리될 수 있다.
Figure pat00020
여기서, 우항의 경우, R'로 표현할 수 있다. 이때, R의 강성 조건을 유지시키기 위해 알파와 베타의 관계식을 정의할 수 있다. α22=1는 우항의 R'의 강성을 유지하게 하는 제약 조건에 해당한다.
정합 행렬(Ri)에 대한 수학식 3은 상수와 변수를 분리하여 정리하면 다시 아래의 수학식 7과 같이 각 변수 α, β, tx, ty에 대한 최적화 식으로 간소화될 수 있다.
Figure pat00021
여기서, A는 상수 행렬이고, b는 상수 벡터이다.
위의 최적화는 선형 문제이므로 최소제곱해를 구하는 방식으로 쉽게 계산된다. 이렇게 구해진 R을 통해 가상 환경 내의 적절한 위치와 방향에 캐릭터를 배치할 수 있다.
여기서, 강성 조건인 수학식 6의 우항 부분이 고려되지 않았으므로, 이를 보정하기 위하여 α와 β를 아래 수학식 8과 같이 수정한다.
Figure pat00022
최적의 캐릭터 자세가 결정되면, 검색 과정에서 계산되는 정합 행렬 R을 사용하여 쉽게 가상환경 내의 적절한 위치와 방향에 캐릭터를 배치할 수 있다. 배치 후에는 검색을 위해 단순화된 자세 데이터 대신 모든 관절의 각도로 표현되는 원본 캐릭터 자세 데이터를 사용하여 후보정 처리할 수 있다.
도 8은 본 발명의 실시예에서 후처리 과정을 통하여 캐릭터의 손 위치를 보정한 모습을 예시한 도면이다.
검색된 캐릭터 자세는 현재 사용자 자세와 정확히 일치하지 않지만 캐릭터 고유의 스타일을 유지하는 것이 목적이므로 완전히 일치시킬 필요는 없다. 다만 캐릭터와 가상 환경 내의 다른 사물 사이의 상호 작용에 중요한 영향을 미치는 손과 발의 위치는 사용자가 의도한 위치와 동일하게 유지하는 것이 동작 제어에 도움이 될 가능성이 크다. 따라서 도 8과 같이 캐릭터의 손 위치를 실제 사용자가 의도한 위치로 보정할 수 있다. 머리의 경우 바라보는 방향만 일치시킬 수 있다. 그밖에 본 발명은 실제 검색에서 고려되지 않는 관절 방향에 대한 정보도 현재 사용자가 착용 중인 모션 센서와 일치되도록 변형할 수 있다.
이와 같이, 본 발명의 실시예에서 수행한 모든 실험에서는 캐릭터의 손과 발의 위치와 방향에 대해 각각 대응하는 모션 센서가 있는 경우 역기구학(inverse kinematics) 기법을 이용하여 센서 값과 동일하게 보정하였다. 캐릭터 머리의 경우에는 방향 값만 모션 센서와 동일하게 변형하였다. 역기구학 방법은 팔, 다리, 목 부분에만 제한적으로 분석적 계산법을 적용하여 불필요한 자세 변화를 최소화하였다.
이후, 자세 제어부(140)는 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어한다(S250).
매 프레임마다 독립적으로 검색된 자세들은 변화의 연속성을 보장하지 않는다. 캐릭터 자세의 갑작스러운 변화는 동작의 사실성에 부정적인 영향을 미치며 자연스럽지 못한 영상을 유발할 수 있다.
이를 보완하기 위하여, 자세 제어부(140)는 프레임당 캐릭터 자세 변화의 비율을 제한한다. 즉, 현재 프레임과 직전 프레임에서 검색된 자세 데이터 간의 자세 변화의 비율을 아래 수학식 9를 이용하여 제한한다.
Figure pat00023
여기서, Pt'는 현재 프레임에 적용된 자세 변화의 비율, Po는 현재 프레임에서 검색된 자세 데이터, Pt-1는 이전 프레임에서 검색된 자세 데이터, ω는 가중치,
Figure pat00024
는 캐릭터의 자세 데이터에서 위치 값의 경우 선형 보간법을 하고 방향 값의 경우 구면 보간법을 적용하는 연산을 나타낸다. ω는 실험에 의해 얻어지는 경험적인 상수로서, 본 발명의 실시예에서 ω는 0.05로 사용하였다.
즉, 수학식 9는 현재 검색된 자세 Po 와 이전 프레임에서 사용한 자세 Pt-1의 관절 위치와 방향값을 혼합하는 식으로, 본 발명의 실시예는 이를 기반으로 프레임 간 급격하고 부자연스러운 자세 변화를 방지한다.
도 9는 본 발명의 실시예에서 인접 프레임 간 캐릭터 자세 변화의 비율을 제한하는 모습을 예시한 도면이다.
도 9를 참조하면, 이전 프레임에서 검색된 자세 데이터(Pt-1)와 현재 검색된 자세 데이터(Po)를 기반으로 수학식 9의 보간법을 적용한 결과, 현재 검색된 자세 데이터(Po) 대신에 보간된 자세 데이터가 제공된 것을 알 수 있다. 즉, 이전 프레임에서 검색된 손 위치(노란색)로부터 현재 프레임에 검색된 손 위치(빨간색)로의 급격한 변화를 방지하도록 보간된 손 위치(파란색)을 제공함으로써, 프레임 간 급작스럽운 자세 변화를 방지한다.
본 발명의 실시예에서 수행한 모든 실험에서는 프레임 타임이 0.166초 였으며 ω값을 0.05로 고정하여 사용하였다. 즉, 캐릭터는 자세의 변화를 0.166초 당 5%로 제한하였다.
이하에서는 본 실시예에 따른 캐릭터 제어 장치의 성능 실험 결과를 설명한다. 실험에 사용된 동작 데이터는 일반 모션 캡쳐 데이터와 전문가가 특정 캐릭터를 위해 제작한 애니메이션 데이터로 나누어진다. 모션 캡처 데이터는 자유롭게 춤추는 동작(약 3분), 골프 동작 (약 1분), 걷기-뛰기-앉기 등의 기본 동작(약 3분), 태권도 동작(약 5분), 마지막으로 기타 여러 동작(약 3분)을 포함하고 있다.
전문가가 제작한 애니메이션 데이터는 티팟스튜디오(주)에서 제작한 캐릭터와 가상현실 게임에 적합한 점프하기, 앉기, 공격하기 등의 동작(총 약 1분)이 포함되어 있다.
첫 번째 실험에서는 무작위로 수집된 모션캡쳐 데이터를 사용하는 경우와 전문가에 의해서 제작된 소량의 캐릭터 애니메이션 데이터를 사용하는 경우의 결과를 비교하였다. 또한 일반적인 VR HDM 장비를 사용하는 경우를 가정하여 사용자의 머리와 양손에만 모션 센서를 장착하고 실험하였다.
도 10은 유사한 사용자 입력값에 대한 결과 차이를 비교한 결과를 나타낸 도면이다. 도 1O에서 첫 번째 열은 각기 다른 사용자 입력 자세를 나타낸다. 첫 번째 행은 왼손을 들었을 때, 두 번째 행은 앉았을 때, 세 번째 행은 고개를 뒤로 젖히는 동작을 나타낸다. 두 번째 열은 일반적인 모션 캡처 데이터를 사용했을 때의 결과를 나타낸 것이고, 세 번째 열은 본 발명의 실시예에 따라 캐릭터 애니메이션 데이터를 사용했을 때의 결과를 나타낸 것이다.
실험 결과, 본 발명과 같이 모션캡쳐 데이터를 사용하였을 때에는 캐릭터가 평범한 사람과 같은 동작을 하는 것을 확인할 수 있다. 또한, 캐릭터 애니메이션 데이터를 사용한 경우 캐릭터 자체의 고유 스타일이 명확하게 표현되는 것을 확인할 수 있다. 캐릭터 다리의 움직임도 창작자(애니케이터)에 의해 캐릭터에게 부여된 자세가 나타남을 알 수 있다.
두 번째 실험에서는 추가 동작 센서를 사용하는 경우의 결과 비교를 통해 본 연구에서 제시하는 방법의 확장성을 검증하였다. 이 실험에서는 일반 모션캡쳐 데이터를 사용하였으며 총 3개의 센서(머리와 양손)를 사용하는 경우와 총 6개의 센서 (머리, 양손, 양발, 허리)를 사용하는 경우의 결과를 비교하였다.
도 11은 동작 센서의 추가에 따른 비교 결과를 나타낸 도면이다. 도 11에서 첫 번째 행은 3개의 동작센서를 사용했을 때의 결과를 나타내고, 두 번째 행은 6개의 동작센서를 사용했을 때의 결과를 나타낸다. 동작 센서의 개수가 늘어날수록 사용자의 자세와 보다 유사한 캐릭터 자세가 표현되었음을 확인할 수 있었다.
이와 같이, 본 발명은 가상현실 게임을 위해 제작된 캐릭터 모델과 동작 데이터를 사용하여 일반적인 VR장비의 동작센서를 이용한 캐릭터 동작제어 방법을 제공한다. 또한, 일반적인 사람의 동작을 캡쳐한 모션 캡쳐 데이터를 적용했을 때와 게임 제작을 위한 캐릭터의 애니메이션 데이터를 적용했을 때의 결과를 비교하여 게임 캐릭터 고유의 동작 스타일이 유지 되었음을 증명하였다. 마지막으로 사용자의 허리와 양발에 동작 센서를 추가로 장착하는 실험을 통해 본 발명에서 제시하는 방법을 보다 정교하게 표현할 수 있다는 확장성도 증명하였다.
이상과 같은 본 발명에 따르면, 머리와 양손에 설치된 모션 센서와 가상 캐릭터를 위하여 제작된 소량의 애니메이션 데이터를 기반으로 사용자의 자세와 유사한 캐릭터 자세를 직접 검색하여 캐릭터의 동작을 빠르게 제어할 수 있고 캐릭터 제어 과정에서 창작자(애니메이터)가 의도한 캐릭터 고유의 스타일이 보존될 수 있다.
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.
100: 캐릭터 동작 제어 장치 110: 데이터 구축부
120: 센서 데이터 획득부 130: 자세 검색부
140: 자세 제어부

Claims (16)

  1. 캐릭터 동작 제어 장치를 이용한 캐릭터 동작 제어 방법에 있어서,
    캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고 수집된 자세 데이터를 기초로 자세 검색 DB를 구축하는 단계;
    매 프레임마다 사용자의 머리와 양 손을 포함한 신체 부위에 장착된 복수의 모션 센서로부터 위치 값을 각각 획득하는 단계;
    현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 상기 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색하는 단계; 및
    상기 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어하는 단계를 포함하는 캐릭터 동작 제어 방법.
  2. 청구항 1에 있어서,
    상기 자세 검색 DB를 구축하는 단계는,
    상기 캐릭터의 동작 별 기 저장된 동작 데이터로부터 해당 동작을 구성하는 시간별 자세 데이터를 수집하는 단계;
    전체 동작에 대응하여 수집된 전체 자세 데이터 중에서 일부의 자세 데이터들을 샘플링하는 단계; 및
    상기 샘플링된 자세 데이터들을 상기 자세 검색 DB에 저장하는 단계를 포함하는 캐릭터 동작 제어 방법.
  3. 청구항 2에 있어서,
    상기 샘플링하는 단계는,
    해당 동작을 구성한 시간별 자세 데이터 중 주변 시간 대비 속도가 지역적 최소 값을 가지는 적어도 하나의 자세 데이터를 1차적으로 샘플링하고, 시간 순으로 나열된 상기 시간별 자세 데이터 중에 일부를 설정 시간 간격에 따라 간헐적으로 선택하는 방식으로 2차적으로 샘플링하는 캐릭터 동작 제어 방법.
  4. 청구항 2에 있어서,
    상기 시간별 자세 데이터를 수집하는 단계는,
    상기 수집한 자세 데이터의 구성을 단순화하도록, 상기 자세 데이터 내 포함된 캐릭터의 각 관절의 위치값과 방향값 중 방향값을 소거하고, 캐릭터의 머리 및 양 손에 대응한 관절 부분을 제외한 나머지 관절의 위치값을 소거하여 상기 자세 데이터를 재정리하는 캐릭터 동작 제어 방법.
  5. 청구항 1에 있어서,
    상기 현재 사용자 자세와 매칭되는 자세 데이터를 검색하는 단계는,
    상기 자세 검색 DB 내 저장된 자세 데이터(Pi) 중에서 현재 사용자 자세와 매칭되는 o번째 자세 데이터(Po)를 아래 수학식을 이용하여 검색하는 캐릭터 동작 제어 방법:
    Figure pat00025

    여기서, S는 상기 각 모션 센서의 위치 값의 집합, i는 저장된 자세 데이터의 인덱스, d(S,Pi)는 S와 Pi 간 차이를 정의하는 함수, Ω은 상기 자세 검색 DB 내 저장된 자세 데이터의 집합을 나타낸다.
  6. 청구항 5에 있어서,
    상기 d(S,Pi)는 아래의 수학식으로 정의되는 캐릭터 동작 제어 방법:
    Figure pat00026

    여기서, k는 상기 모션 센서의 개수, j는 사용자와 캐릭터 간 대응하는 신체 부위의 인덱스, pj는 자세 데이터(Pi)에 포함된 k개의 위치 값 중 j번째 위치 값, Ri는 S와 Pi를 전역 공간에서 정합하는 정합 행렬, Dj는 사용자에게 장착된 각 모션 센서 및 캐릭터의 각 관절 간의 위치와 방향에 대한 차이를 보정하는 보정 행렬, T는 캐릭터의 신체 크기와 상기 사용자의 신체 크기 간의 차이를 보정하는 크기 변환 행렬을 나타낸다.
  7. 청구항 6에 있어서,
    상기 현재 사용자 자세와 매칭되는 자세 데이터를 검색하는 단계는,
    검색 대상이 되는 자세 데이터(Pi) 마다 상기 정합 행렬(Ri)을 각각 결정하되,
    캐릭터와 사용자의 서로 대응한 신체 부위 간의 위치 오차를 최소화하는 위치 변환 행렬 R을 아래 수학식에 의해 연산하여 정합 행렬(Ri)을 결정한 후 상기 d(S,Pi) 연산 식에 대입하는 캐릭터 동작 제어 방법.
    Figure pat00027
  8. 청구항 7에 있어서,
    상기 위치 변환 행렬(R)은 설정 제약 조건에 따라 아래 수학식과 같은 호모지니어스 좌표계로 표현되며,
    상기 설정 제약 조건은,
    캐릭터의 크기, 이동 및 회전 변환 중에서 크기 변환을 금지하여 이동 및 회전 변환만 허용하는 조건, 지면과 수직한 y축을 기준으로 하는 회전만 허용하는 조건, y축 상의 이동을 금지하는 조건을 포함하는 캐릭터 동작 제어 방법:
    Figure pat00028

    여기서, θ는 y축을 기준으로 하는 회전 각도, tx는 x축 방향 이동 거리, tz는 z축 방향 이동 거리이다.
  9. 청구항 8에 있어서,
    상기 정합 행렬(Ri)에 대한 수학식은 상수와 변수를 분리하여 정리하면 아래와 같이 각 변수 α, β, tx, ty에 대한 최적화 식으로 간소화되는 캐릭터 동작 제어 방법:
    Figure pat00029

    여기서, A는 상수 행렬이고, b는 상수 벡터이다.
  10. 청구항 1에 있어서,
    상기 캐릭터의 자세를 실시간 제어하는 단계는,
    현재 프레임과 직전 프레임에서 검색된 자세 데이터 간의 자세 변화의 비율을 아래의 수학식을 통하여 제한하는 캐릭터 동작 제어 방법:
    Figure pat00030

    여기서, Pt'는 현재 프레임에 적용된 자세 변화의 비율, Po는 현재 프레임에서 검색된 자세 데이터, Pt-1는 이전 프레임에서 검색된 자세 데이터, ω는 가중치,
    Figure pat00031
    는 캐릭터의 자세 데이터에서 위치 값의 경우 선형 보간법을 하고 방향 값의 경우 구면 보간법을 적용하는 연산을 나타낸다.
  11. 캐릭터의 각 동작에 대응하여 해당 동작을 구성하는 시간별 자세 데이터를 수집하고 수집된 자세 데이터를 기초로 자세 검색 DB를 구축하는 데이터 구축부;
    매 프레임마다 사용자의 머리와 양 손을 포함한 신체 부위에 장착된 복수의 모션 센서로부터 위치 값을 각각 획득하는 센서 데이터 획득부;
    현재 사용자 자세에 대응하여 획득된 각 모션 센서의 위치 값을 상기 자세 검색 DB 내 모든 동작 데이터의 위치 값과 각각 비교하여, 현재 사용자 자세와 매칭되는 캐릭터의 자세 데이터를 검색하는 자세 검색부; 및
    상기 매 프레임 별 검색되는 자세 데이터를 기초로 현재 사용자 자세에 대응하여 표출되는 캐릭터의 자세를 실시간 제어하는 자세 제어부를 포함하는 캐릭터 동작 제어 장치.
  12. 청구항 11에 있어서,
    상기 데이터 구축부는,
    상기 캐릭터의 동작 별 기 저장된 동작 데이터로부터 해당 동작을 구성하는 시간별 자세 데이터를 수집하고, 전체 동작에 대응하여 수집된 전체 자세 데이터 중에서 일부의 자세 데이터들을 샘플링하여 상기 자세 검색 DB에 저장하되,
    상기 샘플링 시에, 해당 동작을 구성한 시간별 자세 데이터 중 주변 시간 대비 속도가 지역적 최소 값을 가지는 적어도 하나의 자세 데이터를 1차적으로 샘플링하고, 시간 순으로 나열된 상기 시간별 자세 데이터 중에 일부를 설정 시간 간격에 따라 간헐적으로 선택하는 방식으로 2차적으로 샘플링하는 캐릭터 동작 제어 장치.
  13. 청구항 11에 있어서,
    상기 자세 검색부는,
    상기 자세 검색 DB 내 저장된 자세 데이터(Pi) 중에서 현재 사용자 자세와 매칭되는 o번째 자세 데이터(Po)를 아래 수학식을 이용하여 검색하는 캐릭터 동작 제어 장치:
    Figure pat00032

    여기서, S는 상기 각 모션 센서의 위치 값의 집합, i는 저장된 자세 데이터의 인덱스, d(S,Pi)는 S와 Pi 간 차이를 정의하는 함수, Ω은 상기 자세 검색 DB 내 저장된 자세 데이터의 집합을 나타낸다.
  14. 청구항 13에 있어서,
    상기 d(S,Pi)는 아래의 수학식으로 정의되는 캐릭터 동작 제어 장치:
    Figure pat00033

    여기서, k는 상기 모션 센서의 개수, j는 사용자와 캐릭터 간 대응하는 신체 부위의 인덱스, pj는 자세 데이터(Pi)에 포함된 k개의 위치 값 중 j번째 위치 값, Ri는 S와 Pi를 전역 공간에서 정합하는 정합 행렬, Dj는 사용자에게 장착된 각 모션 센서 및 캐릭터의 각 관절 간의 위치와 방향에 대한 차이를 보정하는 보정 행렬, T는 캐릭터의 신체 크기와 상기 사용자의 신체 크기 간의 차이를 보정하는 크기 변환 행렬을 나타낸다.
  15. 청구항 14에 있어서,
    상기 자세 검색부는,
    검색 대상이 되는 자세 데이터(Pi) 마다 상기 정합 행렬(Ri)을 각각 결정하되,
    캐릭터와 사용자의 서로 대응한 신체 부위 간의 위치 오차를 최소화하는 위치 변환 행렬 R을 아래 수학식에 의해 연산하여 정합 행렬(Ri)을 결정한 후 상기 d(S,Pi) 연산 식에 대입하는 캐릭터 동작 제어 장치.
    Figure pat00034
  16. 청구항 15에 있어서,
    상기 위치 변환 행렬(R)은 설정 제약 조건에 따라 아래 수학식과 같은 호모지니어스 좌표계로 표현되며,
    상기 설정 제약 조건은,
    캐릭터의 크기, 이동 및 회전 변환 중에서 크기 변환을 금지하여 이동 및 회전 변환만 허용하는 조건, 지면과 수직한 y축을 기준으로 하는 회전만 허용하는 조건, y축 상의 이동을 금지하는 조건을 포함하는 캐릭터 동작 제어 장치:
    Figure pat00035

    여기서, θ는 y축을 기준으로 하는 회전 각도, tx는 x축 방향 이동 거리, tz는 z축 방향 이동 거리이다.
KR1020200040981A 2020-04-03 2020-04-03 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법 KR102359969B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200040981A KR102359969B1 (ko) 2020-04-03 2020-04-03 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200040981A KR102359969B1 (ko) 2020-04-03 2020-04-03 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20210123614A true KR20210123614A (ko) 2021-10-14
KR102359969B1 KR102359969B1 (ko) 2022-02-08

Family

ID=78151312

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200040981A KR102359969B1 (ko) 2020-04-03 2020-04-03 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102359969B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075553A (ja) * 1999-09-08 2001-03-23 Namco Ltd 画面再生装置及びコンピュータ読み取り可能な記録媒体
KR20150081986A (ko) * 2014-01-07 2015-07-15 한국전자통신연구원 시간 및 자세 제약 조건 아래에서 무용 동작을 생성하는 방법 및 장치
KR101757765B1 (ko) * 2016-05-24 2017-07-26 주식회사 글로브포인트 모션 캡처 데이터 기반 3차원 애니메이션 제작 시스템 및 그 제어 방법
KR20170104322A (ko) * 2016-03-07 2017-09-15 한국전자통신연구원 3차원 기반의 유사 안무 검색 방법 및 이를 이용한 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075553A (ja) * 1999-09-08 2001-03-23 Namco Ltd 画面再生装置及びコンピュータ読み取り可能な記録媒体
KR20150081986A (ko) * 2014-01-07 2015-07-15 한국전자통신연구원 시간 및 자세 제약 조건 아래에서 무용 동작을 생성하는 방법 및 장치
KR20170104322A (ko) * 2016-03-07 2017-09-15 한국전자통신연구원 3차원 기반의 유사 안무 검색 방법 및 이를 이용한 장치
KR101757765B1 (ko) * 2016-05-24 2017-07-26 주식회사 글로브포인트 모션 캡처 데이터 기반 3차원 애니메이션 제작 시스템 및 그 제어 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Choi & Lee. Points-based user interface for character posing. Computer Animation and Virtual Worlds,April 2016, pp. 213-220. *
Kim et al. Realtime Performance Animation Using Sparse 3D Motion Sensors. MIG, November 2012, pp. 31-42. *

Also Published As

Publication number Publication date
KR102359969B1 (ko) 2022-02-08

Similar Documents

Publication Publication Date Title
US11967101B2 (en) Method and system for obtaining joint positions, and method and system for motion capture
US20180070864A1 (en) Methods and devices for assessing a captured motion
US6552729B1 (en) Automatic generation of animation of synthetic characters
JP6973388B2 (ja) 情報処理装置、情報処理方法及びプログラム
CN109840947A (zh) 增强现实场景的实现方法、装置、设备及存储介质
US20230008567A1 (en) Real-time system for generating 4d spatio-temporal model of a real world environment
JP2022503776A (ja) 視覚ディスプレイの補完的なデータを生成するためのシステム及び方法
US7307618B2 (en) System and method for providing user input to character animation
JP2011508290A (ja) 運動アニメーション方法及び装置
JP5595655B2 (ja) 画像処理装置および画像処理方法
US11562523B1 (en) Enhanced animation generation based on motion matching using local bone phases
CN111194122A (zh) 一种体感互动灯光控制系统
KR20210128943A (ko) 인공신경망을 이용한 스포츠 자세를 비교 및 교정하는 장치 및 방법
KR102359969B1 (ko) 모션 센서와 애니메이션 데이터를 이용한 캐릭터 동작 제어 장치 및 그 방법
US20230245366A1 (en) 3d avatar generation using biomechanical analysis
JP6585866B1 (ja) 位置データ処理装置およびプログラム
US20200320719A1 (en) Determining a kinematic sequence
Nonnarit et al. Hand tracking interface for virtual reality interaction based on marg sensors
CN115862810B (zh) 具有量化评估功能的vr康复训练方法及系统
EP4123588A1 (en) Image processing device and moving-image data generation method
CN117101138A (zh) 虚拟角色的控制方法、装置、电子设备以及存储介质
CN116617663A (zh) 动作指令生成方法和装置、存储介质和电子设备
JP5846138B2 (ja) 被写体追跡装置、被写体追跡方法及びプログラム
Torrao et al. Palco: A multisensor realtime 3D cartoon production system
JP2020135845A (ja) 位置データ処理装置およびプログラム

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant