LoginSignup
3
4

More than 3 years have passed since last update.

UnityでiPhoneX系による表情取得について

Last updated at Posted at 2019-05-02

自己紹介

こんにちはゆずです。@Yuzu_Unity

はじめに

これを使います…これで記事は終わりです。
https://github.com/Unity-Technologies/facial-ar-remote
キズナアイが使ってるらしい?ZIPで紹介されていたみたいです(自分は見ていないので…)
にじさんじの3Dはこれを使っていのかな?

準備物

iPhoneX/XR/XS
Mac(iOSビルドを行うため)
最終的にiPhoneの表情データを取得させたい!
Windows/Mac

使い方

https://github.com/Unity-Technologies/facial-ar-remote/releases
releasesから使いたいところですが
iPhoneXS/XRで使える記述がver1.1ではないみたいです。
なので最新版をクローンします!!
zipでダウンロードするといろんなデータが死んでしまうみたいなので
LFSが使えるGit等でクローンしましょう。

Githubに使い方等が書いています。
iOS Build Setup
Editor Animation Setup
の欄です。

iOSビルドを行った後
Win/MacのローカルLan内での接続です。
ファイアーウォールの設定を行わないと接続できないので注意

インストールTips

ARKit pluginの場所 BitBucket

7.Enable "ARKit Uses Facetracking" on UnityARKitPlugin > Resources > UnityARKitPlugIn > ARKitSettingsの場所
unknown.png

自分のキャラクターを動かしたい…

可愛くないし…
image.png

このアセットに含まれている自分のメッシュへの適用なのですがセットアップがめんどくさい…
image.png

なのでそこは触れず自分は

tmp[i]=Mathf.Clamp(skin.GetBlendShapeWeight(i),0,100);

を用い
狸?のブレンドシェイプをそのままコピーすることにしました。
あとは自分の使いたいキャラクターにSetBlendShapeWeightを行うだけです。


 //目線制御 こちらもブレンドシェイプから取得しボーンに回転値を割り当てします。
    void Update()
    {
        debugRotL = EyeRot(tmp[1], tmp[4], tmp[3], tmp[2]);
        debugRotR = EyeRot(tmp[8], tmp[11], tmp[9], tmp[10]);
        eyeL.localRotation = Quaternion.Euler(debugRotL);
        eyeR.localRotation = Quaternion.Euler(debugRotR);
    }

    Vector3 EyeRot(float valueL,float valueR,float valueUp,float valueDown)
    {
        float left = (valueL - valueR) * 45/100/4;
        float up = (valueDown - valueUp) * 45/100/4;
        return new Vector3(left, up, 0);
    }

Unityの地味な便利機能Constraintでコード書かずボーンに割り当て…
Mayaとの連帯機能ですが便利です。
首や頭の傾き等もこれを用い設定します。
image.png
【Unity】複数のオブジェクトの位置を元にオブジェクトを動かす、○○○Constraint系というオモシロ機能

表情レコード機能

このアセットにはレコード機能など含まれていますが
自分はこちらを使うため使わないことにします。
https://qiita.com/Yuzu_Unity/items/d891ecee64a164149167

結果

リップシンクはOVRLipSyncを用いたので今回は瞬きのみ適用しました。
iPhoneで取得するとリアル差がかなり上がります。
人間の瞬きは奥が深いものですね…
OpenCV×Dlibで行うより簡単で高精度なのでおすすめかと…
image.png

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4