# 概要

カスタムテクスチャセットは、キャラクタ、スクリプタ、エモーションの外観を変える。外観にはアニメーションデータも含まれる。

テクスチャセットは、テクスチャ本体(ビットマップ)、カスタムバッチファイル、アニメーション定義ファイルの 3つで構成される。


# テクスチャ本体(ビットマップ)

ビットマップは png フォーマット、サイズが 400x400 以内で、24ビットカラーでなくてはならない。抜き色は RGB(255,0,255) 固定。この色はテクスチャを描くためには使用できない。

ファイル名は問われない。ファイルの読み込みと ID へのアサインはカスタムバッチファイル内の loadtexture 関数で行う。


# カスタムバッチファイル

autoexec.txt という名前のテキストファイル。テクスチャが選択された時点で実行される一連のコマンドを記述する。必要な処理は以下の通り。

テクスチャなら sv_textureauthor 変数、スクリプタなら sv_scriptortextureauthor 変数、エモーションなら sv_emotiontextureauthor に作者の名前をセットする。
loadtexture 関数でビットマップファイルを読み込み、それぞれのビットマップにテクスチャ ID を与える。
registertexturealias 関数で表情語に内部 ID を登録する。
registerguioffset 関数で GUI オフセット値を登録する。
registeranimation 関数でアニメーションセットを登録する。
settexture 関数で初期テクスチャを設定する。特にスクリプタについては、ここでセットされたものが最後まで使用されることが多いので、重要。

デフォルトの autoexec.txt を参照すると理解が早い。各関数の引数の詳しい意味についてはリファレンスを参照。

カスタムバッチファイルはエンドユーザスクリプトではないので、記述にミス(存在しないファイルを指定、サポートされていない ID を指定など)があってはならない。

テクスチャ ID は以下のようにマッピングされる。

0〜499
テクスチャ
500〜599
スクリプタ
600〜699
エモーション
700〜
予約

異なる種類のテクスチャデータが他の領域を使用してはならない。


# アニメーション定義ファイル

1ファイルに 1つのアニメーションセットが記述され、registeranimation 関数で登録される。

一つのアニメーションセットはさらに複数のサブセットを所有する。セットが実際にパイプラインに送られる際は、これらサブセットのうち 1つがランダムに選択される。ランダム性をなくしたい場合はサブセットをたった一つだけ(set0 だけ)定義する。

basetexture はアニメーションが自動発動する元のテクスチャの ID を示す。自動発動しない場合は指定しなくてもよい。

interval はアニメーションの自動発動間隔を表す。単位はミリ秒。自動発動しない場合は指定しなくてもよい。

set[setNo].frame[frameNo] に各サブセットのフレーム情報を記述する。左から順に、テクスチャ ID、描画タイプ、x座標、y座標、表示時間(ミリ秒)。

描画タイプは 0 がベース、1 がオーバードロー。

ベースは単なる連続したテクスチャ切り替えである。x座標と y座標は無視される。最後のコマでアニメーション開始時のテクスチャに戻したい場合は、フレーム情報にその旨記述する(-1 を指定しても自動で戻るわけではない)。

オーバードローの場合、ベーステクスチャはそのまま、その上に別のテクスチャがドローされる。抜き色は正しく抜かれる。オーバードローアニメーションは、テクスチャ ID の欄に -1 を指定した最終フレームを設定し、終端しなくてはならない(そうしないと描画結果がそのまま残される)。

basetexture,101 interval,2000 set0.frame0,103,1,50,50,100 set0.frame1, -1,1,50,50,0
この場合、現在のテクスチャが 101 のとき、約 2000ms に 1回アニメーションが発動し、アニメーションが発動すると ID 103 のテクスチャが座標 (50,50) に 100ms 描画される。その後消える。

アニメーション定義ファイルはエンドユーザスクリプトではないので、記述にミスがあってはならない。

戻る