リップシンク

[最終更新日:2019/01/18]

 

リップシンクパラメータの特定

リップシンクエフェクトを使用することで、モデルに対してリップシンク動作を適用することができます。
リップシンクエフェクトを適用するために以下の処理を行います。

・.model3.jsonファイルに記述された、リップシンクエフェクトの値を適用するパラメータとの��応付け

・音声入力、モーション、その他の方法でリップシンクエフェクトに対して数値を渡す

このうち、.model3.jsonファイルに記述されるリップシンクエフェクトとパラメータを対応付ける情報は、
ICubismModelSettingクラスを継承するCubismModelSettingJsonクラスを利用することによって取得することができます。

 

.model3.jsonファイルの中に定義を入れるには「まばたき設定」を確認してください。
Editor上でまばたき・リップシンク設定を行ってから出力すると、.model3.jsonファイルには以下のように記述されます。

 

 

リップシンクを行う3つの方法

リップシンクについては以下の3通りに大きく分類されます。

1.リアルタイムで音量を取得し、開閉度を直接指定する方式

音声レベルを何らかの方法で取得し、対象のパラメータに合わせて尺度をあわせたものを指定することにより
リアルタイムのリップシンクを実現します。

Native(C++)のCubismModel::Update関数、またはWeb(TypeScript)のCubismModel.update関数より前で
Native(C++)のCubismModel::SetParameterValue関数、またはWeb(TypeScript)のCubismModel.setParameterValue関数や
Native(C++)のCubismModel::AddParameterValue関数、またはWeb(TypeScript)のCubismModel.addParameterValue関数の第2引数に直接0~1の値を設定することで口の開き具合を制御できます。

iPhone / Android2.3以降(※)は、再生中の音量をリアルタイムに取得できます。
取得した再生中の音量の値を 0..1の範囲に加工して、その値を上記の命令で設定するとリップシンクさせることができます。
(標準パラメータ設��の通り、口の開閉は 0 から 1 のパラメータで作成している���め)

設定する値は0未満、もしくは1以上でもエラーにはなりませんが、その場合リップシンクが正しく動作しない場合があります。
(※):Android2.2以前については実行時に再生中の音量を取得することはできません。
その他のプラットフォームでリアルタイムに音量が取得できるか否かは、音声再生のライブラリに依存します。

iPhoneでの取得方法:AVAudioPlayerクラス
Androidでの取得方法:Visualizerクラス

 

2.リップシンク用の情報を持ったモーションを使う方式

Editor上での作業でモーション自体に音声の動きを取り入れる方法です。
モーションにリップシンクのモーションを入れる方法は「BGMや音声を使用したシーンの作成」を確認してください。
再生前にNative(C++)のCubismMotion::SetEffectIds関数、またはWeb(TypeScript)のCubismMotion.setEffectIds関数を使用してリップシンク、まばたきのパラメータ群をセッティングすれば
CubismMotionインスタンスのパラメータ更新処理の時に対象のパラメータに置き換えた上でモーションを再生します。

 

 

3.リップシンク用の情報のみのモーションを使う方式(Native)

2で取り扱ったモーションを専用に扱うモーションマネージャを用意し、口だけコントロールする方法です。
体や頭の動作モーションとリップシンクを分けたいときに有用です。

3.リップシンク用の情報のみのモーションを使う方式(Web)

2で取り扱ったモーションを専用に扱うモーションマネージャを用意し、口だけコントロールする方法です。
体や頭の動作モーションとリップシンクを分けたいときに有用です。

Copyright © 2019 Live2D Inc.