NarraLeaf
モデルランタイム

モデルランタイム

Studio における Live2D と Spine のキャラクター。描画ランタイムが行うこと、それが Studio に同梱されず提供される理由、プロジェクト内での置き場所

ビジュアルノベルのキャラクターの多くは画像です。ポーズごとに一枚の完成したスプライト、あるいはタグで切り替える層の集まりです。この二つは Studio 自身が描画します。

Live2D または Spine のキャラクターは画像ではありません。独自のアニメーションシステムを持つリギング済みモデルであり、ランタイム、つまりそのモデル形式を作る会社が書いたレンダラーによって描画されます。Studio はどちらのランタイムも含んでおらず、ダウンロードもしません。ランタイムはプロジェクトごとに一度提供され、それ以降 Studio はそのキャラクターを他のキャラクターと同じように扱います。スクリプトが置いた場所に立ち、カメラとともに動き、ストーリーからポーズを取り、セーブデータから正しく復元されます。

ランタイムが提供される理由

Studio はソースを公開しているフリーソフトウェアであり、どちらのレンダラーもその中に同梱することはできません。Live2D のライセンスは、ソースが公開され自由に改変できるライセンスがそのコードを覆うことを禁じています。Spine のライセンスは、そのランタイムを含む製品のすべてのユーザーが有償の Editor ライセンスを保有することを求めます。そのため NarraLeaf はどちらのレンダラーも Studio と共に配布せず、ユーザーに代わって取得することもまた配布に当たります。

Studio はレンダラー以外のすべてを担います。

Studio が行うことユーザーが行うこと
キャラクターの所有: 立ち位置、レイヤー、トランスフォーム、不透明度、セーブデータの項目ベンダーからランタイムを入手し、そのライセンスに同意する
ランタイムをプロジェクトにインストールし検証する出荷するゲームについてライセンス上の義務を負う
モデルを読み込み、モーション・表情・パラメータを埋めるモデル自体を用意する
ランタイムをビルド出力にパッケージ化する

実際のところ、レンダラーはゲームを出荷する側によって配布されることになります。

商用で出荷する前にベンダーの規約を読んでください。Studio はインストール時に要点を示しますが、それはベンダー自身のライセンスに代わるものではなく、NarraLeaf はその当事者ではありません。

ランタイムの置き場所

ランタイムごとに、プロジェクト内に一つのフォルダがあります。

index.js
README.md

フォルダ名がそのランタイムの名前です。キャラクターが参照するのもこの名前であり、エンジンが実行時に解決するのもこの名前です。index.js だけが必須のファイルで、これを欠くフォルダはインストール未完了として報告され、パッケージ化の際にスキップされます。

ランタイムはキャッシュではなくプロジェクトのコンテンツであり、すべてのビルドに含まれます。Live2D のランタイムファイルはおよそ 1 MB で、これはレンダラーがその中にコンパイルされているためです。

両ベンダーの規約が対象とするのは、出荷するゲームの中でレンダラーを再配布することであり、公開のソースリポジトリではありません。公開するリポジトリからは runtimes/puppet/ を除外してください。それを持たないマシンでは、再びインストールすれば済みます。

ランタイムの管理

プロジェクト → ランタイム には、Studio が対応するすべてのランタイムと、プロジェクト内で見つかったすべてのランタイムが、その状態とともに一覧表示されます。

プロジェクト → ランタイム に Live2D Cubism と Spine が並び、どちらもこのプロジェクトには未インストールと表示されている
状態意味
インストール済みindex.js が存在し読み込める。
インストール済みだが不完全フォルダは存在するが index.js がない。インストールが完了しなかったか、誤ったアーカイブが展開された。
このプロジェクトには未インストールフォルダが存在しない。モデルを使わないプロジェクトでは通常の状態。

同じインストールの流れは、ランタイムを必要とするキャラクターからも到達できます。

ランタイムがあるマシンで作成されたキャラクターは、ランタイムがないマシンでも同じ名前を参照し続けます。キャラクターが壊れているわけではなく、Studio がそれを書き換えることもありません。このプロジェクトには未インストール と報告し、インストールを提案します。クローンした直後のプロジェクトはこの状態です。

キャラクターの作成

ランタイムはキャラクター作成時に選択し、後から変更することはできません。新規キャラクター → Live2D Cubism / Spine / カスタムランタイム。三つのキャラクター種別はデータを共有しないため、種別は作成時に固定され、切り替えると以前の内容は失われます。

新しいモデルキャラクターには、設定すべきことが二つあります。

描画ランタイム

このキャラクターが必要とするランタイムが、このマシンにインストールされているかどうか。されていない場合、インストール がその製品の導入フローを開きます。

モデル

プロジェクトのアセットとしてのモデル自体。モデルは フォルダ です。マニフェストと、マニフェストが指し示すテクスチャ・モーション・物理設定を含むため、ファイルではなくフォルダとしてインポートされます。プロジェクトにまだモデルアセットがない場合、この行からインポートを提案します。

インスペクタの残りの部分は、この二つが揃って初めて表示されます。その内容はモデルから読み取られるためです。Studio はインストール済みのランタイムを通じてモデルをマウントし、その内容を問い合わせます。モーション・表情・スキン・パラメータは選択できるリストになり、その上のプレビューはモデルを静止ポーズで描画します。

ランタイムがモデルの内容を報告しないこともあります。その場合はすべてのコントロールがテキストフィールドとなり、名前は手動で入力します。それ以外は変わりません。

ストーリーからのポーズ指定

モデルキャラクターは、通常のキャラクターが受け付けるすべてに加えて、四つのコマンドを受け取ります。

コマンド別名設定内容
/motion Doll run/animアニメーション。名前を指定しない場合はクリアし、モデルは静止する。
/face Doll smile/expr/expression表情。画像キャラクターのポーズを切り替えるのと同じコマンド。
/skin Doll winter/costumeスキン。スキンを持つ形式向け。
/param Doll ParamAngleX 12モデルの数値パラメータ一つ。

各名前はモデルが報告した内容から取られ、リストとして提供されます。

対応するエンジン要素

モデルキャラクターはエンジンの Puppet 要素にコンパイルされます。これはエンジンが所有する領域であり、その内部をバックエンドが描画します。Studio はそのバックエンドをインストールしてモデルを渡し、領域自体はエンジンの責務です。ランタイムを書く際は、このページが契約になります。

このページの目次