Kenshi
Not enough ratings
MODガイド キャラクターエディター編
By Lucius
キャラクターエディターに関する要素の説明
  • XMLファイル
  • ゲームデータ(FCS)
   
Award
Favorite
Favorited
Unfavorite
XMLファイル
エディターのXMLファイルは、体型やポーズ(シェイプキー)、体色に対してエディター上の設定範囲や容姿のランダマイズパターン等を制御しています。


要素・属性の説明
Range
カラー以外の設定範囲を定義

Rangeの属性
  • name
    GUIに表示する項目名

  • target
    操作対象のポーズ名

  • target_opposite
    スライダーがマイナスのときの操作対象のポーズ名

    未定義の場合は、targetが操作対象です。

  • min
    スライダーの下限値

  • max
    スライダーの上限値

  • mid
    ランダム生成の中央値

    未定義の場合は、maxとminの平均値です。

  • random_variation
    ランダム生成の範囲をオーバーライド

    ランダム生成の範囲は、通常「mid ± (max - min) * appearance random deviation percentage * 0.5」ですが、この値を定義すると「mid ± (max - min) * random_variation * 0.01」になります。

  • random_group
    ランダム生成をグループ化

    未定義の場合は、-1相当になります。

    random_groupが0以上かつ同じ値の項目は同じ乱数を使うため、振れ幅(-100%~100%)が同じになります。
    ただし、faces weirdnessを無視する副作用があります。

    ポーズ系、カラー系は独立しているため、異なる系統を同じ値にしても別グループ扱いです。

ColourRange
カラーの設定範囲を定義

ColourRangeの属性
  • name
    カテゴリ名

  • mid
    ランダム生成の中央値

    未定義の場合は、(Colourの定義数 - 1) * 5です。

  • random_variation
    Rangeと同様

  • random_group
    Rangeと同様

    カラー系はSkin Toneしかないので、設定する意味はありません。

Colour
カラーをr,g,bの属性で定義

Category
データカテゴリを定義

Categoryの属性
  • name
    カテゴリ名

    ポーズはFaceでないとランダム化の対象になりません。
ゲームデータ(FCS)
RACE
  • editor limits
    XMLファイルのパス

  • morph num
    種族と性別ごとのランダム容姿の生成パターン数
    ※パターンはバグで機能しません。

  • hair colors
    髪色の候補リスト
    val0は相対的な抽選確率

  • haris
    髪型と髭の候補リスト
    val0は相対的な抽選確率

  • heads female
    女性の顔の候補リスト
    val0は相対的な抽選確率

  • heads male
    男性の顔の候補リスト
    val0は相対的な抽選確率


FACTION
  • faces weirdness
    ポーズの変動範囲に乗算

  • hairstyles
    勢力固有の髪型と髭の候補リスト


CHARACTER
  • body
    固有容姿となるbod2ファイルのパス
    ※半角英数記号を使用し、日本語等は厳禁です。
    ※ハッシュ値の計算にバグがあり、NPCの顔が高確率で設定通りに描画されません。

  • female chance
    女性になる確率
    開始時のキャラクターのみbodyに含まれる性別を優先し、それ以外はこの値で性別を決めるため、bodyデータが男性なら0、女性なら100にしてください。

  • shaved
    髪のメッシュとテクスチャを非表示にします。

    ランダム容姿なら以下の値をオーバーライドします。
    • bone_horns_top_short
    • bone_horns_top_short
    • bone_horns_curved


ATTACHMENT
  • playable
    エディター画面での選択可否
    Falseにすると選択不可になりますが、エディター画面におけるランダム生成の対象からは除外できません。
容姿が固定のNPCのバグについて
容姿が固定のNPCをよく観察してみると顔の形状がbod2の設定通りでない事象がよく発生しています。


原因
結論、ハッシュ値の計算方法の誤りが原因で、ポーズ(シェイプキー)の値が異なるキャラクター間で同じ値だと認識されています。

ポーズの値を100倍にして端数を切捨ててからハッシュ値を計算するべきところを100倍しないで計算しています。
具体的には、キャラクターエディターのスライダーが以下の範囲で同じハッシュ値になります。
  • -199 ~ -100
  • -99 ~ 99
  • 100 ~ 199

なお、プレイヤーキャラクターと容姿がランダムなNPCは、ハッシュ値を使わないので影響ありません。


回避策
既存のポーズでは、ハッシュ値が使い物にならないので、見た目に影響しないフェイクのポーズを用意します。
ハッシュ値を変えるため、bod2は1単位(スライダーは100単位)で設定します。
ただし、フェイクにするポーズは、bod2に追加するだけでは効果がなく、meshファイルに存在する必要があります。

既存のmeshにフェイクポーズを追加する方法を以下に掲載します。


1.フェイクポーズの作成
公式版のアドオンは、頂点が全く動かないシェイプキーをエクスポートできないので、フェイクポーズが作成できません。

拙作のアドオンは、バージョン1.2.0からフェイクポーズの作成機能を試験的に導入しています。
そのため、以下は拙作のアドオンによる説明になります。

1.1.設定変更
アドオンのプリファレンスで設定します。

プリファレンスを開いてアドオンの項目を表示します。


「contain fake shape keys」を5に設定します。

1.2.meshをインポート
先にskeletonをインポートするか、meshとskeletonを同一フォルダに格納してください。



シェイプキーをインポートにチェック
先にskeletonをインポートする方法の場合は、選択したアーマチュアを使用にチェック

シェイプキーと頂点グループが含まれていれば成功です。
何も編集しないでエクスポートします。

1.3.meshをエクスポート

メッシュを選択した状態でエクスポートします。



シェイプキーをエクスポートにチェック

XMLConverterでxmlに変換するとfake_pose1, fake_pose2, ..., fake_pose5を確認できます。


2.フェイクポーズの適用

エクスポートしたmeshをMODに追加後、キャラクターエディター画面でエクスポートしたbod2にfake_pose1等が含まれます。
最後にFCSでbod2を開いてfake_pose1等に(他のbod2と重複しないように)任意の整数を設定するとハッシュ値が衝突しなくなり、バグを回避できます。

エディターのxmlにfake_pose1等を追加しても構いませんが、スライダーは100単位で調整するので扱いにくいです。
容姿がランダムなNPCのバグについて
容姿がランダムなNPCもバグがあり、morph numのパターンが機能していません。

複製後のmesh名が以下の命名規則になっていますが、mesh名が重複した場合、ポーズの値を抽選しないでデフォルトである0になります。
  • {RACEのStringID}_{faces weirdnessを10倍して端数切捨て}_{MaleまたはFemale}{morph index}
※morph indexは、パターン番号(0~morph num-1)。キャラクター生成時にランダムに決定。


本来であれば複製済みのmeshを割り当てて頂点アニメーションを適用するはずが、ポーズが全て0の場合は、ポーズなしmesh(バニラのスケルトン等)と同じ扱いになり、頂点アニメーションが適用されません。


回避策
RACEのmorph numを引き上げます。
ただし、meshの数が肥大化するのでメモリ消費量が多くなります。


RE_Kenshi利用時の注意点
RE_Kenshiの機能に乱数バグ修正がありますが、現在(v0.2.14)の実装は、決定論的な乱数を破壊し、別のバグが発生します。
(言い換えれば、bar squadsは決定論的な乱数を使っています)

容姿がランダムなNPCのポーズ(シェイプキー)は、決定論的な乱数になるようにmesh名をシードにしているので、キャラクターをロードするたびに変化してしまいます。