--

--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告:  トラックバック(-)  コメント(-) 

    2009

04.09

Blender/Creature Meshes 101

コメント、疑問、バグの報告はdiscussionページにお願いします。
今回の目的は、このモデリング素材をある特定の法則で振舞い、動くクリーチャーとしてOblivionに登場させることです。そのためにBlenderと、いくつかのフリーツールを使用します。
このモデルは1時間半で作った間に合わせのものでしかありません。本チュートリアルでもっとちゃんとしたモデルをOblivionに登場させることが出来るようになります。
メモ:
  • こんな感じでリストになっているものは、作業手順です。
イタリックになっているのは、何らかの到達点を示しています。
太字は重要なポイントです。

目次
1 煽り文、もしくは序文
2 準備
2.1 必須:基本
2.2 必須:ツール
2.3 必須:BSAの解凍
2.4 必須:Blenderの勉強
3 改造する既存のクリーチャーを選び、準備する
3.1 クリーンなスケルトンを作る
4 Blenderでの作業
4.1 export scriptの設定
4.2 モデル素材をスキニングする
4.2.1 weight付加されていない頂点をデバッグする:視覚で探す
4.2.2 weight付加されていない頂点をデバッグする:Vertex Groupから探す
4.3 モデル素材にUVマッピングする
5 組み立てる
6 CSでの作業:ありあわせのMODを繕う
6.1 Oblivionに読み込む:もうちょっと我慢してください。
7 NifSkopeでの追加作業:コリジョンボックス
8 テクスチャの間に合わせ
9 ここから先の話

1 煽り文、もしくは序文

Oblivionをプレイしていた時、私はOblivionにもっとクリーチャーがいたら、もっと動物がいたらなぁと思っていました。理由はご存じのように、クマとSlaughterfish、それから8種類の動物だけではこの広い世界にはとても足りないからです。
そこで私はCuteUnit氏の水中生物を増やそうという呼び掛けに応じ、Oblivionにおけるクリーチャーの作成方法を勉強しようとしました。約60時間後、ツールとの格闘は終わらず、溜まるフラストレーションに呻き歯をきしませ、フォーラムの皆さんに苦労をかけ、どうにか初めてのモデルをゲームに登場させることができました。
ヒント No.1
できる限り、テストモデルを使って全体の行程を試してください。その行程がうまく行くかどうかを試してください。さもないといざ本番で壁にぶちあたったとき、そのモデルに何十時間も費してから成果なしということになりかねません。
ごく短時間で数多くを学ぶことが出来はしましたが、「これをクリック、次はあれをクリック」と導いてくれる手引きが欲しかったものです。
あらかじめ二つほど言わせてください。まず、全てを学ぶのは決して容易ではなく、すぐに成功に辿りつけるわけではないこと。時間もプレイも必要になります。二つめは、NIF、Mesh、Materialについても学ぼうとするのではれば、それはそれで少なからぬ苦難が待ち受けているだろう、ということです。教えてくれるチュートリアルはありませんから、しつこく、粘り強くやっていかなくてはいけません。
無論、私は巨人の肩に乗っかっているわけです。私自身が独力で作り上げた部分はほとんどありません。

2 準備

いくつかのプログラムをダウンロードしたり、解凍してやる必要があります。ああ、そんなことよりずっと複雑で学ばなくてはならないプログラムもあります。

2.1 必須:基本

zipファイルの扱い方、Windows Explorerの使い方(ディレクトリへ移動したり、ファイルを探すとかいう話です)、プログラムを導入し起動する方法、を知る必要があります。 もしこれらの話があなたの手に余るというのであれば、本チュートリアルはあなたに合わないということです。

2.2 必須:ツール

以下をダウンロードし、それぞれ導入してください。 BSAからのファイル抽出に使用するので、そういうツール[外部]も必要です。テクスチャ関係の作業に使いますので、DDSファイルを扱うことのできるグラフィック編集プログラムも必要です。Photoshopをお持ちでないならGIMP[外部]とGIMP用のDDS export plugin[外部]も使いましょう。そうでないなら、Photoshop用のDDSプラグインをNVidia[外部]から入手してください。
あ、それから、目に入ったリンクを片っぱしからクリックする癖はつけない方がいいですよ。危ないですから。

2.3 必須:BSAの解凍

オリジナルのファイルを改変していくので、まずそのオリジナルを解凍してきましょう。オリジナルはBSAと呼ばれる独自のアーカイブに入っています。ZIPではなく他のもので圧縮された、巨大なZIPみたいなものだと思ってください。 筆者はドイツ人でBSA Commanderを使用しているので、私の場合は解凍されたファイルがC:\programme\bsacmd\outにあります。あなたの場合はどこか別の場所でしょうが、本チュートリアルを進めるにあたり、c:\BSAあたりにしておきましょう。以降、筆者はそのディレクトリを「解凍されたBSAのディレクトリ」と表現していくことにします。

2.4 必須:Blenderの勉強

ヒント
どんなプログラムにも言えることですが、Blenderは説明を聞いただけで学べるものではありません。マニュアルを読みましょう。今すぐにです。どうぞ。待ってますから。ドイツ語版はちょっと能率的に出来ています。ドイツ語がわかるなら、英語版よりドイツ語版を使った方がいいかもしれません。
まず、使用するモデラーの基本を学びましょう。ドキュメントはプログラムと同じくフリーですが、物を選択したり動かしたり、メッシュを編集すなどの動作を学習するのに、多少なりとも時間を要するでしょう。憶えなくてはならないのは、vertex、mesh、object…といった単語です。それだけ憶えれば、本チュートリアルは立派にこなすことができます。
こちら[外部]がBlenderのより新しいドキュメントです。
上のチュートリアルに従えば、いいですか、ちゃんと従えば、Blender、マウス、キーボードを使って当面のモデリング素材部分を作成することができます。

3 改造する既存のクリーチャーを選び、準備する

ヒント
shape-key-animationのついたモデルは使用しないでください。NifSkopeでモーションを再生する時に意味がわかると思います。そういったモデルは、NiGeomMorpherTransformerと呼ばれる特殊なノードを持っています。気をつけてください。
ここに書かれている手順には制限があります。私たちが作るクリーチャーのモーションを加工することはできない、という点です。既存のクリーチャーの「外皮」を差し替えることしかできないのです。既存のモーションだけでやっていかなくてはいけませんが、それらのパーツを組み合わせることができます。つまり、新クリーチャーのイメージに合うモデルを探す必要があるのです。特に、イメージ通りに動くやつです。探してみましょう。
  • 先程作った、解凍されたBSAのディレクトリを開いてみましょう。meshesからcreaturesディレクトリに移動し、sheepディレクトリを開きます。
  • そのディレクトリにあるSkeleton.nifをダブルクリックします。緑色の線をドラッグすると(レンダーウィンドウ)、モデルを回転させることができます。今見えているのは独立したボーンからなるクリーチャーの「骨格」です。
  • メニューからRender→Draw Havokをチェックすると箱型のコリジョン(場合によっては楕円です)が見え、暗い緑の影で描画されます。
  • NifSkopeを閉じ、今度はsheep.nifをダブルクリックします。少し回転させてみてください。それがクリーチャーのモデルです。
私たちがやろうとしているのは、このモデルを自作のものと差し替えることです。Oblivion\Dataディレクトリにsheepディレクトリを複製して別の名前にリネームし、ここで作業していきます。
  • Oblivion\Data\Meshes\Creatures\にsheepディレクトリのコピーを作成します。最初にMeshes\Creatures\ディレクトリを作らないといけないかもしれません。
  • Oblivionに既にあるsheepを上書きするのは本意ではないので、「oursheep」とでもリネームしましょう。
  • 今すぐ.nifファイルのバックアップを取っておいてください。必須ではありませんが、役に立つこともあるでしょう。.nifファイルを選択し、Ctrl+C、Ctrl+Vとタイプしましょう。新しいSkeleton.nifで作業を始めるというなら、それは賢明な判断です。
ここが作業用ディレクトリです。ここでファイルを改変していきます。

3.1 クリーンなスケルトンを作る

後々、メッシュをスケルトンに「リギング」する作業を行いますが、そのままではBlenderにインポートできません。そこで、BlenderにインポートできるSkeleton.nifを作る必要が出て来ます。
  • Skeleton.nifをダブルクリックしてください。Skeleton.nifを読み込んだ状態でNifSkopeが開きます。
  • メニューからSpells→Block→Remove by IDを選択します。
  • 「^BS|^NiBS|^bhk|^hk|^NiTransform」と入力します(最後の部分を書き足してください)。
  • OKをクリックします。
  • Block List Windowで「Root Node」、あるいは「0 NiNode Scene Root」を選択します。
  • NifSkopeを開いたままにしておいてください。
今、私たちはHavokデータを削除してしまいました。ああっ!でもこのファイルは後々ゲームで使う予定はありませんから、その点は安心してください。問題は、Blenderはボーンのみのスケルトンが好きではなく、関連づけられたスキンがなくてはいけないということです。
つまり、今やらなくてはならないのは、適切なスキンを.nifファイルにコピーすることです。.nifファイルはNiTriShapeかNiStripShapeという名前でそのままのメッシュを保有しています。そのメッシュを見つけ、クリンナップしたスケルトンに必要なメッシュをコピーしていきます。
  • NifSkopeでFile→New Windowを選択します。
  • 新規ウィンドウでLoadをクリックし、sheep.nifをロードします。
  • Block Listからすぐ横の+をクリックして0 NiNodeを開きます。
  • その中にNiTriShape(場合によってはNiStripShapes)があります。
  • これを右クリックし、Block→Copy Branchを選択します。
  • Skeleton.nifのウィンドウに戻り、「0 NiNode Scene Root」を右クリックしてBlock→Paste Branchを選択します。
  • ペーストしたノードの番号を憶えておいてください。今回の例では90です。
ヒント
NifSkopeにおける「Array」は、リストされているアイテムの数と、そのアイテムが持つIDで決定されます。「Children」の上を見ると、「Num Children」という名前のプロパティがあるのがわかると思います。
これはNiTriShapeが一つだけなのでここを変更する必要はありません。もし二つ、あるいは三つのNiTriShapeがある場合、対応する数値を増やしてChildrenノードを右クリックし、Array→Updateを選択する必要があります。他のArrayについてもほぼ同じです。
次のステップでは、メッシュを「0 NiNode Scene Root」の子ノードにしていきます。メッシュはまだScene Rootツリーの外側にあるので、中に入れて行きます。作業は以下の通りです。
  • Scene Rootノードを選択します。
  • 「Block Details」が表示されていることを確認してください。もし表示されていなければ、F2を押します。
  • 下へスクロールしていくと、「Num Children」とそのすぐ下の「Children」が見えます。
  • Num ChildrenのValueをダブルクリックし、数値を1増やします。(追加されるメッシュの数だけ増やします)
  • 「Children」を右クリックし、Array→Updateを選択します。
  • 「Children」の+をクリックして開きます。
  • 「None」をダブルクリックし、先程憶えた番号を入れます。今回の例では90でしたね。

Enterを入力すると、コピーしたメッシュがScene Rootの子ノードになりました!すると、sheepのメッシュがスケルトン上に正しく配置されているはずです。
最後に、
  • cleanskel.nifというファイル名で保存します。
デバッグ
インポート時にBlenderが無限ループしてしまう場合、.nifファイルのメッシュが壊れています。そうした場合、.objとして一端エクスポートし、再度インポートするとうまくいきます。そんな事態、起きないに越したことはないのですが。
ふう! クリンナップしたスケルトンを作るのは、ちょっとした手間でしたね。ですがいいお知らせです。これからやるのは、それぞれのクリーチャーにこの作業をあと一回することだけです。クリンナップしたスケルトンは、同じスケルトンをベースとする他のクリーチャーを作る時に再利用できます。
インポートしたらすぐにメッシュを削除するって言いましたっけ? おおっと。
では、ツールをBlenderに切り替えましょう。

4 Blenderでの作業

デバッグ
Surface Normalsが正しい方に面していないといけません。そうでないなら、不気味な事態に遭遇してしまいます。BlenderのShaded Viewで他より妙に暗いSurfaceがあったら、それは「ノーマル」ではないということです。それが「閉じた」モデルなら修正するのは簡単です。Spaceキーを押し、Edit→Normals→Recalculate outsideを選択していけば結構です。私の場合、おやっ?と思ったら、頻繁にこの作業をしています。手作業で頂点を増やし、手作業でポリゴンを増やしていく中で、Blenderではよくあることです。しかし修正は簡単です。
重複する頂点がないことを確認し(Spaceキー、Edit→Vertices→Remove Doubles)、たまたまモデルを突き抜ける線やモデルの内側に頂点がないことを確認してください。修正手順通りにやってもあるべき変化が見られない場合、たいてい原因はこれです:モデルが連続していない、あるいは重複する頂点がある、あるいは「閉じていない」Surfaceである。
さて、何するんでしたっけ?上でお話しした通り、Blenderでの動作を学ぶ必要があります。ボーンにスキンをあてがう、という新しい技術を使うことになります。二つめの目標はテクスチャでsheepを「塗って」いくことです。
将来的に、以下の作業を何度も反復していくことになります。たとえば、モーションがポリゴンを動かす時、モーションはポリゴンによって変わってきます。ひょっとしたら、ポリゴンを折り曲げた時、ポリゴン頂点が少なすぎることに気づくかもしれません。すると、新しくメッシュを切り、ループカットし、細分化したり移動させたりして頂点数を増やさなくてはいけなくなります。とはいえ、頂点の変更はUVマッピングが崩れてしまいますから、マッピングもしなおさなくてはいけません。二度、三度、あるいは四度と、テクスチャ作業に入る前の段階で幾度もチェックしておくのは大事なことなのです。それから、テクスチャ作業の前に、モーションもちゃんとチェックしておきましょう。
Oblivionに取り込みたいモデル素材のために必要なものがあります。
モデル素材を既存のものに、おおざっぱにフィットさせる必要がありますね。試しに犬のモデルを見てください。オリジナルは首を上げ、尾はまっすぐしています。犬が座る時、自分の尻尾を足に巻き付けているのを憶えていますか。もしモデル素材が正しくフィットさせていない尻尾を持っていた場合、尻尾は一瞬で消え、また出てきます。それ以外にも山ほど問題があることになりますから、私ならまた新しくやり直しますね。全体的なサイズやパーツの省略はConstruction Setで後々どうにでもなります。小さな犬を作りたいというなら、サイズを0.5にすればよいのです。尻尾を短くしたければ、尻尾の先端のボーンにリギングしなければよいだけのことです。
可能な限りシンプルなまま進めていくためには、Materialを一つだけ使うことです。二つ以上のMaterialを使うと、出力したNIFファイルに複数のメッシュを持つことになります。一つのメッシュに複数のテクスチャを持たせたい場合はそれでもかまいませんが、今はそういう予定ではありません。
他に必要になりそうな物は…これは私の苦い経験から出たものですが、私は、モデル素材は連続したポリゴンでなくてはいけないのだと完全に勘違いしていました。穴があってもいけなく、閉じていないエッジがあってもいけないのだと、モデル素材が持つ全てのエッジは他のエッジと繋がっていなくてはいけないのだと思っていました。

4.1 export scriptの設定

Blender NIF Export scriptは、今回必要な20.0.0.4ではなく、バージョン4.0.0.2、つまりMorrowind用nifファイルを出力するのに最適化されています。Oblivionでは.nifのバージョンは20.0.0.5です。バージョンが異なると、出力したnifファイルをそのまま使うことができず、既存のnifファイルとメッシュを差し替えて使わなくてはいけなくなってしまいます(訳注:本チュートリアルで使用されているのBlenderは2.41あたりのようです。2.48a等では色々と違うのでご注意ください)。
  • Blenderを開きます。
  • BlenderをScripts Windowにします。(左端のボタンです)
  • Scripts→System→Script Config Editorを開きます。
  • Exportの.nif(NetImmerse/Gamebryo(.nif & .kf)です)を選択し、nif versionを20.0.0.4にセットします
  • applyをクリックして適用します
  • ウィンドウを3D Viewに戻します。

4.2 モデル素材をスキニングする

準備は万全です。次の手順は以下の通りです。
  • Blenderは開いたままですね。
  • 山羊モデルを読み込んでください。
  • ZキーでViewport ShadingをWireframeに切り替えます。
  • メニューからFile→Import→NetImmerse/Gamebryoを選択します。
  • cleanskel.nifを選択します。

これで、NifSkopeで見ていたのと同じような光景がBlenderで見えていると思います。正面にsheepメッシュが見えますが、その中をよく見てください。スケルトンが見えるはずです。これから、そのスケルトンにメッシュをリギングしていきます。ちょっとBethesdaの作ったモデルを調べ、スタッフはどうやったのか見てみましょう。Object Modeにし、sheepメッシュを右クリックしてXキーで削除します。これが基本のスケルトンです。
  • sheepモデルを拡大縮小したり、移動させたり、回転させて適切な位置に持って来てください。正確な角度で回転させてください。(Ctrlを押しっぱなしで角度刻みに回転させられます)絶対にスケルトンの方を弄らないようにしてください!思いもよらない結果を招くかもしれません。
  • Ctrl+Aと打ち、スケーリングと位置を適用します。
  • F2を押して保存画面を開き、テンキーの+を押し、Enterを押します。(テンキー+を押すと、通し番号が付加されます。)
  • 山羊メッシュを右クリックし、次にShiftを押しながらCtrl+Pと打ち、「Armature」を選択、次に「Don't create vertex groups」を選択します。
これで、スケルトンに対してメッシュをペアレントすることができました。つまり、スケルトンを動かせば、それに応じてメッシュも動くようになったということです。いいですね!しかし、今私たちに必要なのはスケルトンに沿ってメッシュを動かすことではなく、メッシュの変形です。さて、どのメッシュのVertex(頂点)がどのボーンに追従するかを決めます。このプロセスはweight paintingと呼ばれます。メッシュの変形はYESとかNOののような値があるわけではなく、0~1の幅(0%~100%の幅とも言えます)の値を持ち、これを「weighted」と言います。この値は頂点が影響を受けるかどうかではなく、どのくらい影響を受けるかを決定します。むろん、値が0であれば全く影響を受けないわけです。
この作業がpaintingと呼ばれる理由ですが、まぁすぐにご自分で目にすることになります。
  • スケルトンを右クリックし、Pose Modeにします。
  • 次にメッシュを右クリックし、Weight Paint Modeにします。


モデルが全部青に変わり、Button Viewに新しいPaintパネルが出現したと思います。ちょっとそのパネルを見てみましょう。
(1)一番上のはスライダーです。下の5つのボタンは値が登録されたプリセットボタンです。おわかりと思いますが、これが頂点に割り振ることのできるWeightです。
(2)二段目のスライダーは不透明度を設定します。1にセットすれば特に気にする必要ありません。
(3)三段目のスライダーはサイズです。トリッキーなペインティングをしたい場合は、値を小さくするといいでしょう。
(4)WireはWireframeモデルを切り替えます。オン・オフはお好きにどうぞ。
ではペイントしていきましょう。今はまだウェイト設定に熱中する必要はありません。後々、あなたが作った自作モデルで同じことをできますから。
  • テンキーの3を押し、真横からの視点に移動します。
  • weight 0.5、opacity 1.0でWireframeを表示させます。
  • TABキーを押してEdit Modeに入ります。
  • 背骨にあるボーンの上にカーソルを移動させます(いいですか、背骨ですよ)。
  • またTABを押してWeight Paint Modeに戻ります。
  • その場で右クリックして下さい。
デバッグ
もしweight付けするボーンが多すぎたとか、間違ったボーンにweight付けしてしまったと気づいたら、vertex groupから頂点を削除する必要があります。Edit ModeでF9を押し、「Link and Materials」タブに、vertex groupを編集するボタンがあります。
これで、weightをペイントしたいボーンを選択することができました。
  • ボーンの近くの頂点から腹部にかけて「ペイント」してください。マウスの左ボタンは押したまま、ドラッグしてください。
頂点の周りの部分が緑色になるはずです。緑色はweight 0.5を示します。黄色が0.75、赤が1.0、暗い青が0で明るい青が0.25です。低いweightでペイントした頂点の隣りの頂点をペイントしたい場合、この間に合わせの方法ではバキバキした動きになってしまいますが。
  • 全ての頂点を、上記手順に従ってペイントします。
  • 腹部、胸部の小さなボーンにはweight付けしないでください。
ペイントはモデル素材の反対側にも「透け」ます。背骨(Spine)にとってはいいことですが、足(leg)にとっては好ましくありません。様々に回転させて見る必要が出てくるでしょう。Uキーで最後のストロークを取り消すことができます。むろん、反対側のweight付加が望ましくない場合、間違えて付加してしまった頂点をweight 0で上書きすることもできます。
デバッグ
NifSkopeでモデルの一部がScene Rootに伸びてしまっていたり(一般的には中心の「床」の上に、です)、OblivionやCSでポリゴンが爆発したような効果(おわかりですよね)が見られた場合、頂点をリギングし忘れています。全ての頂点は、少なくとも一つ以上のボーンにリギングされていなくてはいけません。 モデルのスケールや位置がNifSkopeで見た時やCSで見た時のモーションがおかしい場合、Blenderで.nifとしてエクスポートする前にスケール、位置情報を適用しなくてはいけません。Ctrl+Aを入力してください。
この作業は時間がかかるでしょう…頂点を一つも残さず、かつ一つの頂点に対して4つ以上のボーンからweight付加しないよう気をつけてください。本当に取り返しがつかなくなるわけではないので、失敗からたくさん学びましょう。たくさん試し、失敗しましょう。いつか笑える日が来るさ!
  • 保存します。私は「goatbones.blend」で保存します。新しい段階に入ります。

4.2.1 weight付加されていない頂点をデバッグする:視覚で探す

この段階でエクスポートし、NifSkopeで開いて見ることができるようになります。weight付加し忘れた頂点は、ウィンドウの地平に描画されます、NifSkopeではそんなに遠くないですね。ラッキーです。以下の画像には、weightペイントで4つエラーを起こしています。Materialを設定していないので見辛いかもしれません。

  • メニューからFile→Export→NetImmerse/Gamebryoを選択し、goatbones.nifとして出力します。
  • goatbones.nifをNifSkopeで開き、エラーがないかチェックします。
  • Blenderに戻ってエラーを修正します。エラーがなくなるまで続けます。
  • 修正したものを保存するのも忘れないでください。
まだこのモデルはCSで読み込むわけにはいきません。MaterialとUVマップのことを忘れています。

4.2.2 weight付加されていない頂点をデバッグする:Vertex Groupから探す

ヒント
一つのグループから頂点を完全に削除しようとした時、問題が生じました。ですから、この作業を行う前に必ず、バックアップを取っておいてください。グループから頂点を削除する前にweight 0になっていなくてはいけないのかもしれませんが、よくわかりません。(訳者註:訳者にもよくわかりません。)
本当は、weight付けし忘れた頂点をBlenderで見つける決定的な方法があるのです。さきほど述べたのは視覚的に発見する方法で、あとからNifSkopeで確認するというものでした。
メッシュをボーンに対してweight付けするということは、ある特定の名前(ボーンの名前)の下に、vertex groupとしてひとまとめにするということです。vertex groupは、weight paintすることによって自動的に作成されます。これらは別の用途にも利用できます。たとえば、何度も目のメッシュを選択し直したいというような時、目のためのvertex groupを作成することができます。
vertex groupはEditingボタン、「Link and Materials」パネルにあります。weight paintモードでは「ボーン」を選択することができますが、Edit Modeでは頂点を選択することができます。頂点はグループを選択した時、あるいは他のグループを選択したために選択が解除された時に自動的に選択されるわけではありません。そこで、このボタンがあるのです。
Edit Modeで、weight付加されていない頂点を探したい場合は以下のようにします。
  • 全ての選択を解除します。
  • 全vertex groupに対して、Selectボタンを押す。
  • ウィンドウタイプを3D Viewにし、Spaceキーを押してSelect→Inverse
これで完了です。この作業ではまず全ての頂点を選択し、vertex groupの選択を反転させたわけです。
  • まずヒントを読んでください。

4.3 モデル素材にUVマッピングする

「UV」とは、BlenderにおけるXYZ座標軸の、座標ようなものです。二次元の画像であるテクスチャファイル上の位置を指し示します。横をU軸、縦をV軸と呼び、モデル素材の頂点にある値を保存すれば、二次元の画像を三次元のメッシュに効果的に貼り付けることができます。これが画像を使ったテクスチャ作業の基本であり、Oblivionにおけるテクスチャ使用の唯一の方法です。Oblivionは、モデル素材にUVマッピングされていないと嫌がります。
つまり、モデル素材にUVマッピングをしなくてはいけません。
とりあえず:
間に合わせでやってみましょう。複数のMaterial IDやその他諸々を持つUVマップ作成は最後の一歩に残しておきます。少なくともこのモデル素材のUVマップをを完成させます。テクスチャまで準備してしまってからUVマッピングをまたやるのは苦痛でしかありませんから。
これは以前にも述べたテスト方法です。3D View pointウィンドウを分割し、新しく出来たウィンドウをUV/Image Editorモードにします。
  • まだ読んでいなければマニュアルを読みましょう:)
  • Object Modeでメッシュを選択します。
  • UV Face Select Modeに切り替えてください。全部の面(face)が選択されている必要があります。
  • UV Editorにマウスを移動させ、ボタンメニューからUVs→ArchiMap UV Projection Unwrapperを選択し、設定はそのまま。(そのままOKを押します。)
  • ボタンウィンドウメニューからUVs→Save UV Face Layout...、「Ob」をオフにしてOK、名前はgoatとでもしましょう。
この結果だけでは、ほとんど役に立たないUVマッピングですが、気にする必要ありません。今は。最後のステップで簡単なテクスチャファイル、goat.tgaを作成します。これをモデル素材に適用します
  • ボタンパネルでShadingを選択します。(もしくはF5を押します)
  • Materialタブで「Add New」をクリックします。
  • Textureタブで(右を見て下さい)add newをクリックします。
  • Map InputタブでUVをクリックします。
  • Textureボタンを選択します。(もしくはF6を押します)
  • texture typeをNoneからImageに変更します。参考画像[外部]
  • 新しく出現したImageタブでload imageをクリックし、goat.tgaを選択します。
  • goatbones.nifとしてエクスポートします。:メニューからFile→Export→NetImmerse/Gamebryoです。
  • 通常の保存作業も忘れないでください。
これで作業は終了です。
  • Blenderを閉じます。
デバッグ
モデル素材にUVマッピングをしないと、CSやOblivionではなんら結果が現れず、モデル素材はまったく表示されません。
終了です!
長く苦しい、長々とした手順でした。
UVマッピングについて役に立つ情報はこちら[外部]です。
さて、NifSkopeでの作業に移りましょう。

5 組み立てる

さて、スケルトンとメッシュを含む.nifを手に入れることができました。新しく作ったメッシュを使用するために、オリジナルのsheep.nifを改変していきましょう。ほとんどそこまで出来てる気がしません?行きますか?スケルトンは必要ありません。Blenderで作業していた時にsheepのメッシュが必要なかったのと同じです。ですが、今度は削除したり、コピーしたりするわけではないんです。
デバッグ
「infinite recursive link contruct detected.」というメッセージが出ますが、無視([X]を押す)してください。
もし、メッシュをペーストする時、failed to map parent link "NiNode|oursheep"というようなエラーメッセージが出たら、全ての頂点にweight付けできていないということです。weight paint作業に戻りましょう。
ペースト時にfailed to map parent link "NiNode|Bip01 Spine1 Bone10"というメッセージが出たら、weight付けしたボーンがスケルトンに存在しないということを意味しています。以前小さなボーンにはweight付けするなと言いましたよね?戻ってデバッグ情報を読んで下さい。
  • 以前作ったOblivion\Data\Meshes\Creatures\oursheepディレクトリから、sheep.nifを開きます。
  • NifSkopeでFile→New Windowで新規ウィンドウを作成します。
  • 新規ウィンドウでgoatbones.nifを読み込む。
  • NiNode 0とNiNode 1を開き、スケルトンのNiNode(番号は2)と、NiTriShapeノード(番号は47)があるのを確認して下さい。
  • NiTriShapeノードを右クリックし、Block→Copy Branchでコピーします。
  • そのまま、もう一方のNifSkopeウィンドウに切り替えます。
  • Scene Rootを右クリックしてBlock→Paste Branchでペーストします。
  • アラートが出ますがOKを押します。
  • 右側のデバッグ情報を読んで下さい。
さて、新しいメッシュをまたScene Rootの子ノードにしていかなくてはいけません。今回は何かを追加するわけではなく、メッシュを入れ替えます。
  • Block Details(F2を押すと表示)でScene Rootノードを表示し、Children Listを開きます。
  • 1という値(sheepメッシュ)を追加したノード番号45に書き換えます。
これで、古いメッシュはツリーから除外され、新しく追加したメッシュがツリーに入りました。
  • 右クリックからBlock→Remove Branchで古いメッシュを削除します。
  • .nifファイルをgoat.nifという名前で、Oblivion\Data\Meshes\Creatures\oursheepディレクトリに保存します。
現段階で、.nifファイルに対して行う作業は以上です。山羊をCSや、後々のゲーム内に読み込むことができるようになりました。しかし、またここに戻ってきます。ちょっと思い出してください。これは繰り返しが前提の作業です。つまり、この一連の作業を何度もやるということです。

6 CSでの作業:ありあわせのMODを繕う

私たちは、ちゃんと動作する.nifファイルを作成するところまで来ました。Oblivionに登場させたいなら、MODを作成しなくてはいけません。私はCSのエキスパートではないのでこんな手順でやっています。作成したクリーチャーを登場させるためのMODを、Construction Setで作成します。
  • Construction Setを開きます。
  • メニューからFile→Data...でOblivion.esmにチェックをつけ、OKを押します。
まず、作成した.nifで新クリーチャーを作りましょう。
  • Object WindowからActors→Creatures→Creaturesを選択します。
  • 右ペインで右クリックし、Newを選択します。
  • 新クリーチャーを作成するダイアログで、「Goat」とでもIDと名前をつけます。
  • 「Add NIF file...」と書かれたボタンをクリックし、Oblivion\Data\Meshes\Creatures\oursheepディレクトリのSkeleton.nifを選択、OKを押します。
ヒント
CSがクラッシュすると目の前が真っ暗になりますよね。早期に保存、頻繁に保存、です。セーブしたファイルもバックアップしましょう。クラッシュするとespファイルまで壊れることがあります。
OKをクリックするのは、CSにモデルとモーションをロードさせるために必要な作業です。次に山羊のダイアログを開き直し、作成したモデルをアクティブにします。
  • Object Windowの左ペイン、Actors→Creatures→Creaturesに新しく「oursheep」というエントリーが出現したと思います。それを選択します。
  • 右ペインに「Goat」というエントリーが出現しているので、ダブルクリックします。
  • 真ん中あたりにあるタブ群から、Model Listを選択します。(右の方にあります)
  • goat.nifにチェックを入れます。
  • 次の作業を始める前に必ず保存してください!
興奮してきました?ですよねー!
  • 右下にあるPreviewのチェックを入れます。
ちょっと妙ですが、間違いなくさっき作ったモデル素材が見えます!素晴らしいですよね!
  • Animationsタブに移動し、それぞれのモーションをダブルクリックしてください。
正しく見えるようにするには、次のルーチンワークを始めなくてはいけません。それは、モデル素材とそのweight paintの質を高めることです。しかし、この時点でゲームを起動させてしまってもいい、ということをご存知のはずです。Oblivionに山羊を登場させることは可能です。モデル絡みの作業、weight付け、UVマッピングとテクスチャなんかの作業をしなくても、です。

6-1 Oblivionに読み込む:もうちょっと我慢してください。

CSでのクリーチャー見え方はイケていてダンディです。でも、CSだけでなく、ゲーム内でも見たいですよね。今ではきっと当ててみせたいはずです。正しい道は、CSを使ってクリーチャーを配置し、ゲームを起動し、クリーチャーがいるはずの場所へ行き、剣を抜いて切りつけることです。ショートカットします。柔軟に行きましょう。コンソールでクリーチャーを読み込みます。
プレイヤーの目の前、何歩か先に何かを呼ぶコンソールコマンドは、以下の通りです。

player.placeatme FormID 1,250,0

1は、オブジェクトを一つ読み込むことを示し、250は「何歩か離れた所」を意味します。そして0は、「プレイヤーの前」を意味しています。FormIDはゲームのオブジェクト全てがユニークに(重複なしに)持つ識別記号で、16進数で表記されます。本チュートリアルのテストでは、FormIDは10004C97でした。以下は、FormIDのチェックする方法です。
  • Construction SetのObject Windowで、Actors→Creatures→Creatures→oursheepをクリックします。
  • 右ペインにEditorID、Count、Users…といった表組みが表示されます。
  • EditorIDとCountの間に隠れているマスがあるので、二本のラインの右側を右にドラッグして広げます。
  • そのカラムがFormIDです。
FormIDは上で述べた10004C97ではなく、01004C97になっています。これは頭の二桁はロードオーダーにおける、16進数で書かれたMODの通し番号が入るからです。このMODは一番最近編集されたものですから、おおむねロードオーダーの一番下になります。方法は二種類あります。
ヒント
CSで変更した部分を保存しないまま、Oblivionを起動してはいけません。最低でもCSを最小化しておきましょう。私の場合、その通りにしていなかった時、つぎ込んだ時間をクラッシュされてしまい、パソコンも落ちました。
一つ目
  • ObMMを使用し、最初にロードされるようにすることで01を残す。
二つ目
  • アクティベートされているMODの数を数え、1を足して16進数します。私の環境では15個あったので、今回作成したMODは15+1=16、16進数なら10ですから、これが私の環境での二桁になります。
  • FormIDをメモする。
  • 上で述べたコンソールコマンドをメモする。
  • Construction Setを閉じる。
  • Oblivionを起動する。
  • 作成したMODをアクティベートする。
  • コンソールを開く。
  • player.placeatmeコマンドを、FormIDと共に入力する。
  • ピシャリとエンターを押す
安心しましたか?いいでしょう。

7 NifSkopeでの追加作業:コリジョンボックス

山羊と一緒にOblivionをプレイすると、いくつか気づくことがあるかもしれません。最初はモデルの中が見え、次にクリーチャーが死んだ時に足が地面に埋もれてしまうことです。両方とも、sheep用のコリジョンボックスが使われているために起きる問題です。よくないですね。

8 テクスチャの間に合わせ

私は芸術家ではないので、テクスチャを描くことについてはお助けできません。もしモデル素材にいい画像をお持ちなら、そこそこのテクスチャとしてコピペで使えます。以前、UVマッピング作業をしてい時にUV layoutを保存しているので、レイヤ分けし、透過レイヤの一番上に置くことができます。テクスチャのサイズは2のべき乗でなくてはいけないと思います。128*512、1024*1024、256*2048とか。間違ってるかもしれません。
テクスチャを完成させたら正しいフォーマットで正しい場所に配置されなくてはいけません。CS Wikiにはこれについての素晴らしいガイドがありますので、今はGIMPを使ったとりあえずのやり方を述べます。Photoshopがあればその方が楽かもしれません。
デバッグ
もしピンク色のモデルが表示されたらCSやOblivionがテクスチャを見つけられないということです。設定したNiTexturePropertyの値を調べてください。何も間違っていなければ、BSApatcherで解決できる、よくあるトラブルなのかもしれません。
必須ツール:GIMP(フリー)、GIMP DDS Plugin(これもフリー)
  • GIMPでテクスチャファイルを作成あるいはロードします。
  • Oblivion\Data\Textures\Creatures\goat\goat.ddsというファイル名で.ddsファイルとして保存します。
  • DXT1 No Alphaを選択します。テクスチャマップがアルファチャンネルを必要とするなら、たとえば視差マップ、アルファ透過マップが内包されているならDXT5を選択してください。create mipmapをチェックします。「正しいDXTC圧縮の選択」についてはこちら[外部]をどうぞ。
さて、NifSkopeで再びgoat.nifを開いてください。
  • Block ListでScene Root→NiTriShape→NiTexturingPropertyを開きます。
  • NiSourceTextureの値をtextures/creatures/goat/goat.ddsにします。

9 ここから先の話

今や私が2週間で学んだほとんどをあなたは学んだことになります。さて、これからどうしますか?
  • 鹿のように振る舞う、ちゃんとした山羊を作る
  • スクリーンショットを投稿する
  • 全て取り揃えたMODにする
  • ここにリンクを貼る
朗報お待ちしています!
原文:http://cs.elderscrolls.com/constwiki/index.php/Creature_Meshes_101 09-04-09

Tutorials:  トラックバック(-)  コメント(-) 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。