對嘴(Lip Synch)

嘴的開闔分為下列3大類。
以下是以運用控制對嘴的參數「PARAM_MOUTH_OPEN_Y」製作為前提。

1.即時取得音量,直接指定嘴形開闔程度的方法。

model->setParamFloat("PARAM_MOUTH_OPEN_Y" , xxxx ) ;//.....(A1)

在model->update() 前 setParamFloat()的第2引數直接設定為0~1的值來控制對嘴。

iPhone / Android2.3以後版本(※)已可即時取得音量。
取得播放中的音量值後在0..1範圍間修改,再將這個值設定到上述命令中即可設定對嘴。
(如同標準參數的設定,因為嘴型開闔設計為0到1的參數)
設定值低於0或是超過1時,雖然不會造成錯誤,但是對嘴可能無法正常動作。

(※):Android2.2以前的版本,無法在執行中取得播放中的音量。
   其他的平台(例PSP)能否取得即時音量則要看該平台播放聲音的函式庫是否支援。



2.使用對嘴用的音量資訊進行設定。
先將對嘴用的資訊先用別的方法抽出後再用1的設定方法。

※「對嘴用音量抽出工具」中 「編寫成.mtn 」功能關閉後再編寫資訊時,一樣使用這個方法


3.使用內含對嘴資訊的動作(.mtn)
使用Animator或是對嘴用音量抽出工具」製作內涵對嘴資訊的.mtn。播放動作時就可以控制對嘴。

基本上,這就是將通常的動作和對嘴的動作同時播放的形式。 
因為其他的動作和對嘴的動作是分開的,因此需產生只管理對嘴的MotionQueueManager實體後使用。
只要是mtn檔案函式庫不會做區分,因此可以拷貝一般的動作播放部分來改造安裝。
※此方法如同上述(A1)只要直接更新處裡"PARAM_MOUTH_OPEN_Y"就需要程式碼中下註解。
   保險起見,建議先用「PARAM_MOUTH_OPEN_Y」檢索所有與Live2D相關的原始碼。
  此外,如果通常的動作後面不進行更新的話,對嘴的部分可能會被覆寫。


下列為JAVA風格的模擬程式碼

---追加動作管理class-------------------------------------------------------------
  1. private MotionQueueManager mainMotionMgr = new MotionQueueManager () ;//通常mtn用
  2. private MotionQueueManager mouthMotionMgr= new MotionQueueManager ();//對嘴mtn用

---追加更新---------------------------------------------------------------------------------
  1.         
  2. mainMotionMgr->updateParam( model ) //設定主要動作          
  3.  
  4. /* 更新對嘴的動作 */
  5. mouthMotionMgr->updateParam( model );
  6.  




---播放動作-------------------------------------------------------------------------
  1. //從對嘴用的mtn讀取動作播放。和通常的動作一樣。
  2. mouthMotionMgr->startMotion( motion , false ) ;








コメント