「装備のBBP対応」の編集履歴(バックアップ)一覧に戻る

装備のBBP対応 - (2013/12/05 (木) 23:34:15) の編集履歴(バックアップ)


BBP職人養成所 ちびくま練習ちう てへぺろ(。・ω・。)

乳揺れさせよう!

Oblivionの時はBBBと言っていた乳揺れですが、SkyrimではBBPと言うのですね。名称はともかく、ゲーム中で動き回る女性の胸が揺れるのは多くの男性をわくわくさせます。でも残念ながらバニラの状態では決して揺れることはありません。乳揺れするために必要な条件は3つ。

  1. 胸のボーンを含むスケルトン
  2. 胸のボーンに追従するウエイトを持つメッシュ
  3. 胸のボーンを動かす機構

これらはバニラの状態では揃っていないのです。BBPを実現するにはこの3つを導入する必要があります。

胸のボーンを持つスケルトンは「BBP対応」と言われるスケルトンで「XP32 Maximum Skeleton」が有名です。
胸のボーンに追従するウエイトを持つメッシュも「BBP対応」とされるものです。「ウエイト」とは、メッシュの特定の部位が、ボーンの動きに追従して動くようにあらかじめメッシュの各座標に設定しておいた数値で、BBPの場合だと、胸のボーンが上がるとそれに追従して胸のメッシュが上がるようにウエイトが設定してあります。
ボーンを動かす機構は「kf」ファイルと呼ばれる、ボーンの動きをアニメーションとして定義したファイルです。kfファイルは「立ちモーション」、「走りモーション」など一つの「モーション」に対応する「アニメーション」が一つ記述されていて、たとえば「立ちモーション」なら、立っている状態のボーンそれぞれの状態を時間経過に沿ってアニメーションとして記述しています。バニラでは胸のボーンはありませんので、バニラのkfファイルにも胸のボーンの記述は入っていません。そのため、kfファイルをBBP対応に置き換えたモーションの時だけ乳揺れすることになります。……これまでは…

この原稿を執筆中(2013年11月)に大きな出来事がありました。「HDT Support 」というSKSEプラグインの出現です。

実は、ボーンを動かす機構にはkfファイル以外にもう一つあります。HAVOKという物理シミュレーション機構です。ボーンがコリジョン(衝突)や慣性など物理法則に従って動く機構です。死体になって崖から落ちるとき、岩にぶつかってはね飛ばされたりとてもリアルな挙動をしますが、あれが物理シミュレーションによる効果です。通常、ボーン自体にその定義を仕込んでおき、ゲーム中でその効果が現れるのですが、HDT SupportはHAVOKの定義がされていないボーンでも「後付けで」定義をして、ゲーム中で物理シミュレーションさせてしまいます。

つまりHDT Support環境では、BBP対応ボーンとBBP対応装備が導入されてさえいれば、kfファイルはバニラのままで動作に合わせて自然に乳揺れするのです! \(^o^)/

BBP対応ボーンはXP32を導入すれば済みます。
問題は、お気に入りの装備がBBP対応でない場合です。誰かがそのメッシュに、胸のボーンに対応したウエイトをつけてやらねばなりません。

メッシュにウエイトをつける作業はフリーで手に入るツールのみでできます。手順はオブリビオンの時に比べるとちょっと難しくなりましたが、手順を踏めば機械作業でできます。
さあ、これを読んでいるあなた。今こそBBP職人として技を磨き、自分とみんなを喜ばせましょう。

BBP化の大まかな流れ

  • 環境整備
    作業用フォルダの作成。ツール類のインストール、改造。
  • メッシュファイル(_0.nifと_1.nif)の加工
    胸のボーンの移植。Blender 2.49bでインポートできるように加工…NifSkopeでの作業
  • _0.nifメッシュの胸にウエイトをつける
    Blender 2.49bでインポート。ボーンウエイトコピーでウエイト付け。ウエイトの修正。メッシュの修正。_0.nifメッシュファイルをエクスポート…Blender 2.49bでの作業
  • _1.nifメッシュの作成
    Blender 2.6上で_0.nif体型を_1.nif体型にモーフィング。一端セーブ…Blender 2.6での作業
    Blender 2.49bで_1.nifメッシュファイルをエクスポート…Blender 2.49bでの作業
  • メッシュファイルのノード並び替え
    PyFFI Nif Fix 0.3で、メッシュファイルのノード並び替え…PyFFI Nif Fix 0.3での作業
  • メッシュファイル(_0.nifと_1.nif)をSkyrim仕様に加工
    Blender 2.49bで読めるようにした加工で失われた属性を元に戻す…NifSkopeでの作業
  • ゲームで検証

BBP化マニュアル

ここでは、BBP化するMODとして「UNP Female Armors - UNP Armors version 2_1」を例に説明しています。

下準備

  • 作業フォルダの作成
    ドキュメントフォルダ下に「3Dwork」などといったわかりやすい名前でフォルダを作っておき、このフォルダ下にウエイト付けするファイルや、素体などの素材を入れておくようにします。パスに日本語が含まれてはいけません。NifSkopeで開けなくなります。フォルダ構成ですが、Blenderのファイル選択画面はちょっと変わってます。親フォルダに移動するのが楽なので、参照するファイルは「3Dwork」に適当なフォルダを作成して置いておくと探しやすいです。参照するファイルとして必要なのは、胸のボーンとウエイトを持った素体(UNPBなど)、小さ目のjpgファイル(何でも可)、BBP検証用のkfファイルなど。
  • Skyrimは「体重スライダ」で0体型から1体型まで変化させることができます。その仕組みのため0体型用と1体型用の二つのメッシュがセットで入っています。XXXXX_0.nifとXXXXX_1.nifがそれです。二つとも作業フォルダに入れておきます。
  • ツールを参照してツール類(Blender 2.49b、Blender 2.6.x、PyFFI、NifSkope)をインストールします。Blender 2.49bはnifファイルのインポート・エクスポートに必要です。Blender 2.6.xは_0.nif体型を_1.nif体型にモーフィングするのに使います。Blenderの使い方はBlender2.49b以前のFAQなどを参照してください。また、初期設定として起動時のカメラや照明、キューブの削除と初期設定の保存などもしておきます。また、環境設定は上のバー(「i」という字が見える)の下の境にカーソルを持って来てカーソル形状が上下矢印になったら左ドラッグでパネルを引き出すことができます。
  • PyFFI Nif Fix 0.3(Blenderで出力後のNifをある程度までSkyrim用に自動編集するPytonスクリプト。ツール参照)はPython 3、PyFFI py3kが必要で、Blender 2.49bの環境(Python 2.6.x)とぶつかるので、私は別パソコンに構築しました。一つのPCに共存するには「複数バージョンのPythonをインストールする」といった工夫が必要です。
  • PyFFI Nif Fix 0.3の改造
    PyFFI Nif Fix 0.3は自動的にBSLightingShaderPropertyとNiAlphaPropertyを追加しますが、BBP化だとこれらはオリジナルから移植するのでこの処理は不要です。数多くBBP化する場合少しでも手間を減らしたいので、PyFFI Nif Fix 0.3.pyをエディタで開き、259行目「#アルファの追加」~281行目「#ファイル書き出し」の前の行までを削除し、「PyFFI Nif Fix 0.3 for BBP.py」として保存します。
  • NifScriptの改造
    NifScriptをインストールしたら「Blender 2.49bインストールフォルダ\.blender\scripts\bpymodules」にある「nif_common.py」の870行辺りのmin_val = 4, max_val = 18 を min_val = 4, max_val = 30とmax_valを大きな値に書き換えます。

_0.nifの下準備(おっぱいボーン付き素材の作成)

  • オリジナルの保存、NifSkopeで開く
    XXXXX_0.nifをXXXXX_0_Original.nifという名前で複製し、NifSkopeで開きます。さらにおっぱいボーンを持つnifファイル(UNPBなど)のnifも同様にfemalebody_0_Original.nifという名前で複製し、NifSkopeで開いておきます。
  • おっぱいボーンをコピー
    UNPBの方から「NPC L Breast」と「NPC R Breast」をブロックコピー(Ctrl-C)して、コピー先のルート(Block Listの一番上)にブロックペースト(Ctrl-V)します。

  • コピーされたボーンは名前が変わってしまうので、元ファイルのボーンの名前をコピー(ボーンを選択し、Block Detailsのstringを右クリック>Edit String Index選択>文字BOXの中の文字列を全選択、コピー)して…

  • ペーストした先の新ボーンを、先と同様に(ボーンを選択し、Block Detailsのstringを右クリック>Edit String Index選択>文字BOXの中の文字列を全選択)してペーストして、同じ名前に書き換えます。

  • 両胸のボーンがコピーできたら次はNiHeaderのユーザーバージョンの変更をします。まず、表示モードを現在のツリーモードからリストモードに変更します。

そして、UserVersion 12 →11、UserVersion2 83 →34 と書き換えます。

書き換えたら、次の作業のためにツリーモードに戻しておきます。

  • XXXXX_0_BoneAdd.nifとしてセーブし、XXXXX_0_BoneAdd.nifを再ロードします。すると、ユーザーバージョンに合わない余分な項目がルートからはじき出されるので、それらをCtrl+Delでブロック削除します。

削除したら上書きセーブします。

  • このあとBlenderでこのファイルをインポートしますが、そのときエラーがでて読み込めない場合は、Blenderのログファイルを読み、指摘されたNifツリーをブロック消去します。あとで戻す必要があるので削除した項目は覚えておきます。

_1.nifの下準備

  • おっぱいボーンをコピーしない以外は上記「_0.nifの下準備(おっぱいボーン付き素材の作成)」と同様です。箇条書きにすると
    XXXXX_1.nifをXXXXX_1_Original.nifにリネーム。NifSkopeで開く
    NiHeaderの次の項目の値を変更(UserVersion 12 →11、UserVersion2 83 →34)
    XXXXX_1_BlenderLoadable.nifとしてセーブ、再ロード
    余分を削除、セーブ

ウエイトコピー元の下準備

  • UNPBのfemalebody_0.nifを、上記「_1.nifの下準備」同様にしてfemalebody_0_BlenderLoadable.nifを作成します。

Blenderへインポート、ウエイトコピー、_0.nifエクスポート

Blender 2.49bでの作業です。Blenderを開いたら画面上に何も無いことを確認してください。キューブやカメラなどがある場合は「a」キーを押して全部選択したのち「x」キーで削除します。「a」キーは押すたびに全選択⇔全選択解除を繰り返します。現在のモードは「Object Mode」になっています。
  • レイヤー1に_0.nifファイルをインポートします。「View Select Object」という文字が並んだバーの真ん中あたりに「田田田田田」という感じに四角いボタンが2列10個並んでいます。一番左上のボタンを押すとレイヤー1に切り替わります。ショートカットキーは「1」キー(テンキーではない方)。上のバーの「File」メニューからImport>NetImmerse/Gamebryo(.nif & .kf & .egm)をクリック。ファイル選択画面になるので、XXXXX_0.nifを選択、Import NIFボタンを押します。次にインポートオプションが出るので「Restore Default Settings」ボタンを押した後OKボタンを押します。ファイルが取り込まれ、画面にオブジェクトが表示されます。もし、この時点でエラーが出た場合はエラーコンソール(Blenderというタイトルの付いたDOS窓のようなウインドウ)を参照してエラーの原因を探します。ほとんどの場合、Nifscriptsが読めない要素が入っているためで、その要素をNifSkopeで取り除いてから再度インポートします。
  • ボーン削除と親クリアをします。Blenderに何かをインポートしたら、必ずボーン削除、親クリアをする必要があります。
    ボーン削除は、横に伸びた棒のどれかを右クリック、選択されてピンクになったら「x」キーで削除します。

「a」キーを押して全て選択して、「Alt-P」キーを押して親をクリアします。

  • レイヤー2にXXXXX_1_BlenderLoadable.nifをインポートし、ボーン削除、親クリアします。レイヤー2への切り替えは、「田田田田田」の左上2番目のボタン、または「2」キー(テンキーじゃない方)です。

  • レイヤー3にウエイトのコピー元(UNPBのfemalebody_0_BlenderLoadable.nif)をインポートし、ボーン削除、親クリアします。インポートしたメッシュがウエイトコピー先のメッシュと位置が合わない時は、メッシュモードで位置合わせをします。UNPBのメッシュはUNPと位置が違うので、位置合わせが必要になります。
    位置合わせをするには、まずレイヤー3を選択します。視点を変更するにはマウスのホイールボタンを押しながら3D画面をドラッグします。ホイールの回転で視点の拡大縮小ができます。Shiftキーを押しながらホイールボタンでドラッグすると視点は平行移動します。Ctrlキーを押しながらテンキーの「1」を押すと正面からの視点になります。反応しない場合はマウスカーソルが3D画面上にあるかを確認してください。見やすい位置にしたら右クリックでオブジェクト、この場合だと女体を選択します。輪郭がピンクになり、選択されたことが分かります。
    位置合わせする相手を表示するため、Shiftキーを押しながらレイヤー1を選択します。するとレイヤー3とレイヤー1が同時に表示されます。次に、画面の下の方の「View Select Mesh」のメニューが並んだバーの「Object Mode」を「Edit Mode」に変更します。Tabキーを押してもいいです。Tabキーの場合はもう一度押すと直前のモードへ戻ります。「Edit Mode」になると、選択されたオブジェクトが黄色い点と線の網で表示されます。この状態では黄色い点が選択された頂点、ピンクが選択されていない頂点です。頂点を一つだけ選択するには右クリックを使います。全ての頂点を選択するには「a」キーを使います。「a」キーは何度も押すと全選択⇔全選択解除を繰り返します。キーを押しても反応がない場合はマウスカーソルが画面内にあるか、漢字モードなっていないか確認します
    Edit Modeで移動したいメッシュの頂点を全て選択して、中央あたりに出た赤い矢印と青い矢印をマウス左ボタンでドラッグして位置を合わせます。直前の操作を取り消すには「Ctrl+z」でアンドゥできます。間違って何かのキーを押してコマンドに入ってしまったら「esc」キーでキャンセルできます。
    ウエイトのコピーが目的であれば、だいたいの位置が合っていれば十分です。
目安箱バナー