Live2D Cubism はビジュアルノベルのキャラクター画像のような2D画像をアニメーション出来るようにするシステムです。これらの画像は例えば、虹彩と瞳孔のレイヤーや、白目のレイヤー、眉のレイヤーなどのように一連のレイヤーに描画されます。
Live2Dソフトウェアは制作者にメッシュとこれらの各レイヤーを関連付けさせ、パラメータの調整でどのようにメッシュが変形されるかを指定します(各メッシュの形は変形します)。Live2Dソフトウェアは時間と共にどのようにこれらのパラメーターが調整されるかを決定するモーションファイルと expressionを決定するexpressionファイルを作成します。
Ren'Py のLive2D組み込みではLive2Dが生成するファイルを所得してRen'Pyに表示されるアニメーションを定義するのに使用します。Ren'Pyはモーションとexpressionを処理してパラメータを決定します。これがCubism SDK for Nativeに渡されるとRen'Pyに表示するメッシュのリストが返されます。Ren'Pyはこれらのメッシュを描画してその結果が画面のLive2Dキャラクターとなります。
Ren'PyはCubism 3, 4形式のLive2Dアニメーションをサポートします。これはexpressionとモーションのプレイバックをサポートします。
警告
DLL がプラットフォームに提供されていないため、Live2D は x86_64 Android プラットフォームではサポートされません。つまり Android エミュレーターや ChromOS での実行には問題があります(訳注* スマフォのAndroidはx86_64ではなくArmなので問題ないと思われます)。
Live2D はウェブプラットフォームをサポートしません。
Live2D を iOS にインストールするには情的ライブラリを iOS プロジェクトに手動でコピーしなければなりません。
Live2D を使えるようになる前に、 Live2D website から Cubism SDK for Native をダウンロードしてインストールしなければいけません。年間一定以上の金額となるビジネスに使用するにはライセンスを購入する必要があることに注意してください。
一旦 Live2D をダウンロードしたら、 Ren'Py ランチャーからインストールできます。インストールには "preferences" の "Install libraries" をクリックしましょう。 CubismSdkForNative-4-r.1.zip ファイルをインストールライブラリ画面の右下にあるボタンからアクセスできる Ren'Py SDK ディレクトリに置いてください。 "Install Live2D Cubism SDK for Native" をクリックしましょう。少したつと、 Live2D がインストールされます。
Live2Dを使用するには、モデルベースのレンダリング設定が必要です。次の行を追加します。
define config.gl2 = True
これはゲームごとに設定してください。
Live2DアニメーションはLive2D Displayable と image ステートメントを使用して定義されます。 :
Live2D
(filename, zoom=None, top=0.0, base=1.0, height=1.0, alias={}, loop=False, fade=None, seamless=None, attribute_function=None, attribute_filter=None, **properties) linkこの Displayable は Live2D アニメーションを表示します。
Live2D アニメーションを定義する model3.json ファイルまたはアニメーションを含むディレクトリーです。後者の場合、そのディレクトリーの最後の要素に .model3.json を追加しします。
例えば "Resources/Hiyori" と "Resources/Hiyori/Hiyori.model3.json" は等価です。
None または適用されるズーム係数です。これは top と base に優先します。
サイズ決定のための画像の上端です。これは画像の割合で、 0.0 が上端で、 1.0 が下端となります。
サイズ決定のための画像の下端です。これは画像の割合で、 0.0 が上端で、 1.0 が下端となります。これは yanchor のデフォルト値にもなります。
画像がスケーリングされる高さです。これはスクリーンの高さに対する割合です。
最後のモーションがループされるべきならば True, そうでないなら False です。
エイリアスに対するそのエイリアスが示すモーションまたはexpression の辞書です。
モーションフェードが有効になるべきならば True, そうでないなら False です。 _live2d_fade
の値を使用するなら None です。
None または非排他的な exppression の名前のリストです。 expression はデフォルトでは排他的で、一度に1つのみが表示されます。ここにリストされていれば、排他的な expression 1つに加え非排他的な expression をいくつでも表示できます。
シームレスなループを使用するか決定します。シームレスループは 1 つのモーションのループ間のフェードを避けます。これが True ならシームレスループはいつも有効となり、 False ならいつも無効になります。もしくはシームレスループされるモーションの set です。
デフォルトの motion と expression のフェード時間です。これはデフォルトでは Live2D ごとに 1.0 なので、期待しないフェードを起こします。 0.0 に設定すると明示的に要求されたときのみフェードは実行されます。
None または属性のタプルをとり、別の属性のタプルを返す関数です。これを使用して表示する属性を置き換えられます。返す属性は画像表示時には使用されません。ある expression に対して最大でも 1 つの属性が指定されるようにするべきです。
None または属性のタプルをとり、別の属性のタプルを返す関数です。これはを通常互いに衝突する非排他的 expression をフィルターするために使用されます。属性は整列され、新しくリクエストされた属性ほど始めになります。このため、衝突する場合は最初の属性が勝つはずです。
attribute_function と attribute_filter 間の違い前者は一般的に置き換えのために使用され、2つの属性があれば 1 つは 3 つ目によって置き換えられるはずです。後者はグループ中の1つのみが有効となるような属性間の衝突を解決するために使用されます。
filename のみが位置引数で、他のすべての引数はキーワード引数として指定されるべきです。
alias や fade, nonexclusive, seamless, default_fade, attribute_function, attribute_filter の値は filename を共有するすべての Live2D オブジェクト間で共有されるので一回のみ供給されるべきです
Live2D Displayableはimage ステートメントで代入するべきです。
image hiyori = Live2D("Resources/Hiyori", base=.6)
属性も定義でき、これは様々なズームとスケーリングの係数にとても便利です。
image hiyori close = Live2D("Resources/Hiyori", base=.6)
image hiyori far = Live2D("Resources/Hiyori", base=.9)
Live2D 画像を表示する通常の方法は show ステートメントの使用です。image ステートメントの一部として追加された属性を追加して expression とモーションの名前が使用出来ます。
例
show natori exp_00 mtn_01
show hiyori m10
show hiyori m10 m01
これらは Cubism SDKのサンプル名にあるデフォルトの名前を使用しています。モーションとexpressionの名前は Live2D ファイルから取られて小文字になり、もしそれらがmodel3.jsonファイルの名前(ディレクトリや拡張子を除く)で始まり、アダースコアが続くなら、接頭辞は除去されます(例えば "Hiyori_m01" はただの m01 になります)。
排他的expressionは最大で1つ、非排他的なexpressionとモーションはいくつでも使用可能です。1つ以上のモーションが指定されると、そのモーションが順に再生され、(*訳注 Live2D Displayableの引数) loop がTrue なら最後のモーションがループします。これによりアイドル時のアニメーションが続くモーションが再生出来るようになります。各モーションはそのモーションに複数のエイリアスが作成されない限り一度だけ現れます。
2つの特別な属性 null
と still
があります。null 属性は非排他的な expression ファイルが適用されることを意味し、キャラクターのデフォルトの expression を指定します。 still
モーションはすべてのモーションを停止します。
非排他的な expression は属性の否定で除去されるまで保持されます。
show hiyori -wave
多くの Live2D モデルは少なくともモデルが使用する内部座標では高解像度で定義されます。これを調整するため、 Ren'Py には Live2D をスケールダウンする 2つの方法があります。
1つめは zoom 引数です。これは直接モデルの拡大係数を設定します。zoomが使用されると他のスケーリングパラメーターは無視されます。
もう一つは top, base, height 引数を使用します。最初の 2つは2つのラインを画像の上端と下端からの相対指定で指定します (Ren'Py の他の場所では、 0.0 は上端で、1.0 は下端です)。これらの引数が使用されると次の2つが起きます。 :
画像は top と base の間の領域が height になるまでスケーリングされます。ここで height はスクリーンの割合です。
アンカーが調整され、 base はスクリーンの下端に配置されます。
Live2D アニメーションがどのようにスケーリングされるかを理解したら、まず base パラメータをアニメーションの正しい部分がスクリーンの下端に揃えられるまで調整します。つぎに :
画像が大きすぎたら、 height を正しいサイズまで縮めます。
画像が小さすぎたら、 top を大きくしてアニメーション上部の空き空間を縮めます。
Ren'Py の Live2D サポートにはモーションフェードを含みます。通常、 Ren'Py があるアニメーションから他のアニメーションに変化するとき、その変化は突然ものとなり、元のアニメーションが停止して次のものが開始します。トランジションをする場合は両方のアニメーションが同時に再生されます。
Live2D では異なるモデルをサポートしており、以前のアニメーションからスムーズに新しいものに繋がるようにパラメーターが補間されます。この考え方はある場所から別の場所へディゾルブすると言うよりキャラクターがその腕の位置を移動するようなものを考えてください。
モーションフェードは(*訳注 Live2D Displayableの) fade 引数で制御されます。 true なら、モーションフェードが使用され、 False なら突発的な変化になります。 None ならモーションフェードは _live2d_fade
変数によって制御されます。 :
_live2d_fade
= True linkTrue なら、 Live2D アニメーションはモーションフェードを使用し、 False なら、アニメーションは突発的に変化します。
alias パラメーターは自動的に定義されるモーションの固有名を制作者に指定させます。例えば、次のコードにより
image hiyori = Live2D("Resources/Hiyori", base=.6, aliases={"idle" : "m01"})
次が使用可能になります
show hiyori idle
これは次のコードの代替となります。
show hiyori m01
Ren'Py の Live2D サポートは loop パラメーターが True なら最後のアニメーションをループ出来ます。アニメーションがループされるなら、Ren'Py が高価な画像の予測を処理するのに利用できる 0.2 秒以上のポーズの追加が重要です(これは画像予測とロードが他の時に終わっていれば不要です)。