『Fy Mascot』-キャラクターを作る

はじめに

『Fy Mascot』はMMDモデルやセリフ(テキストファイル)などを用意することで誰でも俺の嫁お気に入りのキャラクターを作ることができます。キャラクターの作成には、『Fy Mascot』に付属しているサンプルのキャラクターを参考にするとわかりやすいと思います。

なお、サンプルのキャラクターにはMMDモデルは入っていないので、まず最初に皆さまでお気に入りのMMDモデルを用意していただく必要があります。

思考エンジンも含めて完全にオリジナルのキャラクターを作ることもできますが、まずはサンプルの思考エンジンを使ってモデルを選びセリフを差し替えてキャラクターを作るのが簡単でオススメです。

キャラクターデータ

キャラクターデータは『character』フォルダの中に、キャラクターごとにフォルダに分けて入っています。

picture

キャラクターは以下のファイルで構成されています。

情報ファイル類

各キャラクターには『情報ファイル類』として、『document.xml』や『イメージ画像(image.png/icon.png)』などがあります。

・画像ファイル

『icon.png』、『image.png』の画像は、プロパティシートで表示される画像です。『icon.png』は120×120ピクセル、『image.png』は240×320ピクセルの画像です。

picture

・ドキュメントファイル

『document.xml』はキャラクターの各種情報が書かれたもので、キャラクター自体の情報や思考エンジンなどが書かれています。『document.xml』は『XML』形式のテキストファイルで、『メモ帳』で開くと編集ができます。思考エンジンのファイル名には拡張子を含めません。

picture

モデルとモーションデータ

『Fy Mascot』ではキャラクターにMMDモデルを使っています。MMDの『モデルデータ』と『モーション』および『情報ファイル』が必要です。すべてのファイルをキャラクターの『model』フォルダに保存します。

picture

・モデルとモーションデータ

キャラクター一人に対して、『MMDモデル(PMD/PMX)』が一つ、何もしていない時の『モーション(VMD)』が一つ必要で、『モーション』はリアクションにあわせて増やすことができます。

『MMDモデル』のファイル名は『model』、モーションデータのファイル名は『model+3桁の数字』になります。数字は000から順番にふる必要があります(抜けるとそこから先は無視されてしまいます)。モーションは最低1つ以上、最大128個以下です

マスコットのリアクションがどのモーションに対応するかは後述の『MMD情報ファイル』に記述するので、とりあえず順番に並べておけばOKです。下のモーションの対応表は例です。

picture

『MMDモデル』には画像など複数のデータが入っていますが、中身のデータの意味がよく分らないのでとりあえず全部丸ごとキャラクターの『model』フォルダに入れてください(笑)。

picture

・情報ファイル

モデルの位置とモーション情報を記述した『モデル情報ファイル』と、モーションごとのアタリ判定を記述した『モーション情報ファイル』があります。『モデル情報ファイル』のファイル名はモデルファイルと同じで、『モーション情報ファイル』のファイル名はモーションファイルと同じになります。

ファイルは文字コードがUTF8のテキストファイルで、$から始まる行はコメントとして無視されます。コメントは何行あっても構いませんが一行あたりの文字数は全角で100文字程度にしてください。

☆モデル情報ファイル

モデル情報ファイルにはモデルの位置などの設定と、モーションの情報を記述します。

picture

@CAMERA:/@MODEL:

@CAMERAはMMDモデルのカメラ座標です。前の3つがカメラのXYZ座標、後ろ3つが向きのXYZ座標です。下の例では[Camera X, Camera Y, Camera Z]にあるカメラを[Target X, Target Y, Target Z]に向けて設定します。

@MODELはMMDモデルの位置です。前の3つがモデルのXYZ座標、後ろ3つがX軸、Y軸、Z軸で何度(0°~360°)回転させるかを設定します。下の例ではモデルを[X, Y, Z]においてX軸でRotation X度,Y軸でRotation Y度、Z軸でRotation Z度回転させた状態にします。

@CAMERA:Camera X,Camera Y,Camera Z,Target X,Target Y,Target Z
@MODEL:X,Y,Z,Rotation X,Rotation Y,Rotation Z

#モーションセット

#から始まる行はモーションセットの情報です。『思考エンジン』から送られてくるモーションセットに対して、どのモーションを実行するのかを記述します。モーションセットは半角英数字で255文字以内です

『everyday』が何もしていないときのモーションなので必ず記述してください。

#モーションセット:動作モード,モーション番号

動作モードは、1回だけ行って通常のモーションに戻る場合は『ONCE』、次のモーションが指示されるまで繰り返す場合は『LOOP』を指定します。たとえば、『test』というモーションが送られてきた場合は、『model001.vmd』のモーションを1回だけ実行する場合は下記のようになります。

#test:ONCE,1

複数のモーションを続けて行うよう記述することもできます。最大で16個まで対応しています。たとえば、『dance』というモーション名が『model002.vmd』→『model004.vmd』→『model006.vmd』→『model004.vmd』の順に繰り返し実行する場合は下記のように記述します。

#dance:LOOP,2,4,6,4

複数のモーションからランダムで1つを選択するよう記述することもできます。たとえば、『angry』というモーションが『model003.vmd』→『model005.vmd』と『model009.vmd』のどちらか →『model007.vmd』の順に1回だけ実行する場合は下記のように記述します。なお、例は2つですが3つ以上から選択することも可能です。

#dance:ONCE,3,$select{5|9},7

☆モーション情報ファイル

モーション情報ファイルにはアタリの情報を記述します。アタリは一つのモーションにつき最大16個です。アタリはクリック又はストローク(なでる)した際に『思考エンジン』に送られます。アタリの動作は『思考エンジン』次第で、対応してない場合は何の反応もしてくれません。

picture

アタリの情報はアタリ名と位置(パーセンテージ)を記述します。アタリ名は半角英数字で255文字以内です。位置はキャラクターのウィンドウ(見えないですが解像度で設定したキャラクターが動き回れるエリア)の、上下は上からの距離、左右は中央からの距離をパーセンテージで(左,上,右,下)の順に記述します。

例えば下図の赤い四角で囲った領域(キャラクターの顔)でアタリ名がFACEならば、矢印で示した部分の距離となるので下記のようになります。激しく動くモーションでは適切な判定にならないかもしれませんが、まぁ細かいことは気にしないで頂けるとありがたいです。

#FACE:5,20,5,30

picture picture

 

思考エンジン

キャラクターのセリフとモーションは、『思考エンジン』というプログラム(DLL)でコントロールしています。

『思考エンジン』は仕様を公開しており、『Fy Mascot』にサンプルソースコードも添付しているのでオリジナルの『思考エンジン』を作ることもできます。作成するにはプログラミング(C言語)の技術が必要になりますが、それだけに工夫次第ではかなり自由度が高いのがポイントです。

オモヒカネ

サンプルのキャラクターには『オモヒカネ』という『思考エンジン』を搭載しています。『オモヒカネ』はセリフをスクリプト(テキストファイル)として分けているので、メモ帳で編集することでキャラクターに好きなセリフを話させることができます。

オモヒカネには独自の拡張機能が搭載されており、『思考エンジン』自体を作らなくても、スクリプトなどを上手に使うことでオリジナルのキャラクターをそこそこ表現できるようになっています

インストール

オプションプログラムはzip圧縮したものをプロパティシートにドラッグアンドドロップすることでインストールすることができます。

初回起動時のキャラクター

初回起動時のキャラクターは"sample"になっていますが、『config.ini』というテキストファイルを作成し下記のように記述すると『orenoyome』というフォルダのキャラクターが初回起動時に選択されます。独自キャラクターを添付して配布する場合などに便利です。

[CHARACTER]
CHARACTER=orenoyome

※ 二回目以降はセーブデータを初期化しない限りは、選択されているキャラクターが選択されます。