自作モーション作成チュートリアル for BlenderThis is a featured page

(この項目は現在編集中です。記述内容に古い内容などが含まれています。近日中に整理しますのでご容赦を)

1. 概要


 このチュートリアルでは、Blenderによる自作モーションファイル(KF ファイル)の作成方法を簡単に説明いたします。

 まずあなたは、下記の各種ツールを事前に用意する必要があります。

・Blender(ver2.41推奨(*1))
http://download.blender.org/release/Blender2.41/
・Blender用nif/kfスクリプト
http://www.niftools.org/wiki/index.php/NIF_File_Format_Library_and_Tools
・NifSkope(最終バージョン)
http://www.niftools.org/wiki/index.php/NIF_File_Format_Library_and_Tools
・TESConstructionSet(CS)
http://www.elderscrolls.com/home/home.htm
・kfextractor ( kfextractor0_9.7z 最終バージョン )
http://www.4shared.com/dir/3665537/f0b0d21a/sharing.html


*1 Blender は頻繁にバージョンアップを繰り返していますが、Blender用nif/kfスクリプトは現在開発が止まっています。最新版の nif/kfスクリプトが発表された時点での Blender のバージョンが 2.41 だったため、このバージョンで使用するとトラブルが少ないようです。

 また、あなた自身のBlender習得スキルが必須となるため、(もしあなたがまったくの初心者であるならば)まずこのページこのサイトで簡単な操作方法を学ぶことをお勧めします。この文書では、Blenderの操作方法など特に注釈がない限り明記しません。

 さらに、以下のファイルもダウンロードしてください。

 ■ モーション作成用 blend ファイル
  上のkfextractor0_9.7z 内や 
  同ダウンロードページの一覧にある、kfサポートパックに同梱されてます。



 モーション作成は以下の手順で行います。詳しい内容は、ツール別セクションにて説明します。

1)構想・資料集め
 まずキャラクターに取らせたいポーズ、モーションを構想します。後にBlenderでポーズを作成する資料となるので、出来るだけ形として残しておくべきでしょう。元が3Dモデルならばなお作りやすいです。

2)Blenderでモーション作成
 次に、Blenderでモーションを作成し、nifファイルとしてExportします。(付属のBlendファイルをお使い下さい)

3)kfextractorを使ってnifをkfに変換
 Nifskopeで今出力したnifファイルのキーフレームデータを、既存の.kfファイルに移植します。kfextractorはその工程をあっというに間に済ませるすばらしいツールです。

4)CSでモーションの登録
 3で作成した.kfファイルを所定の場所に置き、CSでIdleAnimationとして登録します。また、インタフェース部分となるメニュースクリプトも書き換えてください。

5)Oblivionでテスト
 作成したモーションを、Oblivionでテストします。

2. Blenderでモーション作成


 Blender(2.41推奨)を起動し、モーション作成用 blend ファイルを展開して開きます。あなたは始めに、Bethesda標準の色気の無い素体が3Dビューに現れるのを見ます。

自作モーション作成チュートリアル for Blender - OBLIVION JP MODDERS Community

この素体はすでにArmatureをリギング(*ボーンをモデルに実装させること)している状態のものです。あなたは何の負担も無く、開始直後からこの人形に対してポーズを付けることが可能です。
このとき、キーフレームの表示(3Dビューのフッタにある数値)はどうなっていますか?
 "1"であるなら、そのままでいいです。もしあなたがキャラクターにアニメーションを与えたければ、ここでキーフレームを操作し、各フレームでキーを確定していきます。試しに↑キー、↓キー、→キー、←キーを打鍵してみましょう。数値がどうなりましたか? 今回はアニメーションを作成しないので、デフォルトの1のままで続けます。

 Armatureを選択し、[Ctrl+Tab]を打鍵してObject ModeからPose Modeにします(または3Dビューのフッタにあるプルダウンメニューから選びます)。

自作モーション作成チュートリアル for Blender - OBLIVION JP MODDERS Community

これでArmatureを囲む色がピンク色から薄い青色に変わりました。

好きなArmatureを選び(たとえばBip01 L UpperArm)、[R]キーで適当に回転してください。リギングが正常に行われていれば、素体の左腕が面白いようにぐねぐねと動きます。

自作モーション作成チュートリアル for Blender - OBLIVION JP MODDERS Community

あまりに自由に動くからといって、現実の人間に対して行うとまずい方向には曲げないようにしてください(ただしそれによって面白い視覚効果が得られるのなら賛成です。たとえば「ジョジョの奇妙な冒険」に出てくるような、ありえないが美しいポーズを取らせる場合など)。

ちょうどいい所に動かせたら、動かしたBip01 L UpperArmを選択したまま[I]キーを打鍵します。"Insert Key"メニュー出てきますので、LocRotを選びます。

自作モーション作成チュートリアル for Blender - OBLIVION JP MODDERS Community

これで1フレーム目に、左腕が動く動作が加えられました。この調子で、他のArmatureを動かしあなたが考えたポーズを素体に取らせましょう。変更を加えたところを一気に確定するには、[A]キーで全体を選択し[I]キーを打鍵します。

 好きなポーズは取れたでしょうか。それではいよいよ.nifファイルを出力します。このとき素体は不必要なので、削除するかParentを解除なさっても構いません。次はkfextractorの出番です。

3. kfextractorを使ってnifをkfに変換


 先日有志によるkf変換ツールが開発されました。このツールを使用することにより、以前までの複雑な「指先体操」の作業は不要となります。まさに画期的なツールの登場は、私達に大いなる時間の節約を約束してくれるでしょう。なお詳しい使用方法はkfextractorのマニュアルをお読みください。私がここで助言することといえば、出力したkfに少しだけ手を加えてあげることだけです。なお私はとても面倒臭がり屋なので、二度と同じことを言いたくありません。一度、旧バージョンの『4. NifSkopeで整形・移植』(下記を参照)をお読みになられてから講義を受けてください。これを前提に私は話します。あなたが過去にチュートリアルを読んだのなら良い。問題ない。次に進みましょう。
 
 変換されたkfを開いてください。ではControlled BlocksからBip01 NonAccumの候補を見つけ出し、NiTransformDataのある場所までジャンプしてください。NiTransformDataのBlock Detailsの中で、"Translations"→"Keys<Vector3>"と辿っていきます。最下層のKeysの"Value"行には何がありますか? おそらくX,Y,Zの各座標が並ぶはずです。この各値が、最終的にキャラクターの位置を決定します。 Z軸の値次第で、キャラクターが跳ねたり仰臥したり、また斜めにしてポーズ全体の印象を変えることを可能にします。標準的な立ちポーズなら NonAccumのz座標を66程度。極端に姿勢が低くなる寝ポーズなどは15程度の値を設定してください。ここでの作業は以上です。保存して次に参りましょう。名称は自由で構いませんが、出来る限り命名規則に基づいてください。管理が容易になり、テスト動作までの進行がスムーズになります。

*2006/04/25
さらなるkfextractorバージョンアップにより、上記した手動の修正は不要になる可能性があります。すばらしい技術を有した作者の今後に期待しましょう!
*2006/04/28
kfextractor v0.4から手動での作業はほとんど不要になりました。作者さんの苦労を労って、ありがたく使わせていただきましょう。


[命名規則]

カテゴリ ファイル名 説明
Stand efgAIC1** 立ちポーズ
Sit efgAIC2** 座りポーズ
Lie efgAIC3** 寝ポーズ
Action efgAIC4** アクションポーズ
Pair efgAIC5** 二人ポーズ
(*は任意の数値)

保存場所は、Oblivion\Data\Meshes\Characters\_male\Idleanims\EFG のカテゴリに該当するフォルダに格納します。

旧バージョン『4. NifSkopeで整形・移植』


*この情報はすでに古くなっています。あくまで参考の為に旧バージョンから転載したものですので、ご注意を願います。

先ほどのnifファイルをNifSkopeで開きます。素体を失った寂しそうなボーンが、ですが活き活きとしたポーズを取っているはずです。ここでもし、Blenderでskelton.nifを読み込んだ直後のように、左右の手を開き、ダ・ヴィンチのウィトルウィウス的人体図のような姿勢で現れるのなら、Blenderでキーを確定してない証拠です。再びBlenderに戻って、よく手順を確認した後もう一度nifファイルを作成してみましょう。 (しかしそれがあなたの意図したポーズならば、それはそれで咎めません)
では次です。このボーンを包括する親(デフォルトではScene Root)を選び、右クリックメニューから"Copy Branch"を選択します。これでこのボーン全体をコピーしました。そのままこのチュートリアルテキストと同フォルダにあるtemplate.kfをロードします(これはBethesda標準のcastoff.kfとまったく同じものです)。先ほどコピーしたボーンをPasteします。これでこれから行う作業の準備は整いました。

 ボーンデータのノードを次々と展開していってください。あなたはいつものツリー構造の中に、ふと見慣れないものを見つけることでしょう。 "NiKeyframeController"と書かれたそれは、右側に旗を掲げています。それを展開してください。"NiKeyframeData"が顔を現します。それこそが私が以前述べたキーフレームデータです。ここに、さきほどBlenderで確定したフレームごとの変化や、ボーンの座標などが保存されています。
では変更を加えたいボーン名の、"NiKeyframeData"をコピー、ペーストしてください。同じデータがリストの一番下に追加されます。
では、kfファイルの全てのルートである"NiControllerSequence"を選択して、下のBlock Detailを見てください。そのなかで見るべきものは、アニメーションのタイムスケジュールを決める"Text Keys"、モーションのループ方法を決める"Cycle Type"、モーションの開始時間と終了時間を決める"Start Time"・"Stop Time"、そして"Controlled Blocks"だけです。ここでは他の項目に触れずに"Controlled Blocks"だけ見ていきます。
 "Controlled Blocks"を展開してください。下にずらっと項目が現れます。この項目をみていくと、Value列にふと見慣れた表記があることに気が付くはずです。選択し、展開してみると"Interpolator"行に、"NiTransformInterpolator"がリンクされているのが見て取れます。では"Interpolator"の太い矢印をクリックし、そこにジャンプしてください。
ジャンプ先の"NiTransformInterpolator"のBlock Detailには、"Data"行にリンクされている"NiTransformData"というデータがあります。このリンクデータを、先ほどコピーした "NiKeyframeData"と入れ替えてみましょう。Value列にコピーしたデータの番号を入力するだけです。(もうお気づきでしょうが、入れ替えた"NiTransformData"と、"NiKeyframeData"は互換性があり、まったく同じデータサイズを持つ構造体です。ですので、何も問題なくお互いが移植できる関係を持っています)
では移植した"NiKeyframeData"のままでは決まりが悪いので、NiTransformData"と改名してみましょう。これで一つ目の移植が完了しました。


4. TESConstructionSet(CS)でモーションの登録


 まず付属のEFGAddPose.espを読み込みます(Set Activeにすることを忘れずに)。ロードに少し時間は掛かりますが、コーヒーでも飲みながら気長に待ちましょう。
読み終わりましたか? ではメニューから[Gameplay]→[IdleAnimation]を開きます。*のついた、"efgAIC"というカテゴリーが見つかることかと思います。開くと、ポーズ別にわけられた階層が並びます。あなたが先ほど作られたのが立ちポーズなら、"efgStand"を開いてください。"efgAIC1**"というポーズ群が現れます。ではそこと同じ階層に最新のefgAIC1**の番号を+1した新しいIDを追加してください(たとえばefgAIC101まで登録されていたら、efgAIC102にします)。
 efgAICの適当なIDから、Function条件をコピーします。その中の"EFGAICnum"のイコール条件を、先ほど追加したIDの接尾 (e.g efgAIC101なら101)にします。あとはあなたが作成したkfファイルを登録するだけです。ここでの操作は以上です。ウィンドウを閉じてください。

 ただしあなたがPairポーズを登録するならば、efgAIC5**Bの条件を「EFGAICRing5**Bのアイテムを装備しているとき」としてください。
また登録したIDに対応した「EFGAICringPair5**B」というLeftRingを作成してください。

 スクリプトエディタからEFGAICdummy1Scriptを開きます。メニューを実現している各制御文の構造を理解しながら、さきほどの EFGAICnumに対応した数値を代入します。EFGAICnumはshort型のグローバル変数です。あとはespを保存してCSを終了します。

5. Oblivionでテスト


 保存したespをランチャーで登録し、Oblivionを起動します(ゲーム上でテストするには、EFGAddPoseの本マニュアルをお読み下さい)。
どうなりましたか? 普段とまったく違うキャラクターの動きは新鮮に映ることでしょう。あなたの思いつき次第でいろいろなシーンが生まれます。キャラクターに躍動感を与え、優れたスクリーンショットを撮ることは、いまやあなたの手に委ねられているのです。

 最後になりましたが、このチュートリアルテキストが優れたSSを撮りたい人、優れたModの開発を志す方々の、ほんの一助となれば幸いです。お疲れ様でした。それでは自由にモーション作成を楽んでください。

6. その他の補足情報


リギングの方法


リ ギングは、オブジェクトとArmatureを続けて[Shift-右クリック]で二つ同時選択し、[Ctrl+P]でMake Parentします。ポップアップメニューがいくつか出てきますが、今回はすでにスキニングされた素体をリギングしますので、"Make Parent to : Armature"→"Create Vertex Groups? : Don't Create Groups"を順次選択していきます。オブジェクトの数だけリギングしてください。すべて関連付けたら、ArmatureをObject Modeで動かしてください。うまくいっていれば素体全体が動きます。

『オブリビヨンの視線追尾システムについて』


 キャラクターの高さを低くしたり高くする のに代表的なボーンは、"Bip01 Pelvis"と"Bip01 NonAccum"です。ゲーム上のキャラクターはBip01 NonAccum(あるいはBip01)に従順です。キャラクターは常にBip01の位置で当り判定を儲け、そしてその方向を見続けようとします。ですか ら何も考えずにPelvisあるいはNonAccumの座標を変えたりすると後で痛いしっぺ返しを食うことになります。たとえばあなたは「顔を真横にを向 かせる」ポーズを作ったとします。おそらくNeck1を捻り素体の首を横に向けたことでしょう。ではゲーム画面上でそのポーズをテストしてください。どう なりましたか?
おそらく横には向かないはずです。なぜなら首から上はOblivionによって頑なに制御されているからです。これは「NPCの行 く方向をプレイヤーが目で追う」というモーションがゲーム上で優先事項として働いているためです。万人にとって恩恵のある機能とはいえ、意図したポーズを 取らせないこのシステムは我々にとって全く持って余計なお世話です。
私は近日中どうにかしてこの『クソッタレモーション』をなんとかしたいです。ですが書いている私にも未だ知らないほうが多いのです。クソッタレを、クソッタレでない、実に知恵のあるモーションにするために私はこれを書いています。
さ て、実のところ「首を意図した方向に向ける措置」を擬似的に実現することが出来ます。クソッタレを逆手に取るのです。クソッタレはBip01を見続けると 私は言いました。Bip01とBip01 NonAccumは一心同体ですが、Pelvisは違います。このPelvisを顔を向けた方向に回すのです。勿論キャラクターの向かせたい方向に Bip01があるように。顔と首はちょうど親子のような関係を持っています。首が動けば顔も動きますし、顔が動けば首もおのずと曲がってくれるはずです。
さ てどうなりましたか? 「うまくいかない」と嘆くこと請け合いでしょう。どっちなんだ!と突っ込まないでください。これは擬似的に、クソッタレたシステム を無理やり利用した応急措置的な方法ですから、100%意図した結果は得られません。現状、こう書いている私ですら意図したポーズを完全に反映させること は難しいのです。
さて、問題は山積みですがこのPelvisを操ることは思いのほかEFGAddPoseに恩恵をもたらしました。Pairポーズ でNPCが「進んでこちらの方向を向くようにする」ようにしたり、「衝突判定をすり抜けて互いが接触するようになる」といった思いもよらぬ利益です。勿論 普段ゲームをしていて、相手をすり抜けることなんてことがあったら困り物ですけどね!
しかし注意も必要です。あなたがもし仰臥ポーズを相手に取ら せたとしたかったら、Bip01 Pelvisは弄ってはいけません。首は常にBip01の方向に曲がり続けるのです。寝そべったキャラクターは如何なる状況下でも上を見上げる形をとろう とします。一度試してください。ですが私を恨まないで下さい。地を這うポーズはNonAccumを利用しましょう。
あと、このクソッタレはさらに 私を苦しめました。なぜかBip01 Spineを少しでもひねると、意図したポーズより若干キャラクターの上体がねじられるのです。この症状は特に寝ポーズなどで顕著になります。現状、この 症状の具体的な改善策はありません。あなたはゲーム上で捻られたキャラクターをSSなどで撮影し、それを手がかりとして少しずつ修正していくしかありませ ん。このような諸事情を考慮したうえでモーションを作成してください。健闘を祈ります。

謝辞


本ドキュメントは、2ちゃんねる「SS/MOD晒しスレ」に公開された「自作モーション作成チュートリアル for Blender (2007/04/28) by EFG」を元に作成しました。素晴らしいドキュメントを公開してくださった EFG 氏に深く感謝致します。



Posted Anonymously Latest page update: made by Anonymous , Jul 19 2008, 12:26 PM EDT (about this update About This Update Posted Anonymously Edited anonymously

6 words added
5 words deleted

view changes

- complete history)
Keyword tags: None (edit keyword tags)
More Info: links to this page
Started By Thread Subject Replies Last Post
komuband How can I get the EFGAddPose?? 1 Jun 7 2007, 11:56 AM EDT by Anonymous
Thread started: Jun 6 2007, 6:43 AM EDT  Watch
良い文感謝いたします. ところで EFGAddPose.espは どこで得ることができるんですか?
3  out of 4 found this valuable. Do you?    
Keyword tags: None (edit keyword tags)
Show Last Reply

Anonymous  (Get credit for your thread)


Showing 1 of 1 threads for this page
Unknown File efgAddPose.blend.7z (Unknown File - 679k)
posted by myfuna   May 26 2007, 12:27 PM EDT
モーション作成用blendファイル