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

装備のBBP対応 - (2013/12/05 (木) 03:02:50) のソース

*BBP職人養成所 ちびくま練習ちう てへぺろ(。・ω・。)
**乳揺れさせよう!
Oblivionの時はBBBと言っていた乳揺れですが、SkyrimではBBPと言うのですね。名称はともかく、ゲーム中で動き回る女性の胸が揺れるのは多くの男性をわくわくさせます。でも残念ながらバニラの状態では決して揺れることはありません。乳揺れするために必要な条件は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化の大まかな流れ
- 環境整備&br()作業用フォルダの作成。ツール類のインストール、改造。
- メッシュファイル(_0.nifと_1.nif)の加工&br()胸のボーンの移植。Blender 2.49bでインポートできるように加工…NifSkopeでの作業
- _0.nifメッシュの胸にウエイトをつける&br()Blender 2.49bでインポート。ボーンウエイトコピーでウエイト付け。ウエイトの修正。メッシュの修正。_0.nifメッシュファイルをエクスポート…Blender 2.49bでの作業
- _1.nifメッシュの作成&br()Blender 2.6上で_0.nif体型を_1.nif体型にモーフィング。一端セーブ…Blender 2.6での作業&br()Blender 2.49bで_1.nifメッシュファイルをエクスポート…Blender 2.49bでの作業
- メッシュファイルのノード並び替え&br()PyFFI Nif Fix 0.3で、メッシュファイルのノード並び替え…PyFFI Nif Fix 0.3での作業
- メッシュファイル(_0.nifと_1.nif)をSkyrim仕様に加工&br()Blender 2.49bで読めるようにした加工で失われた属性を元に戻す…NifSkopeでの作業
- ゲームで検証

**BBP化マニュアル
***下準備
- 作業フォルダの作成&br()ドキュメントフォルダ下に「3Dwork」などといったわかりやすい名前でフォルダを作っておき、このフォルダ下にウエイト付けするファイルや、素体などの素材を入れておくようにします。パスに日本語が含まれてはいけません。NifSkopeで開けなくなります。フォルダ構成ですが、Blenderのファイル選択画面はちょっと変わってます。親フォルダに移動するのが楽なので、参照するファイルは「3Dwork」直下に置いておくと探しやすいです。参照するファイルとして必要なのは、胸のボーンとウエイトを持った素体([[UNPB>http://www.nexusmods.com/skyrim/mods/37900/?]]など)、小さ目のjpgファイル(何でも可)、BBP検証用のkfファイルなど。
- Skyrimは「体重スライダ」で0体型から1体型まで変化させることができます。その仕組みのため0体型用と1体型用の二つのメッシュがセットで入っています。XXXXX_0.nifとXXXXX_1.nifがそれです。二つとも作業フォルダに入れておきます。
- [[ツール>http://www50.atwiki.jp/skyrim_mod/pages/19.html]]を参照してツール類(Blender 2.49b、Blender 2.6.x、PyFFI、NifSkope)をインストールします。Blender 2.49bはnifファイルのインポート・エクスポートに必要です。Blender 2.6.xは_0.nif体型を_1.nif体型にモーフィングするのに使います。Blenderの使い方は[[Blender>http://cg.xyamu.net/Blender/]]、[[2.49b以前のFAQ>http://blenderfaq.blender.jp/oldfaq]]などを参照してください。また、初期設定として起動時のカメラや照明、キューブの削除と初期設定の保存などもしておきます。また、環境設定は上のバー(「i」という字が見える)の下の境にカーソルを持って来てカーソル形状が上下矢印になったら左ドラッグでパネルを引き出すことができます。
- PyFFI Nif Fix 0.3(Blenderで出力後のNifをある程度までSkyrim用に自動編集するPytonスクリプト。[[ツール>http://www50.atwiki.jp/skyrim_mod/pages/19.html]]参照)はPython 3、PyFFI py3kが必要で、Blender 2.49bの環境(Python 2.6.x)とぶつかるので、私は別パソコンに構築しました。一つのPCに共存するには[[「複数バージョンのPythonをインストールする」>http://blog.livedoor.jp/gab_km/archives/1273488.html]]といった工夫が必要です。
- PyFFI Nif Fix 0.3の改造&br()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の改造&br()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で開く&br()XXXXX_0.nifをXXXXX_0_Original.nifにリネームし、NifSkopeで開きます。さらに[[UNPB>http://www.nexusmods.com/skyrim/mods/37900/?]]のnifもNifSkopeで開いておきます。
- おっぱいボーンをコピー&br()UNPBの方から「NPC L Breast」と「NPC R Breast」をブロックコピー(Ctrl-C)して、コピー先のルート(Block Listの一番上)にブロックペースト(Ctrl-V)します。
#ref(Skyrim-BBP化マニュアル・乳ボーンコピー.jpg)

- コピーされたボーンは名前が変わってしまうので、元ファイルのボーンの名前をコピー(ボーンを選択し、Block Detailsのstringを右クリック>Edit String Index選択>文字BOXの中の文字列を全選択、コピー)して…
#ref(Skyrim-BBP化マニュアル・ボーン元から名前をコピーして.jpg)
#ref(Skyrim-BBP化マニュアル・元ボーンから名前コピー.jpg)

- ペーストした先の新ボーンを、先と同様に(ボーンを選択し、Block Detailsのstringを右クリック>Edit String Index選択>文字BOXの中の文字列を全選択)してペーストして、同じ名前に書き換えます。
#ref(Skyrim-BBP化マニュアル・新ボーンに名前貼り付け.jpg)

- NiHeaderのユーザーバージョンの変更をします。まず、表示モードを現在のツリーモードからリストモードに変更します。
#ref(Skyrim-BBP化マニュアル・リストモード.jpg)&br()そして、UserVersion 12 →11、UserVersion2 83 →34 と書き換えます。
#ref(Skyrim-BBP化マニュアル・UserVersion12-83→11-34.jpg)&br()書き換えたら、次の作業のためにツリーモードに戻しておきます。

- XXXXX_0_BoneAdd.nifとしてセーブし、XXXXX_0_BoneAdd.nifを再ロードします。すると、ユーザーバージョンに合わない余分な項目がルートからはじき出されるので、それらをCtrl+Delでブロック削除します。
#ref(Skyrim-BBP化マニュアル・余分を削除.jpg)&br()削除したら上書きセーブします。

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

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

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

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