アリスのスキン構成-1
 
                                                        次ページ
pak1_large_jpn.pk3PakScapeで開いたところです。(pk3ファイルは、実態はzipファイルです)
modelsフォルダの中にaliceフォルダ、その中にglasshopperteaフォルダ、その中にheadgearフォルダとwingsフォルダ。
modelsフォルダの中にfxフォルダ、その中にfx_capsフォルダ
 

 

pak0_j.pk3の中にscriptsフォルダーが有ります。この中にshaderファイルが入っています。
(BESTの場合です、初期版だとpak0.pk3の中に有ります、構成は若干違いが有ります)

以上がアリスのテクスチャファイル関係のフォルダです、この構造でアリス用スキンが出来ています。
テクスチャを変更しない場合はそのファイルはいらないので、中身のないフォルダは無くてOKです、有ってもかまいませんが。
よって、通常大方のスキンファイルには必要なフォルダしか入っていません。
拡張子はpk3で、ファイル名順列がゲームファイルより後ろに成るよう、名前を付けて保存します。
 (同名テクスチャファイルが有った場合、後のファイル内のものが使用されるため)

すべてのファイルを使用したとすると、スキン用のフォルダ構成は下図のようになります。

●アリスのモデルはmaterialナンバーで部位が割り付けられています。
materialナンバーとテクスチャファイルの対応関係は
pak0_j.pk3(初期版ではpak0.pk3)のmodelsフォルダ内に有るalice.cikファイル(バイナリファイルです)と
alice.tikファイル(テキストファイルです)に記述されています。(同名の場合cikファイルが使用される
ファイル内では拡張子ftxの部分はtgaで記述されています。
通常時はmodelsフォルダ内aliceフォルダ内の以下のファイルが使用されます。
material1  顔       body3.ftx / blinkface.ftx (くち内部は左上隅の色部分、blinkface.ftx はマブタを閉じたときの絵)
material2  髪       hair.ftx
material3  胴       body.ftx
material4  右肩      body.ftx
material5  左肩      body.ftx
material6  右腕      r_arm.ftx
material7  左腕、元    r_arm.ftx
material8  左腕、中    r_arm.ftx
material9  スカル     skull.ftx
material10 ストラップ   bowstraps.ftx
material11 スカート    body2.ftx
material12 右足、上    body.ftx
material13 右足、下    body.ftx
material14 左足      body.ftx
material15 首キャップ   cap01.ftx  (首が飛んだ時の切断面絵)
material16 左腕キャップ  cap01.ftx  (ゲーム中で切断される場面が無いので目に触れない)material78の境
material17 右足キャップ  cap01.ftx  (ゲーム中で切断される場面が無いので目に触れない)material1213の境
material18 横向きリボン  body.ftx
material19 左腕、先    r_arm.ftx

●複数のmaterialナンバーに同じテクスチャファイルが書かれているものは、一枚の絵に複数の部位が含まれていたり、
 分割して割り付けられたり、共通使用になっています。
 左肩、左手、右足は別ファイルを指定することで、異なる絵柄にすることが可能です。




足の分割が見えるようにスカート下部を透明にしています。
次ページの方法A方法Bを使ったサンプルスキンを使用。


☆その他、イベント用
バッタ茶用に、
modelsフォルダ内aliceフォルダに顔用g_face.ftx、アーム用g_arm.ftx
modelsフォルダ内aliceフォルダ内grasshopperteaフォルダ内headgearフォルダに目と触覚用skin01.ftx
modelsフォルダ内aliceフォルダ内grasshopperteaフォルダ内wingsフォルダに羽根用skin01.ftx

怒りの箱用に、
modelsフォルダ内aliceフォルダに顔用rage_face.ftx、髪の毛用rage_hair.ftx
アーム用rage_arm.ftxrage_claw.ftx、角用backhorns.ftx

アリスの首が飛んだ時用に、
modelsフォルダ内fxフォルダ内fx_capsフォルダにアリスの首の切断面用cap01.ftx
が有ります。

拡張子ftxのファイルは拡張子tgaの画像ファイルを変換して使用します。(FAKK2Texと言うソフトでftx←→tga相互に変換可)

***************************************************************************************************************************
ファイル構成別スキンファイルの例
★1.テクスチャファイルのみによるもの。(絵柄だけ変更できれば良いという場合は、これでOKです)
バッタ茶イベント時のファイルを含まないもの          バッタ茶イベントのファイルを含むもの
 
body.ftxbody2.ftxbody3.ftxblinkface.ftxhair.ftxbowstraps.ftxskull.ftxr_arm.ftx、が通常時のファイルです。
イベント時のファイルは含んでいるスキンと、含んでいないスキンが存在します。

★2.テクスチャファイルと、shaderファイルによるもの。
shaderファイルを使用することにより、画面での表現効果を変えたり、使用するテクスチャファイルを指定出来ます。
おもに、アリスの一部を(横向きリボンスカート切り詰め等)透明にしたい場合に使用されている。

(以下の例はトライアンドエラーによる結果なので、解釈の誤りや余計なものが含まれている可能性は有ります)
shaderファイル記述の例、body.ftx
 (テキストファイルで作成、各FTXファイルについて下に続けて記述し1ファイルとし拡張子shader
   既存のshaderファイルと同じファイル名にならない名前をつけてscriptsフォルダ内に保存
する)

(以後ファイル記述で、右にずれている行はスペースに置き換わっていますが、実際のファイルではtabキーで開けています)
(tabキーで空けても半角スペースで空けても良いですが全角スペースでは動作しません)
(スクリプト記述を見やすくするためで左詰で書いても動作は同じです)


shaderファイル内容、次行から(以下、黒字部分は説明文に付き記述不要)
//body(//が先頭に付いた行はコメント行で無視されます、記述内容が判り易いよう見出しを書いています)
models/alice/body(alice.cikファイルに記述されたマテリアルNo.に対応するFTXファイル名で、拡張子は付きません)
{
  cull disable(これが無いと内側から見た場合テクスチャが透明になる、内側から見られない部分ならば無くても同じ)
  {
   map models/alice/body.tga(格納場所のパス付きファイル名、代わりに違うファイルをここで指定も可能)
   depthWrite(通常のスキンではなくても同じ、他の絵と重乗時、無いと他の記述と相関で表示に不具合が出ることあり)
   blendfunc GL_ONE GL_ZERO(画像の色設定のようであるが不明、他の記述で色が変わったり透過との境の描写に違いが)
   alphaFunc GE128(画像の透過部分を画面上で透明にする)
   rgbGen lightingdiffuse(周囲の光源状態に応じてテクスチャの明るさが変わる設定、変化させない場合はrgbGen identity)
  }
}
前行まで。

この方法で横向きリボンを透明化した場合、見る角度によっては外形の一部がごく細い線で見える場合が有る(一例、赤線内)
 アリスの息遣いによる微妙な動きで位置が変化するので右画像の場合など目の残像で見た目チラチラと3-4倍多く連なって見えます。
 見える部分は見る位置によって変わるし、まったく見えない方が多いのではあるが。
  下方の「横向きリボン」の透明化(別方法)で行った場合は見えない。


●マテリアルNo.で一つのパーツしか割り当ての無い物については、全体を透明にしたい場合、
 上の記述と透明にしたファイルを用意すれば出来るが、
 以下のように記述すれば、ファイルを用意しないで透明として表示する。
☆スカルを透明にした例
shaderファイル内容、次行から(テクスチャファイル指定のmap行は記載しません)
//skull
models/alice/skull
{
  {
    depthfunc equal
  }
}
前行まで。

アリス後ろ側の「横向きリボン」の透明化(別方法)
 横向きリボンを消すのには、body.tgaファイルの該当部分を透過にし、shaderファイルとセットで
 実現していましたが、alice.cikファイルで別ファイルを指定しshaderファイルでdepthfunc equalを使用することで消し去ります。
alice.cikファイルのmaterial18の指定ファイルbody.tgaribbon.tga(名前は適当に)に変更し、
 shaderファイルにribbonの項目を作成、対象テクスチャファイル指定のmap行は作成しません。
以前map行を記述していましたが、色数16bit低解像度時に輪郭が見えやすい事が判明したため
 対策で記述しないことに成りました。(2014.02.01改定)

shaderファイル内容、次行から(青色文字部分のみ)。
//ribbon
models/alice/ribbon(alice.cikファイルで指示したファイル名)
{
  {
    depthfunc equal
  }
}
前行まで。

★3.他のファイルを含むもの。
●1.alice_baseframe.skbファイルを含むもの。modelsフォルダ内aliceフォルダ内。
改造したファイルで、スカートのモデリングを変更し、ミニスカートにするため使用されている。
テクスチャの絵でスカート内側になる部分を透明化しないと、下から見たとき、股間から円錐状のものが垂れ下がるのが見える。

                        ↑
    下部中央の白色部分がスカート内側の実際の有効領域、ここを透明に
左右の部分は無効領域なので、含めて下部全部を透明化してもかまわない、shaderファイルは★2内上と同書式。

↓白色部分を透明化しただけ。

↓画像左右はalice_baseframe.skbを使用してミニスカート化したもの。


●2.alice.cikファイルを含むもの。modelsフォルダ内。
マテリアルNo.5、7、8、12、13、19は同じテクスチャファイルを指定しているので、alice.cikファイルを書きかえて
 別テクスチャファイルを指定してやればその部分を違う絵柄に出来ます。
 バイナリファイルなので、書き換えにはバイナリエディタを使用します。
(Stirlingというフリーのバイナリエディタを使用しました)アドレス欄で000004A0から00001D70の間に有ります
(次ページ参照)

★4.シンセティックスキン  ←(勝手に命名したものです、悪しからず)
●もとのテクスチャの上に透過キャンバスに書いた絵を重ねて表示します。
 髪の毛にリボンを追加する例です。(紫色部分が重ね合わせ分)
1.髪に透明部分が無い場合
shaderファイル内容、次行から(黒字部分は説明につき不要)。

//hair
models/alice/hair
{
  {
    map models/alice/hair.tga(髪のテクスチャ)
    depthWrite
    rgbGen lightingdiffuse
  }
  {
    map models/alice/ribbon01.tga
(リボンのテクスチャ)
    blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
    depthfunc equal
(髪に透明部分が無い場合は無くても良い)
    rgbGen lightingdiffuse
  }

}
前行まで。
2.髪に透明部分が有る場合
shaderファイル内容、次行から(黒字部分は説明につき不要)。

//hair
models/alice/hair
{
  {
    map models/alice/hair.tga(髪のテクスチャ)
    blendfunc GL_ONE GL_ZERO
    alphaFunc GE128
    depthWrite
    rgbGen lightingdiffuse

  }
  {
    map models/alice/ribbon01.tga
(リボンのテクスチャ)
    blendfunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
    depthfunc equal
(これが無い場合、髪に透明部分が有ると涙の池、他一部のステージで透明部分が異常になる)
    rgbGen lightingdiffuse
  }

}
前行まで。

★5.ムービースキン  ←(勝手に命名したものです、悪しからず)
●テクスチャが複数の動画ファイルに成っているものです。
元々有る髪に揺れ動くリボンを追加の例です。(紫色部分が動画部分)
1.髪に透明部分が無い場合
shaderファイル内容、次行から(黒色文字部分は説明につき不要)。
//hair
models/alice/hair
{
  {
    map models/alice/hair.tga
(元々有る髪のテクスチャ)
    depthWrite
    rgbGen lightingdiffuse
  }
  {
    animMap 7 models/alice/hair01b.tga models/alice/hair02b.tga models/alice/hair03b.tga models/alice/hair04b.tga models/alice/hair05b.tga models/alice/hair06b.tga models/alice/hair07b.tga
(画面では折り返して見えますが改行は無し)
    depthfunc equal
(髪に透明部分が無い場合は無くても良い)
    rgbGen lightingdiffuse
    blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
  }

}
前行まで。
2.髪に透明部分が有る場合
shaderファイル内容、次行から(黒色文字部分は説明につき不要)。
//hair
models/alice/hair
{
  {
    map models/alice/hair.tga
(元々有る髪のテクスチャ)
    blendfunc GL_ONE GL_ZERO
    alphaFunc GE128
    depthWrite
    rgbGen lightingdiffuse
  }
  {
    animMap 7 models/alice/hair01b.tga models/alice/hair02b.tga models/alice/hair03b.tga models/alice/hair04b.tga models/alice/hair05b.tga models/alice/hair06b.tga models/alice/hair07b.tga
(画面では折り返して見えますが改行は無し)
    depthfunc equal
(これが無い場合、髪に透明部分が有ると涙の池、他一部のステージで透明部分が異常になる)
    rgbGen lightingdiffuse
    blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
  }

}
前行まで。

************************************************************************************************************************
動画テクスチャファイルはtgaファイルからftxファイルに変換しないでtgaファイルのままで使用できます。
animMap の次に有る数字は単位時間当たりの描画コマ数です。
1つのコマファイルを続けて複数記述することでも、見た目のコマ描画数を変えられます。
1つ1つのコマファイルに付き、パス付きで記述します。
1つの動画に付き、最大64コマまで使用できます、動画ファイル名の記述は改行せず、続けて最後のファイルまで繋げて記述します。
記述順に描画され最後から最初へと、ループして連続描画されます。
複数の動画を同時に重ね合わせることも出来ます、動画部分を続けて多段に記述します。
透過でないテクスチャで既存の全体を置き換えることも出来ます。

★6.その他、巷には、オリジナル以外のパーツを付け加えたものも存在します。

                              次ページ