스마트폰이 Blender의 핸드헬드 카메라로: 무료 오픈소스 애드온
Phone Camera Controller 애드온은 iOS 또는 Android 스마트폰을 Blender용 핸드헬드 가상 카메라로 바꿔 준다. 휴대폰은 뷰포트를 실시간으로 보여 주고, 장면 속 3D 카메라는 휴대폰의 움직임을 그대로 따라간다. 녹화 버튼을 누른 채로 있으면 이동 경로가 일반적인 카메라 키프레임으로 저장된다. 애드온은 무료이며 GPL 아래 오픈소스로 배포되고 용량은 35KB다.
개발자들의 구상에 따르면, 휴대폰으로는 마우스로 얻기 어려운 카메라 움직임을 만들 수 있다. 휴대폰을 들고 방을 걸어 다니며 장면을 돌아보는 비행을 핸드헬드 촬영처럼 기록하는 것이다. 테이크 진행 중에 포커스를 손으로 옮길 수도 있고, 그것 역시 애니메이션에 들어간다.
테이크에 기록되는 것
카메라는 6자유도로 제어된다. X, Y, Z 위치와 회전(팬, 틸트, 롤)이다. 데이터는 자이로스코프, 가속도계, 그리고 휴대폰 위치의 AR 트래킹에서 나온다. 렌즈도 스마트폰에서 조절한다. 초점 거리, 포커스 거리, 조리개, 블러 강도, 피사계 심도가 즉시 적용된다.
«초점 거리, 포커스 거리, 조리개, 피사계 심도는 휴대폰에서 설정되고 촬영 중에 키로 기록되므로 포커스를 손으로 옮길 수 있다»라고 개발자들은 애드온 페이지에 적었다.
녹화는 두 가지 방식으로 할 수 있다. 짧게 누르면 현재 프레임에 키프레임 하나가 놓인다. 버튼을 누른 채로 있으면 타임라인이 진행되는 동안 위치와 회전이 프레임 단위로 기록되고, 버튼을 놓으면 녹화가 멈춘다. 타임라인도 휴대폰에서 제어한다. 시작, 일시정지, 되감기, 프레임 단위 이동, 처음이나 끝으로 이동이 가능하다.
움직임 설정은 Phone Cam 사이드 패널(뷰포트에서 N 키)에 모여 있다.
- 회전과 이동은 따로 켜진다 — 예를 들어 삼각대에서 하는 팬처럼 회전만 쓸 수 있다;
- 감도는 실제 움직임 한 걸음마다 카메라가 얼마나 멀리 가는지를 정한다. 작고 정밀한 이동에는 감도를 낮춘다;
- 스무딩은 센서의 떨림을 없앤다. 높이면 부드러운 움직임, 낮추면 날것의 핸드헬드 촬영이 된다;
- 어떤 축이든 반전할 수 있다;
- 중립 자세 캘리브레이션은 현재 카메라 위치를 기억해 모든 테이크가 같은 프레임에서 시작되게 한다.
애드온은 여러 대의 휴대폰과 동시에 작동하며, 각 휴대폰이 장면 안의 자기 카메라를 담당한다. 이를 위해 Blender에서 휴대폰 하나당 카메라를 하나씩 추가하고 앱에서 연결하면, 뷰포트는 마지막으로 선택된 카메라를 따라간다.
네트워크 설정 없는 연결
휴대폰과 컴퓨터는 Bonjour/mDNS를 통해 스스로 서로를 찾는다. Windows에서도 마찬가지로, IP 주소나 포트, 페어링 코드를 입력할 필요가 없다. 패널에서 Start Server를 누르면 Blender가 앱의 호스트 목록에 나타난다. 프리뷰는 뷰포트와 같은 셰이딩 모드로 휴대폰에 전달된다. 속도를 위한 Solid, 색과 빛을 보기 위한 Material Preview다. 이는 녹화 없이도 쓸모가 있다 — 예를 들어 아무것도 렌더링하지 않고 휴대폰 화면으로 클라이언트에게 화면을 보여 줄 때다.
제약은 분명히 밝혀져 있다. 두 기기는 같은 로컬 Wi-Fi 네트워크에 있어야 하며, 이동통신망이나 원격 네트워크로는 애드온이 작동하지 않는다. 개발자들은 5GHz를 권하는데, 2.4GHz에서는 지연이 더 크다. 서버가 실행되고 휴대폰이 연결된 동안 애드온은 기본값으로 가로 640픽셀의 프리뷰를 렌더링한다(가로 폭과 프레임 레이트는 애드온 설정에서 바꾼다). HTTP 8254와 UDP 8255 포트를 사용하는데, 스튜디오 네트워크가 방화벽으로 닫혀 있을 때 알아 두면 좋다. 장면은 로컬로만 전송되고 인터넷에는 올라가지 않는다.
어디서 구하고 녹화 비용은 얼마인가
Phone Camera Controller 애드온 버전 1.4.1은 모든 플랫폼용 단일 아카이브로 공개됐다. 순수 Python으로 작성됐고, macOS, Windows(64비트) 또는 Linux에서 Blender 4.2 이상이 필요하며 Blender 5.2 LTS에서 테스트됐다. 설정의 Install from Disk로 설치하며 관리자 비밀번호는 필요하지 않다. Phone Camera Control 앱은 App Store와 Google Play(Android 8.0 이상)에서 무료다. 휴대폰에는 자이로스코프와 가속도계가 필요하다.
수익화는 녹화에만 해당된다. 스트리밍, 카메라 제어, 설정, 타임라인, 여러 대의 휴대폰 사용은 제한이 없고 광고도 없다. 앱에 등록하면 녹화용으로 30 Ad Credits가 주어지고, 짧은 광고를 보면 녹화 시간 10초가 추가되며 일일 한도는 없다. 일회성 구매인 Ad-Free는 광고를 없애고 녹화 제한을 해제한다. 그 가격은 애드온 페이지에 나와 있지 않다. Lite 버전과 Pro 버전은 없다. 기능 구성은 모두에게 동일하다. 앱 계정은 크레딧 관리를 위해 필요하다.
다른 «휴대폰 속 카메라»와 무엇이 다른가
비슷한 도구는 전에도 있었다. Superhive 마켓플레이스의 PocketCam 역시 6DoF 트래킹, 실시간 뷰파인더, 소리와 함께 타임라인을 재생하는 녹화를 제공한다. 거기서는 QR 코드로 연결하고, 휴대폰은 앱 설치 없이 브라우저에서 인터페이스를 열며, 안정화와 상업용 라이선스가 명시돼 있다. BlenderNation이 썼듯이 2021년에는 VirtuCamera가 비슷한 기능을 제공했다. Wi-Fi를 통한 움직임 전송, 뷰포트 스트리밍, 키 기록, 초점 거리 제어와 스무딩이다. ARKit을 지원하는 iPhone이나 iPad가 필요했고 Blender 2.83~2.92에서 작동했다.
우리 평가로는, PocketCam과 비교해 Phone Camera Controller의 주요 차이는 무료 애드온이라는 점과 전부 로컬 네트워크에서 작동한다는 점이다. PocketCam은 유료로 판매되고 인터넷 연결과 Cloudflare 계정이 필요하지만, 대신 하나의 Wi-Fi 네트워크에 묶이지 않는다. 또 다른 차이는 포커스 거리와 조리개를 움직임과 함께 기록한다는 점으로, 덕분에 촬영자가 테이크 중에 직접 포커스를 옮길 수 있다. VirtuCamera와 비교하면 Android와 최신 Blender 버전이 추가됐다. 약점은 크레딧 모델이다. 무료 모드는 시험해 보고 짧은 이동을 몇 개 촬영하기에는 충분하겠지만, 긴 테이크로 꾸준히 작업하려면 아마 일회성 구매가 필요할 것이다. AR 트래킹이 긴 이동에서 어떻게 작동하는지도 불분명하다. 개발자들은 드리프트에 관한 데이터를 제시하지 않는다. 그들 스스로 휴대폰을 두 손으로 잡고, 움직임을 천천히 시작하고, 흔들림이 생기면 테이크를 취소하고 다시 촬영하라고 권하므로, 녹화 후 커브 정리는 계획에 넣어 두는 편이 좋을 것이다.
Ну и какая погрешность?
Интересная для меня тема, даже специально зарегистрировался здесь ради неё.
Когда-то давно экспериментировал с наложением эффекта камеры, раскачивающейся при ходьбе, на 2D анимацию, но использовал совсем другие инструменты. У меня тогда был Макбук с HDD диском. В нём есть датчики Sudden Motion Sensor, которые следят за изменением положения ноутбука в пространстве. Их основная цель – обеспечить парковку головок жесткого диска в случае падения и, тем самым, обезопасить диск и данные на нём. Существует бесплатный софт, который позволяет вести запись в файл данных с этих датчиков. Я запускал воспроизведение анимационного куска на ноуте, включал запись данных с сенсоров в файл и проносил ноут в руках по комнате, стараясь синхронизировать его движения с происходящем на экране. Делал несколько дублей. Затем данные с датчиков пересохранял в Excel файл, импортировал в AftеrEffects и накладывал на анимацию. Чтобы снизить дрожание и сделать движение более плавным, приходилось эти данные предварительно перемножать, подбирая коэффициенты. Погрешность меня не интересовала, нужен был эффект как таковой.
Вот ещё демо анимационно-игровых трюков, которые можно делать с помощью датчиков Sudden Motion Sensor в ноутбуке:
https://www.youtube.com/watch?v=koHfshmHUmI