요즘, 영화나 드라마, TV 방송 분야에서 모션 캡처 센서라는 것을 자주 이용하고는 합니다.
이번 포스트에서는 이러한 모션 캡처 센서를 사용해보고자 합니다.
최근 개봉한 "아바타", 그리고 꽤 논란이 되었던 메타버스 프로그램, "아바타 싱어"와 같은 프로그램 등에서 모션 캡처 센서를 이용해 사람의 움직임을 데이터화한 후, 그래픽에 입히고는 합니다.
Motion Capture Sensor의 종류는 다양하고 구현되는 기반 기술도 다양합니다. 보통 카메라 방식 또는 IMU 센서 방식을 통해 구현됩니다.
각 방식들의 장단점이 있지만 대체적으로 사용되는 방식은 IMU 방식입니다. 보통 일반인(?)들에게 많이 알려진, IMU 방식을 기반으로하는 모션 캡처 센서로는 퍼셉션 뉴런, Xsens 등이 있습니다. 이 중 퍼셉션 뉴런과 로코코 스마트 수트를 다뤄보고자 합니다.
혹시 IMU 센서에 대해 궁금하신 분들은 다음 포스트를 참고하시면 도움이 되실 것 같습니다.
이제, 본격적으로 모션 캡처 센서를 다뤄보도록 하겠습니다.
Perception Neuron Pro
퍼셉션 뉴런 프로는 Neuron Sensor(= IMU) 17개와 스페어 센서 1개, 그리고 Hub와 스트랩, 케이스로 구성되어 있습니다. 케이스가 꽤 크고 튼튼해서 007 작전하는 느낌을 받았습니다ㅎ
2019년 기준으로 가격은 약 250만원 정도입니다.
케이스에 들어 있는 각각의 센서를 스트랩에 연결되어 있는 플라스틱에 장착해서 사용하는 방식입니다. 개별 배터리로 동작하다 보니 각각의 센서를 켜줘야 합니다. 또한 스트랩도 개별적으로 있기에 각각의 부위에 채워줘야 합니다.
퍼셉션 뉴런은 기본적으로 위와 같은 구조로 구동됩니다. PC에 HUB가 연결되고 각각의 센서와 HUB가 연결됩니다. 각 센서에서 Data를 HUB로 전달하면 HUB는 PC로 Data를 전달합니다. PC에서는 전달받은 Data를 통해 사용자의 움직임을 3D Avatar로 구현합니다.
퍼셉션 뉴런 제품을 구매하면 AXIS Neuron Pro라는 SW를 사용할 수 있습니다. (2019년 기준)
AXIS Neuron Pro 프로그램은 퍼셉션 뉴런 프로를 사용하기 위한 프로그램으로 제공하는 대표적인 기능은 Calibration, IP Setting, HUB와의 연결 제어, Motion Recording, Data Visualizer 정도입니다. 이 프로그램을 통해 간단하게 모션 캡처 센서의 성능과 움직임을 확인할 수 있습니다. 실제 개발자들은 API를 이용해 개발해야겠지만 말이죠
2019년 기준으로는 C/C++, Unity, Unreal API를 제공했습니다만, 2023년에는 Maya, Motionbuilder, Unreal, Unity, Blender, Cinema 4D, iCone 8, VTuber Mini에서 활용할 수 있는 것 같습니다.
또한 퍼셉션 뉴런은 최대 5명까지 같은 공간에서 동시에 사용이 가능하다고 합니다. 하지만 통신 오류나 속도 측면에서 불리하기에 보통 여러 대를 이용하는 것 같진 않습니다.
이제 AXIS Neuron Pro와 Perception Neuron SDK(= Unity)를 통해 본격적으로 모션 캡처를 수행해 보도록 하겠습니다.
기본적인 사용 과정은 다음과 같습니다.
1. Perception Neuron HUB를 USB를 통해 PC에 연결합니다.
2. 충전이 완료된 각 센서를 모두 켭니다.
3. 센서를 각 신체 부위에 맞는 스트랩에 장착하고 올바른 신체 부위에 장착합니다.
4. AXIS Perception Neuron Pro를 실행합니다.
프로그램을 실행하면 위 이미지와 같이 HUB와의 연결을 수행할 수 있습니다. Detection 된 HUB를 클릭하면 연결이 자동적으로 수행됩니다. 모든 센서들이 정상적으로 연결이 되면 오른쪽 아바타에 Green Light가 ON 됩니다.
5. Calibration을 통해 모션 측정을 정확하게 수행할 수 있도록 합니다.
아마, 처음 센서를 장착하고 아바타를 확인해 보면 굉장히 이상한 자세를 하고 있는 아바타를 보게 될 가능성이 높습니다. 이는 센서의 Calibration이 제대로 수행되지 않았기 때문에 발생하는 문제입니다.
모션 캡처를 통해 측정된 데이터를 아바타로 출력하는 화면 우측에 보면 아이콘이 몇 가지 있습니다. 이중 Calibration 버튼을 클릭해 보정을 수행합니다. 화면에서 시키는 자세를 정확히 수행하면 간단히 마무리할 수 있습니다.
6. 이제 결과를 확인합니다.
비교적 자세가 꽤 안정적인 것을 확인할 수 있습니다.
이제, 개발자 입장에서 개발에 활용하기 위해 개발 툴에서 이 Data를 이용해보아야겠죠?
앞서 언급했듯이 Unity SDK를 사용할 수 있습니다. 그런데...! 안타깝게도 2019년 기준으로는 앞서 사용한 AXIS Neuron Pro를 실행시킨 상태에서만 활용할 수 있었습니다. 현재는 어떤지 모르겠네요...;;
때문에 만일 제품적으로 제대로 활용하고 싶다면 Server PC에서 AXIS SW를 구동시키고 Client PC에서 Unity 프로그램이 구동되면서 Server로부터 센서 값을 받는 구조가 되어야겠습니다.
여하튼 Unity에서 Perception Neuron을 사용하기 위해 IP Address와 Port, 통신 Type, Data 형식을 맞춰줍니다.
그리고 SDK에 포함되어 있는 Neuron Animater Script를 Avatar에 넣어줍니다. 이때 Avatar는 Humanoid로 맞춰주어야 합니다. 이와 같은 Setting이 모두 완료되면 Play를 눌러 실행시킵니다. 그러면 AXIS SW에서 확인했던 것과 비슷한 결과를 확인해 볼 수 있습니다.
각 Bone은 위 이미지의 우측과 같으며, 왼쪽과 같은 결과로 나타납니다. Rotation Data가 변경되면서 Avatar의 움직임이 반영되는데, 이 Data를 이용하면 특정 동작을 수행했을 때 어떠한 이벤트가 수행되거나 하는 등의 프로그램도 만들 수 있겠지요? 마치 Just Dance와 같이 말이죠!
Rokoko Smart Suit
Rokoko는 센서가 부착된 전신 의상과 USB 선이 포함되어 있습니다. 구매 시 Size를 선택해야 합니다. (= S, M, L, XL) 처음 제품을 받아보았을 때, 센서를 구매했다기보다는 그냥 의류를 구매한 것과 같은 느낌을 많이 받았습니다.
Suit는 쫄쫄이 형태로 되어 있으며 해당 Suit 속에 19개의 Sensor 및 HUB가 내장되어 있습니다. 기본적인 구성품은 Textile Suit, Hub, 19 Sensors, Suit, Rokoko Studio Basic SW Licenses이며, 2019년 기준, 최소 가격 (one Smartsuit)은 $2,495(약 295만 원)입니다.1년의 보증기간을 제공하며, 30일 내에 환불이 가능합니다.
구성은 Perception Neuron Pro와 거의 비슷하며, 다른 점은 센서들 간 Cable로 연결이 되며, Suit 속에 Hub가 위치한다는 점입니다. 또한 Battery의 경우 Rokoko에서 제공하지는 않으며, USB Battery Pack(약 4.5 x 2.6x 0.5inch 크기의 2A output, USB 2.0을 사용)을 사용하면 됩니다. 즉 기본적으로 2A output인 아무 보조 배터리를 사용하면 됩니다. 5000mA기준 6시간 정도 사용 가능하다고 합니다.
다음과 같이 19개의 센서가 HUB에 케이블로 연결되어 Network를 이루고 있습니다. 배터리는 HUB에 USB 케이블로 연결시켜 주면 됩니다. 보조 배터리를 사용하고 있기 때문에 배터리가 소모되었을 경우 충전된 다른 배터리로 교체해 주면 됩니다.
각 센서를 따로 켜주지 않아도 되고 각 부위에 장착하지 않아도 된다는 점과 배터리 교체가 비교적 쉽다는 점이 퍼셉션 뉴런과의 차이점이라고 볼 수 있겠습니다.
전반적인 Process의 모습은 다음과 같습니다.
처음 Hub를Setting 해주기 위해 Hub와 PC를 Cable로 연결해 IP 등의 설정을 해주면, 이후 WIFI를 통해 Wireless로 Mocab이 가능해집니다.
Hub의 경우 다음과 같은 기능 및 구성을 가지고 있습니다.
Calibration의 경우, 다음과 같이 1가지 Pose로 진행합니다.
Perception Neuron Pro와 비교하면 더 간단히 Calibration을 진행할 수 있습니다.
Unity Setting은 대략적으로 다음과 같이 진행합니다. Data Streaming 등도 Studio Program을 이용해Setting 합니다.
Rokoko는 기본적으로 Multiple Conneciton이 가능합니다. 기본적으로 모든 Setting은 Studio SW에서 가능하며, Avatar는 기본적으로는 자동으로 구분됩니다. 하지만 Hub ID로 구분할 수도 있습니다.
다만... Rokoko에서의 제안은 최대 5개의 Suit를 동시 연결 가능하다고는 하지만, Position이 정확하지 않을 수 있다고 합니다. (절대 좌표가 아니라 상대 좌표이기 때문에) 따라서 Studio에서 동작을 Recording 한 후 .fbx .bvh .csv 등의 파일을 추출한 후 사용하는 방법을 권장한다고 합니다.
Rokoko도 Perception Neuron과 비슷하게 Rokoko Studio라는 SW를 제공합니다. 다만, 제공하는 기능에 따라 요금이 부과됩니다. Free로 제공되는 Basic의 경우는 모션을 캡처한 후 FBX나 BVH, CVS와 같은 파일로 저장해서 활용하는 기본적인 기능만 제공합니다. Unity와 같은 프로그램에서 사용하기 위해서는 Enterprise 버전을 사용해야 하며 2019년 기준으로 $99/month를 부과합니다.
(포스팅을 하는 시점은 2023년이기에 찾아보았더니, 2023년 기준으로는 개인이 Unity에서 사용하기 위해서는 Plus 버전을 사용하면 되고 가격은 $20/month입니다. 조금은 합리적으로 변경된 것 같습니다.ㅎ)
Rokoko Studio를 사용하는 전반적인 과정은 다음과 같습니다. (2019년 기준이기에 2023년은 좀 변화되었을 것입니다.)
1. Rokoko Studio Program을 설치합니다.
2. Rokoko Studio를 사용하기 위해서는 Login이 필요한데 이를 위해 회원가입을 진행합니다.
3. Unity에서 Calibration 및 Connection/Disconnection 등의 기능을 조작하기 위해서는 Enterprise Service가 필요한데 해당 Plan을 구매하는 방법은 다음과 같습니다.
1) Login을 합니다.
2) Team 생성 및 Plan 선택을 수행합니다.
앞서 언급하였듯이 API를 이용해 제어를 하고자 한다면 Enterprise Plan을 선택합니다. 그냥 Rokoko Studio에서 모션 캡처를 수행하고자 한다면 Basic Plan을 사용해도 무방합니다.
3) 결제를 수행합니다.
위와 같이 개수 및 Bill 정보를 입력해 구매를 진행하면 됩니다. 간단한 Test만 할 것이므로 1년 치는 필요 없기에 Monthly로 1인 Team을 구매합니다. (30일 Trial이 있으므로 결제를 따로 수행하진 않아도 됩니다.ㅎ)
만일 Plan을 변경하고 싶다면 위 이미지와 같은 과정을 수행하면 변경하실 수 있습니다.
4. Home View를 띄워 본격적인 모션 캡처 작업을 수행한다.
우선, Home View는 다음과 같습니다.
이러한 Home에서는 Port 설정, API 설정, Project 설정 등의 작업을 수행할 수 있습니다.
Rokoko Smart Suit가 HW적으로 연결이 완료되었다는 가정하에 Home View의 오른쪽 상단 Icon을 클릭하게 되면 WiFi Settting을 진행할 수 있습니다. IP 주소 및 Password, Rokoko ID와 사용할 Port 번호 등을 입력합니다. 이후 왼쪽 상단의 설정 Icon을 클릭해 Graphic Performance, Location, Listen Port, Studio Live, Command API 설정을 진행합니다. 이때 Studio Live를 클릭하게 되면 Unity에서 사용할 환경을Setting 할 수 있는데, IP주소와 Port 번호를 입력하고 Unity API 부분을 활성화시켜 주면 됩니다.
활성화 후 Unity에서 다음과 같이 설정해 줍니다.
위와 같은 설정을 마무리한 후, Rokoko Studio에서 Project를 생성하고 해당 Project에 들어가게 되면 다음과 같은 Dash Board View를 보게 됩니다.
Dash Board에서는 Calibration, Add Avatar, Set Filter 등의 작업을 수행합니다. 우선 Avatar를 만들어 화면에 띄우고 상단의 Calibration Icon을 통해 Calibration을 진행합니다. 그리고 상단의 나머지 3개의 Icon들을 통해 Camera View를 조정하고 오른쪽 상단 Filter Icon을 통해 사용할 Filter를 활성화합니다.
사용 가능한 필터 정보는 다음과 같습니다.
연결이 제대로 이루어졌다면 Dash Board의 오른쪽 하단과 같이 연결된 센서의 FPS 등의 정보를 확인할 수 있습니다.
Rokoko Studio에서 수행한 결과는 다음과 같습니다.
5. Enterprise Plan을 통한 API에서 Command를 사용해 Rokoko Smart Suit 제어를 수행합니다.
Enterprise Plan에서 사용할 수 있는 Command API는 통신을 통해 Rokoko Smartsuit를 제어할 수 있습니다.
Command API가 제공하는 기능은 다음과 같습니다.
- Test
: api_key와 ip_address 그리고 port가 유효한지 검사합니다.
- Start Calibration
: api_key와 delay시간, smartsuit_name을 input 하여 Calibration을 진행합니다.
- Start Recording
: api_key와 filename을 입력하여 recording을 시작합니다.
- Stop Recording
: 시작했던 recording을 종료합니다.
- Restart
: api_key와 smartsuit_name을 입력해 해당 smartsuit를 재시작합니다.
- Unicast, Broadcast
: api_key와 smartsuit_name을 입력해 해당 suit를 unicast 또는 broadcast 합니다.
필요한 명령을 적절히 사용해 Rokoko Smart Suit를 제어하여 유용하게 사용할 수 있습니다. 다만, 간단한 Test 때는 딱히 필요 없고 실제 제품군 개발 때 필요하겠지만 말이죠.
6. Unity 환경에서 Rokoko Smart Suit를 통해 Motion Capture를 수행한 결과를 Avatar에 적용합니다.
Unity 환경에서 수행한 결과는 다음과 같습니다.
동작이 부드럽게 잘 반영되는 것을 확인할 수 있습니다.
이렇게 Perception Neuron Pro와 Rokoko Smart Suit를 이용하여 Motion Capture를 수행해 보았습니다. 실제 사용해 보니 Perception Neuron보다는 Rokoko가 좀 더 전문적이라는 느낌을 받았습니다. SW적인 서비스 측면에서도 향후 개발적인 부분을 고려해 설계했다는 느낌이 강하게 들었습니다. 이에 비해 Perception Neuron은 개발적 측면의 확장보다는 해당 제품만 이용해 간단히 뭔가를 만들어보자 라는 캐주얼한 느낌이 강했습니다.
Service 후기
사용하다가 두 제품 모두 서비스를 받아야 하는 상황이 발생했었는데, 대응 측면에서도 Rokoko가 더 나았습니다. 퍼셉션 뉴런은 "우리는 판매했으니 뭐... 이제 끝"이라는 느낌인 반면 Rokoko는 "우리 제품을 구매했으니 어느 정도는 케어해 줄게"의 마인드였습니다.
퍼셉션 뉴런의 경우는 API에서 센서 제어를 수행할 수 없어 혹시 환불이 가능한지 물어보았으나 Guarantee Card가 있어도 Open 해서 환불은 안된다고 하였고 API에 해당 기능이 추가될 예정이 없다는 답변을 받았습니다.
Rokoko는 사용 중 센서 에러로 인해 Connection이 정상적으로 수행되지 않아 해결 방법에 대해 몇 번의 메시지를 주고받았는데, 해결 방법도 상세히 알려 주었고 나중에는 해결이 안 되니 그쪽에서 먼저 AS를 해주겠다고 하더군요. Guarantee 기간이 남았으니 택배비나 수리비용은 지불하지 않아도 된다고 하여 한국에서 덴마크까지 물건이 왔다 갔다 했습니다. 제품 보내고 수리된 제품 받을 때까지 1주일 정도 소요되었습니다. 생각보다 빨랐죠ㅋ
덴마크와 중국의 차이점인가 싶은 느낌이었는데... 기분 탓이겠죠?? ㅎㅎ.
두 제품 모두 비교적 저가의 모션 캡처 센서라는 측면에도 불구하고 모션 캡처가 잘 되어서 최근 방영했던 메타버스 뮤직 프로그램들의 퀄리티가 왜 그럴까? 싶은 느낌이었습니다.
다만, 사용자의 체형과 아바타의 체형이 어느 정도 맞지 않으면 아바타의 팔이 몸을 통과하는 등의 어색함의 문제도 발생하긴 했습니다. 이는 개발적으로 수정되어야 하는 것이긴 한데 쉽진 않더라고요ㅎ
아무튼 이제까지 두 종류의 모션 캡처 센서에 대해 리뷰를 해보았습니다.
전문적으로 사용할 때는 부족한 면이 있어 보이지만, 비교적 간단하고 저렴하게 사용할 수 있는 제품들인 것 같습니다.
물론, 일반인이 사용할 것 같진 않지만 말이죠.
이번 포스트는 여기서 마무리하도록 하겠습니다.
'Technology > Products, Tools' 카테고리의 다른 글
[GitHub] GitHub를 통한 코드 관리 - 기초 (feat. Git Bash) (0) | 2023.04.13 |
---|---|
[Version Control] SVN, Git, GitHub, GitLab (0) | 2023.04.06 |
[LIDAR] Slamtec RPLIDAR A1/A2 (2) | 2023.02.17 |
[Touch Sensor] Zytronic Zyfilm 사용기 (0) | 2023.02.01 |
[Dataset] Custom Face Landmark Dataset 생성 방법 (0) | 2023.01.04 |
댓글