カスタムキャラを作ろう part2

←Part 1に戻る

◆前書き
ある程度の知識がないと厳しい部分があります。
間違っているところ・わからないところは追記更新していこうと思いますのでご指摘ください。
なお、今回の方法はキャラクターのアニメーションはKFのものをそのまま使用します。全てのアニメーションを自作する場合は作業工程が異なる部分が出てきますのでご注意ください。
また時間の都合により、手首から先に関してはボーン含め未調整、ウェイトもほとんど未調整での解説となります。

◆SDKでの作業
1. モデルのテクスチャーとポートレイト(チャット時に横に出る顔写真 256×512)をImportします。Package名が基本的にファイル名となります。画像では”RinChan”となっていますが実際には”RinChan_T”のように”_T”等をつけます(*1)。何らかの理由でたくさんテクスチャーを読み込む場合は”Group”名をつけて管理しやすくします。”Name”は各テクスチャの名前を入れます。今回はオプションはいじりませんが、透過させるなどでアルファチャンネルを含んでいたりする場合はチェック等を入れたりします。

2. 読み込んだテクスチャーを右クリックし圧縮します(しなくてもいいですが容量削減のため)。テクスチャーの状態によってDXTnは最適なものを選びましょう。フロッピーディスクのボタンでutxファイルで保存後、キャラに貼り付けるテクスチャーを選択しておきます。

3. Animationsタブを開きImport Skeletal Meshを押します。part1で保存したPSKファイルを読み込みます。テクスチャーと同様にPackage名等をつけます。

4. KF_Soldier_Tripを選択し、Copy mesh propertiesを押します。そして自分のメッシュに戻りPaste mesh propertiesを押します。

5. SkinとMaterialのプラスを押しメニューを開き、[0]となっている部分で”Use”を押します。するとテクスチャーがモデルに貼りつきます。張り付かなかったり違うテクスチャー場合はTexturesタブを開き、テクスチャーを再選択し、戻ってきてUseします。

6. KF_Soldier_Tripを選択し、AnimationのDefaultAnimationの文字列をコピーします( MeshAnimation’KF_Soldier_Trip.Soldier_Animations_Trip’ )。

7. 自分のメッシュの同じ部分にペーストし、エンターキーを押し、フロッピーディスクのボタンでukxファイルで保存後、隣のフォルダーボタンで保存したファイルを開きます。するとアニメーションが読み込まれます。

8. 適当にアニメーションを選んで動作するか確認します。問題なければSDKを閉じます。この際に変更を保存するか聞かれる場合がありますが、2と7で保存している場合は「いいえ」でOKです。

◆テキストエディタ・コマンドプロンプトでの作業
9. KFのルートディレクトリに”キャラ名Mod”(ここではRinChanがキャラ名)というフォルダーを作り、その中に”Classes”フォルダーを作ります。その中にテキストファイルで”キャラ名.uc”ファイルを作ります。

10. 下記の内容を”キャラ名.uc”をメモ帳等で開き書き、保存して閉じます。変更する場所は赤で、青は必要なら変更となります。

class RinChan extends PlayerRecordClass;

#exec obj load file=”RinChan_A.ukx”
#exec obj load file=”RinChan_T.utx”

simulated static function xUtil.PlayerRecord FillPlayerRecord()
{
local xUtil.PlayerRecord PRE;

PRE.Species = Class’PoliceSpecies‘; // Species (can be used to replace sounds or misc stuff)
PRE.MeshName = string(Mesh’RinChan_A.RinChan‘); // Name of the mesh.
PRE.BodySkinName = string(Texture’RinChan_T.texture‘); // Body skin name (Material #0)
PRE.FaceSkinName = string(Texture’RinChan_T.texture‘); // Face skin name (Material #1)
PRE.Portrait = Texture’RinChan_T.portrait‘; // Portrait texture
PRE.TextName = “Kagamine Rin is a singing synthesizer application with a female persona, developed by Crypton Future Media.“; // Description text.
PRE.VoiceClassName = string(Class’KFVoicePack‘); // Voice pack
PRE.Sex = “F“; // M = Male, F = Female
PRE.Menu = “SP”; // Not needed to modify.
PRE.Skeleton = string(Mesh’RinChan_A.RinChan’); // Unused in KF
PRE.Ragdoll = “British_Soldier1”; // Should be this only.
return PRE;
}

ファイルの指定は”Package.Group.Name”という記述になっており、グループ名を使っていない場合は”Package.Name”となります。
なお、FaceSkinNameは筆者には用途不明なので特に不具合も無いためBodySkinNameを記入しています。最悪、行そのものを消しても動くかも…?詳しいことがわかれば教えてください…。

11. Systemフォルダ内のKillingFloor.iniをメモ帳などで開き”EditPackages=”と書かれている部分の一番下に同じように”キャラ名Mod”を追記し上書き保存します。閉じてもかまいませんが後で消すことを考えて開いたままでもよいでしょう。

12. コマンドプロンプトでコンパイル”ucc.exe make”します(*2)。エラーが無ければ画面のような感じで終わります。エラーがあればFailureなどと表示されますのでucファイルの内容に間違いが無いか確認してください。

13. ServerPerkを入れてKFを起動しSoloでMutatorsを選び、Server Veterancy HandlerをAddします。右側でそれを選びConfigureを押します。

14. View Advanced Optionsにバツがついていることを確認し、”Custom chars”のEditを押し、キャラ名を記入します。OKを押していき閉じてPLAYします。

15. キャラを選択する画面に表示されて、選択して3Dモデルも表示されれば成功!

16. 実際にゲームを開始して、おかしい部分が無いかを簡単に見て、問題がなければサーバーなどで公開し、他のプレイヤーに使ってもらっていろんな角度から眺めて問題点が無いか確認します。問題があればその可能性がある箇所から作業をやり直します。

17. キャラクターのサイズが大きい・小さい、浮いている、という場合はSDKを開きAnimationsタブでモデルを読み込み、Meshタブの”+Mesh”内の値を修正します。ちなみに小さくしても大きくしても1人称視点には影響はありません(たとえば、小さいと天井が低い部分が通れる、ということはありません。ただし他の人からの視界が良くなるなどの問題があるのでバランスよく…)。

*1 このようにPackage名を変更しておかないと、同じPackage名ではテクスチャーファイルなのかアニメーションファイルなのか音声ファイルなのか判別できずコンパイル時にエラーが起こる場合があります。
*2 完了後、システムフォルダからsteam_appid.txtを削除しましょう。これがあるとなぜかオンラインでゲームができなくなります。また、KillingFloor.iniに追加したEditPackagesが不要であれば消しておきましょう。

2 Thoughts on “カスタムキャラを作ろう part2

  1. Comokanu on 2012/08/24 at 1:02 AM said:

    カスタムキャラの作成に成功しました!どうもありがとうございます。

    キャラ名.ucのテキストを直接コピー/ペーストしますと「”」など「’」が全角になってしまいコンパイル時にエラーが発生しますので半角に変換することをお願いします。

    本当に簡単に読めてとても便利なガイドでした、あらためて感謝します。

    • お疲れ様でした。
      無事作成できたようで、ガイドを作ったかいがありました。

      シングル/ダブルクオートが全角になる件なのですが、
      このサイトで使っているスクリプトのWordpressの仕様で、
      ならないように設定は可能なのですがバージョンアップごとに勝手に戻るので、
      以前は設定していたはずなのですが完全に忘れていました。
      別で何か良い方法が無いか探してみます。
      ひとまず暫定で対応しておきました。
      ご報告、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。