Poser覚書> その他レポート > Poser7情報

ChibiBelにしゃべらせる (トークデザイナー)

 Poser7トークデザイナーで、ChibiBelにそれっぽい言葉をしゃべらせてみたい。


▲音が出ます。音声はWEB WAVE LIBより。

 トークデザイナーを使うためには条件があるようだ。

  • フィギュア側に各種発音モーフが用意されていること
  • Visemeファイル(発音データとモーフデータを関連づけするための設定ファイル)が用意されていること

 発音モーフというのは、たとえば「a」を発音したときの口の形。頭部のモーフで「Mouth A」などと名前がついているやつだ。また、Visemeファイルはデフォルトだと、ジェームス、ジェシー、サイモン、シドニー、ベン、ケイトのみ付属している。

 特定のフィギュア以外でトークデザイナーを使うためにはちょっとした準備が必要なのだ。必要な準備作業は以下の通り。

  • 発音モーフを手動で作る
  • Visemeファイルを作る

 これを精密にやると、とっても手間がかかりそうなのだが、適当に作ってしまおう。普段から日本製のアニメ(数コマ程度の口パクが主流)を見慣れている日本人は、口パクの精度が悪くてもそれほど気にならないはずだ。たぶんだが。

 とりあえず、作業に入ろう。

 まずはフィギュアChibiBelを呼び出そう。髪とか服は各自着せておこう。作業後に着せても構わない。

発音モーフを手動で作る

 「Head」のモーフ「Chibibel」を0にして作業をはじめよう。このモーフはChibibel顔とBelBel顔を切り替えるためのものだが、0にしておかないと後々おかしなことになるのだ。0にすると、顔がびろんと伸びて変な感じになるが、特に気にしなくていい。

 今回は適当に発音モーフを作るため、日本語の「あ」「い」「う」「え」「お」の5つを作る。口パクにこの5つがまじってれば、それっぽく見えるんじゃないの?といういい加減な予想に基づくものである。まずは、「あ」から行こう。

  •  パラメータ/特性パレットで「Head」のパラメータを操作して、「あ」の口になるよう調整


▲「あ」!

 これは「MouthOpen1_CB」を調整するだけで出来た。この形をモーフターゲットとして登録しよう。

  • Object → Spawn Morph Targetを選択

  • Morph nameに「mouth_JA」と入力

 この名前は、後ほどVisemeファイルの対応付けで使うのでとりあえずこの通り入力しておいて欲しい。これで、「Head」にモーフターゲット「mouth_JA」が追加されたはずだ。

  • 同様に、以下のモーフターゲットを作る

 

  • 「い」 mouth_JI
  • 「う」 mouth_JU
  • 「え」 mouth_JE
  • 「お」 mouth_JO

 各発音の口は、フィーリングで作って構わない。 というか、私はフィーリングで適当に作った。


▲新しく5つのモーフターゲットが出来た!

これで準備の第一段階は完了。続いて、Visemeファイルを作ろう

Visemeファイルを作る

 作る、などと書いたが付属しているものをコピーして適当に書き換えるだけだ。

 今回は、サイモンのVisemeファイルを流用することにしよう。

  • 以下のファイルをコピーする

コピー元:C:\Program Files\e frontier\Poser 7\Runtime\LipSync\SydneyG2VisemeMap.xml
コピー先:同フォルダ内 ChibibelVisemeMap.xml

 コピーしたファイルを開いてみると、こんな感じになっている。

<?xml version="1.0"?>
<VisemesMap figureName="SydneyG2" version="1.0" language="English" subLanguage="US">
    <Head internalName="head" />
    <LeftEye internalName="leftEye" />
    <RightEye internalName="rightEye" />
    <Viseme phoneme="c" morph="mouthA" />
    <Viseme phoneme="a" morph="mouthA" />
    <Viseme phoneme="^" morph="mouthA" />
    <Viseme phoneme="C" morph="mouthA" />

(以下省略)



 このファイルはおおざっぱに分けて、3つのパートから成っているようだ。

  • 発音データと対応するモーフターゲットの定義
  • しゃべりながらまばたきや眉を動かすときの動作・対応するモーフターゲットの定義
  • 「怒る」「悲しむ」などの表情データの定義
  • <Viseme phoneme="×" morph="×××××" />の行を編集

 moprh="×"のところを、先ほど作った5種類のモーフ名で置き換える。どういうふうに置き換えるかは、フィーリングで。私は以下のような感じに置き換えた

    <Viseme phoneme="c" morph="mouth_JA" />
    <Viseme phoneme="a" morph="mouth_JE" />
    <Viseme phoneme="^" morph="mouth_JA" />
    <Viseme phoneme="C" morph="mouth_JA" />
    <Viseme phoneme="W" morph="mouth_JO" />
    <Viseme phoneme="!" morph="mouth_JA" />
    <Viseme phoneme="I" morph="mouth_JA" />
    <Viseme phoneme="b" morph="mouth_JU" />
    <Viseme phoneme="J" morph="mouth_JI" />
    <Viseme phoneme="d" morph="mouth_JU" />
    <Viseme phoneme="D" morph="mouth_JU" />

(以下省略)



  • その下の、「Interporation…」以下を編集

<編集前>
    <Interpolation  spline="1" dropOffTime="0.16" />
    <Blink  morph="Blink" openValue="0.0" closeValue="1.0" closingTime="0.167" closedTime="0.034" openingTime="0.134" />
    <HeadBendParm  parmName="Bend" maxValue="-0.5" minValue="1.0" energyThreshold="7" minimumInterval="0.12"/>
    <HeadSideParm  parmName="Side-Side" maxValue="-0.7" minValue="0.7" interval="0.1" />
    <EyeSideParm  parmName="Side-Side" maxValue="5.0" minValue="-5.0" forerun="0.1" minimumInterval="0.8" toSideTime="0.1" staySideTime="0.7" backToNeutralTime="0.1"/>
    <EyeUpDownParm  parmName="Up-Down" maxValue="5.0" minValue="-5.0" forerun="0.01" />
    <EyebrowParm  morph="BrowUpAll" maxValue="0.5" minValue="0.0" />

<編集後>
    <Interpolation  spline="1" dropOffTime="0.16" />
    <Blink  morph="EyeBlink_CB" openValue="0.0" closeValue="1.0" closingTime="0.167" closedTime="0.034" openingTime="0.134" />
    <HeadBendParm  parmName="Bend" maxValue="-0.5" minValue="1.0" energyThreshold="7" minimumInterval="0.12"/>
    <HeadSideParm  parmName="Side-Side" maxValue="-0.7" minValue="0.7" interval="0.1" />
    <EyeSideParm  parmName="Side-Side" maxValue="5.0" minValue="-5.0" forerun="0.1" minimumInterval="0.8" toSideTime="0.1" staySideTime="0.7" backToNeutralTime="0.1"/>
    <EyeUpDownParm  parmName="Up-Down" maxValue="5.0" minValue="-5.0" forerun="0.01" />
    <EyebrowParm  morph="BrowAngle2_B" maxValue="0.5" minValue="0.0" />



 モーフターゲット名をChibibelのものに変更しただけだ。

  • Blink→EyeBlink_CB
  • BrowUpAll→BrowAngle2_B

 

  •  <Emotion name=…の行を全て削除

 本当はこれをきっちり設定すると「怒りながらしゃべる」「泣きながらしゃべる」ことが出来るようになるはずだが、よくわからないので省略。削除してもとりあえず動く。

 これで、Chibibel用のVisemeファイルができあがりだ。編集すんのめんどくせーやという人は、以下をコピペしてVisemeファイルを作ろう。Poser7付属のオリジナルファイルを書き換えないように注意。

 Visemeファイルはここに作ろう: C:\Program Files\e frontier\Poser 7\Runtime\LipSync\ChibibelVisemeMap.xml  

<?xml version="1.0"?>
<VisemesMap figureName="SimonG2" version="1.0" language="English" subLanguage="US">
    <Head internalName="head" />
    <LeftEye internalName="leftEye" />
    <RightEye internalName="rightEye" />
    <Viseme phoneme="c" morph="mouth_JA" />
    <Viseme phoneme="a" morph="mouth_JE" />
    <Viseme phoneme="^" morph="mouth_JA" />
    <Viseme phoneme="C" morph="mouth_JA" />
    <Viseme phoneme="W" morph="mouth_JO" />
    <Viseme phoneme="!" morph="mouth_JA" />
    <Viseme phoneme="I" morph="mouth_JA" />
    <Viseme phoneme="b" morph="mouth_JU" />
    <Viseme phoneme="J" morph="mouth_JI" />
    <Viseme phoneme="d" morph="mouth_JU" />
    <Viseme phoneme="D" morph="mouth_JU" />
    <Viseme phoneme="e" morph="mouth_JA" />
    <Viseme phoneme="r" morph="mouth_JU" />
    <Viseme phoneme="A" morph="mouth_JE" />
    <Viseme phoneme="F" morph="mouth_JU" />
    <Viseme phoneme="G" morph="mouth_JU" />
    <Viseme phoneme="H" morph="mouth_JU" />
    <Viseme phoneme="i" morph="mouth_JI" />
    <Viseme phoneme="E" morph="mouth_JI" />
    <Viseme phoneme="j" morph="mouth_JI" />
    <Viseme phoneme="k" morph="mouth_JI" />
    <Viseme phoneme="l" morph="mouth_JU" />
    <Viseme phoneme="m" morph="mouth_JU" />
    <Viseme phoneme="n" morph="mouth_JU" />
    <Viseme phoneme="N" morph="mouth_JU" />
    <Viseme phoneme="O" morph="mouth_JO" />
    <Viseme phoneme="o" morph="mouth_JO" />
    <Viseme phoneme="p" morph="mouth_JU" />
    <Viseme phoneme="R" morph="mouth_JU" />
    <Viseme phoneme="s" morph="mouth_JU" />
    <Viseme phoneme="S" morph="mouth_JU" />
    <Viseme phoneme="t" morph="mouth_JU" />
    <Viseme phoneme="T" morph="mouth_JU" />
    <Viseme phoneme="u" morph="mouth_JU" />
    <Viseme phoneme="U" morph="mouth_JU" />
    <Viseme phoneme="v" morph="mouth_JI" />
    <Viseme phoneme="w" morph="mouth_JU" />
    <Viseme phoneme="y" morph="mouth_JA" />
    <Viseme phoneme="z" morph="mouth_JU" />
    <Viseme phoneme="Z" morph="mouth_JU" />
    <Viseme phoneme="X" morph="mouth_JU" />
   
    <Interpolation  spline="1" dropOffTime="0.16" />
    <Blink  morph="EyeBlink_CB" openValue="0.0" closeValue="1.0" closingTime="0.167" closedTime="0.034" openingTime="0.134" />
    <HeadBendParm  parmName="Bend" maxValue="-0.5" minValue="1.0" energyThreshold="7" minimumInterval="0.12"/>
    <HeadSideParm  parmName="Side-Side" maxValue="-0.7" minValue="0.7" interval="0.1" />
    <EyeSideParm  parmName="Side-Side" maxValue="5.0" minValue="-5.0" forerun="0.1" minimumInterval="0.8" toSideTime="0.1" staySideTime="0.7" backToNeutralTime="0.1"/>
    <EyeUpDownParm  parmName="Up-Down" maxValue="5.0" minValue="-5.0" forerun="0.01" />
    <EyebrowParm  morph="BrowAngle2_B" maxValue="0.5" minValue="0.0" />
</VisemesMap>


 あとは、トークデザイナーでアニメーションを作ればOK。

  • ChibibelのHeadを選択状態にする
  • パラメータ/特性パレットの右上の三角をクリックし、「Restore」を選択

 これは、顔のパラメータをいったんデフォルト状態に戻すための作業だ。準備段階で口まわりのパラメータをいじったので、念のためリセットしておくという感じ。

 なんとデフォルトだと、ChibibelのHeadパラメータ「Chibibel」は0なのだ。なんと、というほどでもないが、1に変更。

  • Window→Talk Designerを選択

  • トークデザイナーにて、Sound fileの右の「…」をクリックし、音声ファイル(waveファイル)を指定
  • Viseme map fileの「▼」をクリックして、ChibibelVisemeMap.xmlを選択

Animation→MakeMovieを選択

設定画面で、FormatをAVI、RendererをPreviewに指定して「MakeMovieボタン」をクリック

 これでムービーができあがる。

 大きなお友達としてはどこかでエロボイスをダウンロードしてきて、自分のお気に入りのキャラに思う存分しゃべらせるという遊び方が出来るという訳だ。

関連リンク:

関連:
ちいさなBelBel ChibiBel & School set紹介
ちいさなBelBel ChibiBel & School set紹介
ちいさなBelBel ChibiBel & School set紹介

次のPoser7コレクションに一括登録へ
コード付き、Python便利ツール集
Poserパイソンサンプル集(ソース付き)
ランダム表情、ランダムポーズパーツセレクター、マテリアルコピー、拡張版ドットツールを日本語コメント満載のソースコードつきで提供。開発時に私がハマッた「ハマりポイント」を画像付きで解説したPDFも付属。画面のないスクリプト、tkinter(Poser7までのGUI)、wxpython(Poser8のGUI)別に実用的な各種ツールを掲載。


誰でもわかるPoser服作りチュートリアル
Poserチュートリアル「挫折しない服作り編」
PoserでコンフォームTシャツを作る手順をくどいくらい丁寧に解説。難解な「ジョイントパラメータ」についても図をたっぷり使って解説している。Poser6J、Hexagon前提。初級~中級用。PDFダウンロード形式


メタセコデータをPoserフィギュア化する手順を解説
Poserフィギュア化チュートリアル
makehumanから出力した3D人体を元に、メタセコイアとCR2Builderを使ってフィギュア化する手順を解説。CR2Builderリファレンスも付属


Poser覚書> その他レポート > Poser7情報 もくじ