- 追加された行はこの色です。
- 削除された行はこの色です。
#setlinebreak(on)
*おしゃべりアニメーション [#u5f0687a]
おおまかには、以下のような流れでおしゃべり時のポーズや表情が決定されます。
#html{{
<div align="center">
<img src="/lipliswiki/webroot/image/common/LiplisTalkingAnimation/1.gif" alt="Liplisおしゃべりフロー" />
<img src="/lipliswiki/webroot/image/common/LiplisTalkingAnimation/2.gif" alt="Liplisおしゃべりフロー" />
</div>
}}
① ニュースの読み込み
ニュースの文章を取得します。
② 単語分解, ③感情ID、強度取得
ニュースデータを単語単位に分解します。
ニュースデータは以下の様な書式で送られてきます。
今日,0,0;は,0,0;晴れ,0,0;
文字と数字が混在していて、パッと見どのような情報か分からないかと思います。
コンマ区切りで1かたまりとなっています。これをたてに並べてみると・・・。
今日,0,0;
は,0,0;
晴れ,0,0;
のようになります。
1つのかたまりがコンマ区切りで「単語+数字+数字」となっているかと思います。
これは、Liplisのおしゃべりに必要な感情メタデータとなります。以下のようになっています。
単語 , 感情ID , 感情強度
感情IDは、「うれしい」や「かなしい」等の感情に対応しています。
Liplisでは、感情IDに対応する感情と立絵を結びつけて、表情やポーズを表示しています。
感情ID、感情強度についての詳細は「LiplisEmotion」を参照してください。
④口調変換
口調変換を行います。
口調変換の詳細については「NoralisToneXml」を御覧ください。
⑤ おしゃべりアニメーション
感情IDと立絵画像画像ファイルの紐づけは「body.xml」で行っています。
たとえば感情ID:1,感情強度+1:「うれしい」の場合に選択される定義を見ると、
以下のようになります。
#sh(xml){{
<joy_p>
<emotion>joy_p</emotion>
<joy_p11>joy_p_1_1_1.png</joy_p11>
<joy_p12>joy_p_1_1_2.png</joy_p12>
<joy_p21>joy_p_1_2_1.png</joy_p21>
<joy_p22>joy_p_1_2_2.png</joy_p22>
<joy_p31>joy_p_1_3_1.png</joy_p31>
<joy_p32>joy_p_1_3_2.png</joy_p32>
</joy_p>
}}
データを見てみると、6つの画像ファイルが記述されているのが分かります。
これは、口パク、まばたたきの状態を表した画像になっています。
口パク、まばたきを表すために以下のように画像を定義しています。
|1|目 : 開き|口 : 閉じ|
|2|目 : 開き|口 : 開き|
|3|目 : 半目|口 : 閉じ|
|4|目 : 半目|口 : 開き|
|5|目 : 閉じ|口 : 閉じ|
|6|目 : 閉じ|口 : 開き|
おしゃべり、まばたきの状態によって、表示される画像を決定しています。
おしゃべり中は口パク状態、瞬き状態が常に変化するため、6つの画像がぐるぐるまわって
アニメーションします。
感情が違う単語が読まれると、別の感情の画像が読み込まれる、といった具合です。