Perfume의 모션 캡처 데이터를 iOS 앱 내에서 이동하는 단계

약 1년 반 전에 공개 예제의 Perfume 모션 캡처 데이터를 iOS 앱에서 이동하는 단계입니다.

데이터와 함께 oF 의 샘플 앱이 이미 공개되어 있으므로, 그것을 iOS에서 움직이도록 개수하면서, 어떤 구현이 되어 있는지를 파악한다는 느낌으로 봅니다.

(완성품의 스쿠쇼)



모션 캡처 데이터 및 샘플 다운로드



모션 캡처 데이터는 여기에서, oF 샘플은 여기에서 다운로드할 수 있습니다.

샘플 앱 빌드



적절한 샘플 프로젝트를 열고 Base SDK를 latest로 변경한 후 빌드해 보면 'tr1/memory' file not found 오류가 나온다.

그래서 [header search path]
/usr/local/Cellar/boost/1.49.0/include

을 recursive로 추가해 보면, 한층 더 코어 같은 곳으로부터의 에러가 대량으로 솟아나온다.

왠지 이쪽으로 돌진해 가면 시간을 불모에 낭비해 버리는 생각이 들었으므로, 방침 변경, emptyExample로부터 스스로 샘플 어플리를 구축하기로 했습니다.

샘플 앱 만들기



emptyExample로부터의 재작성 순서입니다. 모처럼이므로 iOS 용으로 만듭니다.

1. ofxBvh 애드온 도입


  • ofxBvh 폴더를 addons 아래에 복사합니다.
  • ofxBvh를 프로젝트의 addons 그룹에 추가
  • 다운로드 한 3 개의 bvh 파일을 프로젝트에 추가

  • 2. testApp.h


  • ofxBvh의 헤더를 include
  • #include "ofxBvh.h"
    
  • 멤버 변수 추가
  • vector<ofxBvh> bvh;
    ofEasyCam cam;
    

    3. 손 s 탭. m



    원래 example-bvh에서 복사합니다. 그리 길지 않기 때문에, 곧 복사할 수 있을 것. bvh[x].load("xxxx.bvh") 부분만 파일 이름에 맞게 변경합니다.
    void testApp::setup(){  
    
        ofSetFrameRate(60);
        ofSetVerticalSync(true);
    
        ofBackground(0);
    
        bvh.resize(3);
    
        // setup bvh
        bvh[0].load("aachan.bvh");
        bvh[1].load("kashiyuka.bvh");
        bvh[2].load("nocchi.bvh");
    
        for (int i = 0; i < bvh.size(); i++)
        {
            bvh[i].play();
            bvh[i].setLoop(true);
        }
    }
    
    void testApp::update(){
    
        for (int i = 0; i < bvh.size(); i++)
        {
            bvh[i].update();
        }
    }
    
    void testApp::draw(){
    
        glEnable(GL_DEPTH_TEST);
    
        ofEnableBlendMode(OF_BLENDMODE_ALPHA);
    
        cam.begin();
    
        for (int i = 0; i < bvh.size(); i++)
        {
            bvh[i].draw();
        }
    
        cam.end();
    }
    

    완성품(동영상)



    vimeo에서 보기

    알고 있던/깨달은 것의 메모



    BVH 파일



    모션 캡처 데이터의 포맷의 일종인 것 같다.

    BVH 파일 형식은 Biovision이 제창 한 모션 캡처 데이터 파일 형식입니다. 현재 Alias ​​Motion Builder를 비롯하여 3ds MAX Character studio, Poser 등 다양한 상용 3D 캐릭터 애니메이션 소프트웨어에서도 지원됩니다. BVH 파일의 특징을 이하에 정리합니다.

    텍스트 형식으로 작성
  • 좌표계는 오른손계. XYZ 각 축의 취급(어느 축이 연직 방향에 대응하는지 등)은 임의.
  • 관절 노드에 대한 정보를 설명합니다.
  • 관절 회전은 오일러 각 형식으로 기술.
  • 회전 각도의 단위는 Degree
  • 캐릭터의 스켈레톤 계층 구조를 기술하는 HERARCHY 부와 동작 데이터를 기술하는 MOTION 부의 2 개로 구성

  • 참고 기사

    ofBvh


  • load 메소드 내에서 호출하는 ofToDataPath 인 메소드가 가져오는 경로를 디버거에서 쫓아 봤을 때 MacOS는 ../../../data에서 iOS라고 번들 바로 아래였습니다.
  • bvh를 해석하고 재생할 때까지 이것으로 해주는 것 같습니다
  • 다른 애드온이나 라이브러리에 의존하지 않고, 소스도 500행 정도

  • ofEasyCam



    처음 알았기 때문에 어떤 것인지 이번 조사해 본다.

    참고한 기사


  • Perfume의 모션 데이터를 iPhone 앱으로 움직여 보았습니다.

  • 관련


  • openFrameworks 어드벤트 캘린더
  • 좋은 웹페이지 즐겨찾기