2015/02/21

Nifにコリジョンを追加する方法 2015年版


自分でモデリングしたものにコリジョンを追加する方法。
※静的オブジェクトや武器などウェイトをつけないものに関する記事なので注意。



例としてこの木にコリジョンを追加する。コリジョンがないのでこのままゲームに持ち込むとすり抜ける。
ChunkMergeというものをまずダウンロードしておく。バージョンはv0.1.55が多分一番新しい。
これはひとまず置いておく。先にBlenderでコリジョンのモデルを作成する。

※ChunkMerge・・・Skyrimでコリジョンを追加するツール


この木をBlenderで読み込む。


基本的に木は身長より高い部分には触れないので根本の部分のコリジョンだけで十分である。
というわけで下の方の幹を選択してShift+Dで複製する。その後キーボードのPを押して独立させる。
※コリジョンの形は物によってそれぞれなので適時形を考えて作ること。大体は大きすぎず全体が覆われていれば良い。


独立させるとこうなる。元のモデルのポリゴン数と同じなのでもう少しポリゴンを減らしたい。コリジョンは輪郭が分かる程度のポリゴン数でいい。そういう時はDecimateのModifierを使う。


Collapseを選ぶ。Triangulateにチェックを入れる。そうすると勝手に三角形の面にしてくれる。スライダーを動かすとポリゴンが減る。あんまりやり過ぎるとひどいことになるので適当な具合をさぐっていく。Applyで確定する。テクスチャがちょっと変になったりするけど問題ない。このコリジョンのメッシュだけをエクスポートする。フォーマットはSkyrimで問題ない。

コリジョンメッシュが完成したのでChunkMergeでこのNifファイルをオリジナルのNifに合体させる。






一番最初に起動するといくつか設定をする画面が出る。最初はNif.xmlの場所を聞かれる。これは
NifskopeのEXEがあるフォルダ周辺にある。


次にTempleteというコリジョンの元になるNifを選択する必要がある。これはここのサイトを見て自分で作るか、めんどくさい人は僕の共有ドライブからダウンロードする。共有ドライブのものは多分汎用性があると思う。特にいじる必要はないはず。

最後にTESV.exeの場所を聞かれるので指定する。


これで設定が終わってChunkMergeが使えるようになる。
Nif-File(Skyrim)からコリジョンを追加したいオリジナルのNifを選択し、Collision-FileからオリジナルのNif用のコリジョンのNifを選択し、Template(Skyrim)からさっきのTemplateのNifを選択する。
下のCollision fallback Mechにチェックを入れる。その隣のMaterialはSingleのタブから材質を選ぶ。衝突時の音とかの基準になる。
これらが完了したらConvertをクリック。Nif converted successfullyと出たら成功。

元のNifを確認してみると、 bhkCollisionObjectというNodeが追加されているはず。ない場合どこかで失敗している。失敗した時は手順を再確認してやり直そう。最後にBSXFlagsを追加する。

※BSXFlags・・・コリジョンとかエディターマーカーのような特殊なNodeを有効にするためにつけておく必要があるもの。


全ての親のNodeからNode>Attach Extra Dataを選択する。その中にBSXFlagsがある。


Block Detailsのタブから旗のアイコンをクリックしてEnable Collisionにチェックを入れてAccept。これでBSXFlagsの追加は完了。
このBSXFlagsはBlock ListのタブにあるValueが必ずBSXになっていないといけない。僕の書いた方法だと自動的にそうしてくれる。効率主義の人はこのBSXFlagsをコピペして追加しようとすると思う。だけどそうするとコピペは成功するがValueがBSXじゃないBSXFlagsが完成する。これを修正するのは新しく追加するより面倒くさいので大人しく1つずつやること。

ゲームに持ち込んで当たり判定や質感の設定が正しいかテストしてみよう。このような流れでコリジョンの追加ができる。
Skyrim/Adding Collision Mesh using ChunkMerge
ここにあるのは古いBlenderを使わないといけない時代のものだから手順が同じではないが、英語でもっと詳しく色々書いてある。要チェック。


質問や間違っている部分があったらコメントで気軽に書いてほしい。

No comments:

Post a Comment

匿名希望の方はAnonymousを選択してください。