RealsenseSDKとWEBカメラでキャラクターになりきる(Live2D編)

  • 7
    いいね
  • 0
    コメント

RealsenseSDKとWEBカメラでキャラクターになりきる方法をLive2Dのモデルにも適応してみました.

Live2DをUnityで利用する

Live2DのSDKをダウンロードしてUnityでLive2Dモデルを利用できるようにします.
http://www.live2d.com/
からCubism SDKをダウンロードします.

今回は顔の動きと表情をLive2Dモデルに反映させるだけなので,sampleのDemoをUnityで開きます.
sample.png

下準備

  1. Realsen SDKとWEBカメラを使うためのunitypackageをインポートする

ここに置いておきます.Downloads
注. sampleが動作するか確認してください.
2. Live2Dモデルを動かすためのスクリプトをインポートします.FaceLive2D.cs
3. インポートしたFaceLive2D.csをLive2DModelに適応します.

Webカメラが利用できるようにSelectDeviceNumberも設定しておきます.
sample2.png

Live2Dスクリプトの変更

FaceLive2D.csからの顔認識情報をLive2Dモデルに反映させるためにSimpleModel.csに処理を追加します.

SampleModel.cs

    private FaceLive2D face;//追加

    void Start()
    {
        face = GetComponent<FaceLive2D>();//追加
    }

    void Update()
    {
        /*(...省略...)*/
        eyeBlink.setParam(live2DModel);

        //ここから追加
        live2DModel.setParamFloat("PARAM_ANGLE_X", face.GetRot(0) * 20);
        live2DModel.setParamFloat("PARAM_ANGLE_Y", face.GetRot(1) * 30);

        live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", face.GetRot(0) * 10);

        live2DModel.setParamFloat("PARAM_EYE_BALL_X", -face.GetRot(0));
        live2DModel.setParamFloat("PARAM_EYE_BALL_Y", -face.GetRot(1));

        live2DModel.setParamFloat("PARAM_ANGLE_Z", face.GetRot(2) * 3000);

        live2DModel.setParamFloat("PARAM_EYE_L_OPEN", 1.0f - face.GetMorph(0));
        live2DModel.setParamFloat("PARAM_EYE_R_OPEN", 1.0f - face.GetMorph(1));

        live2DModel.setParamFloat("PARAM_MOUTH_OPEN_Y", face.GetMorph(2) * 5);
        //ここまで

        if (physics != null) physics.updateParam(live2DModel);

        live2DModel.update();
    }

FaceLive2DをGetComponentで取得した後,setParamFloatに適当な値を入れていきます.
設定出来たら顔認識の結果がLive2Dに反映されているか確認して,細かなパラメータの調整をしてください.
sample3.png

なりきってください.