夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

HoloLensでCome on Smile!(笑って)のボイスでキャラクターに笑ってもらう。

本日は先日のHoloLens Meetup Vol.21でLT登壇で発表した内容の技術的な記事です。

音声認識を使用する

 HoloLensでは音声認識を使用してユーザーのボイスコマンドでアプリを操作することができます。

 HoloLensで音声認識を使用して任意のコマンドを使用してイベントを発火させるのは以前の記事を参考にしてください。

redhologerbera.hatenablog.com

VRMのキャラクターの表情を変える。

 VRMのキャラクターには[VRMBlendShape]と呼ばれるシェイプキーのコントロールコンポーネントが用意されており、スクリプトVRMBlendShapeの関数を呼び出すことで簡単にキャラクターの表情を変えることができます。

f:id:Holomoto-Sumire:20200804220514j:plain

HoloLensでキャラクターの表情を変えるためには何かしらのアクションでこれを行えばよいのですが、よりキャラクターを現実の生きているキャラクターとするためには人間が他人対して行うように自然なインタラクションが求められます。

 そこで今回は[Come On Smile!]のコマンドでキャラクターの表情を変えてみます。

以前の記事で使用した[VRMReaction]コンポーネントに付け加えます。

今回作成したスクリプトは以下になります。

```` using System.Collections; using UnityEngine; using VRM;

public class VRMReactor : MonoBehaviour { //VRMData [SerializeField] GameObject vrm; VRMLookAtHead vRMLookAtHead;

//UserData
Transform _usersTransform;


// Start is called before the first frame update

void Start() { if (vrm == null) { vrm = this.gameObject; } vRMLookAtHead = this.gameObject.GetComponent(); usersTransform = GameObject.Find("UIRaycastCamera").transform; } public void VRMLookAtUser() { Debug.Log("Hoge"); vRMLookAtHead.Target = usersTransform; }

public void VRMUnLookAtUser()
{
    _vRMLookAtHead.Target = null;
}
public void BlendShapeChangeFun()
{
    resetBlendShape();

    _blendShapeProxy.SetValue(BlendShapePreset.Fun, 1f);
    FaceAnimation.ModulateRatio = 0f;
}
public void resetBlendShape() 
{
    _blendShapeProxy.SetValue(BlendShapePreset.Angry, 0f);
    _blendShapeProxy.SetValue(BlendShapePreset.Fun,0f);
    _blendShapeProxy.SetValue(BlendShapePreset.Joy, 0f);
    FaceAnimation.ModulateRatio = 1f;
}

}

 
VRMのキャラクターにコンポーネントをセットして音声認証を使用するためのコンポーネントの[<b>SpeechInputHandler</b>]コンポーネントを作成

[<b>Come On Smile</b>]のイベントとして<b>BlendShapeChangeFun()</b>を発火させるようにします。

[f:id:Holomoto-Sumire:20200804234808j:plain]

### 〇実機で確認

実機でユーザーのボイスによってキャラクターが表情を変えてくれるようになります。

今はぱっとわかるのでより滑らかに表情が変化するとよりリアルなキャラクターらしさが出るように感じます。


[https://www.youtube.com/watch?v=Lse8jJFvz18:embed:cite]