今回は、オブジェクトに設置したアーマチュアと、オブジェクトの表面を連携させるスキニングの説明。この作業を行うことで、アーマチュア(ボーン)の動きに対応してオブジェクトが変形するアニメーションを作ることができる。
しかしながら今回はなかなか大変で、スキニングが完了までに何度か失敗してやり直した。
中でも大変だった3回の失敗を、記事の中で時系列に発生から解決までを同時に記載する。何かの助けになれば幸いです。
この記事の参考書籍
オブジェクトにアーマチュアを設置する方法については以下の概略を参照してください。
概略は、(1)[Shift]+[A]→「追加」メニュー→「アーマチュア」クリックでアーマチュア追加、(2)モード設定で「編集モード」として、アーマチュアのヘッド部をクリック+[G]キー(3)マウスでヘッドを移動し、アーマチュアを変形させて左クリックで決定し、完成。
準備
ファイルを起動し、Blenderの編集画面にアーマチュア入りのオブジェクト(メッシュ)を表示させる。
モード設定
画面左上のモード変更プルダウンボタンで「オブジェクトモード」に変更する。
いきなり失敗1、2が発生
(いきなり寄り道:自動ウェイトの失敗)いきなりだが、ここから失敗の1と2を先に記述する。
理由としては、この失敗を解決するためスキニング前に別の処理を行うことになったからである。
後述するが一応ここでやり方を記述しておく
スキニング操作:オブジェクトモードで、[Shift]キーを押しながらメッシュ(①)、アーマチュア(②)を順にクリックして両方を選択。次に[Ctrl]キーと[P]キーを押して(③)”ペアレント対象”ウィンドウを開き、メニューから”自動のウェイトで”(④)を選択する。
(失敗1)
”自動のウェイトで”クリック後、画面下に”ボーンヒートウェイト:1つ以上のボーンで解決に失敗しました”と表示された。
どういうことだ?と思ったが、スルーして作業を進めたところ、アーマチュア(ボーン)を動かしても(回転させても)、メッシュの方は全く動かないということが起こった(つまり2つが連動していない)。全くの失敗。
(失敗2)
時々、(理由はわからないが)”自動のウェイトで”の作業でエラーが出ないことがあった。
ただ、その時は「ポーズモード」でアーマチュアを回転(詳細は後述)させると、外部(メッシュ部)がうまく動かず取り残される異常事態が発生した。
これも結局は2つのオブジェクトが正しく連動されていないということだった。
つまり、失敗1と2は同じ原因で発生していると推測した。
問題解決のため、”ボーンヒートウェイト”を検索すると、多くの記事が見つかった。
いくつか読んでみた結論は・・・このエラーの原因は色々ある。したがって解決方法は数多く考えられる・・・だった。
1つずつ試していった結果、後述する“重複頂点問題の解消”によって今回は解決した。
小さなオブジェクトの場合は、この方法で良いのかもしれない。
失敗の前まで戻す
画面上部メニューの「編集」から”元に戻す”のクリックを繰り返して、失敗前の状態まで戻す。
オブジェクトの重複頂点の削除(スキニング前にやっておくこと)
ここから本題に戻る。
スキニングを失敗しないためには、スキニング作業前の準備として金魚(メッシュオブジェクト)から重複頂点(どことどこが重複かは分からないが・・)を削除する必要があった。
Blenderを起動したばかりの初めの状態まで戻って再開。
メッシュオブジェクトの重複頂点削除
画面左上のモード変更ボタンから「オブジェクトモード」を選択。
金魚(メッシュオブジェクト)をクリックして選択。
画面右上のアウトライナーでは”kinjo01”が選択されている。
選択したメッシュオブジェクトを編集するために、画面左上のモード変更ボタンを「編集モード」に変更する。
メッシュオブジェクトの外側にフレーム(オレンジの直線)が表示される。
重複頂点の削除
いよいよオブジェクトの重複頂点を削除する。
画面上部メニューから「メッシュ」→「マージ」→「距離で」を選択する。
画面下に”482個の頂点を削除しました”と表示される。
これで重複頂点のが削除された。
!!注意!!
同時に左下に「>距離でマージ」と表示されたウィンドウが出現するが、はじめこれをスルーしたら次の失敗3が発生した。
失敗3が発生
(失敗3)
そのまま、「オブジェクトモード」に戻して、金魚を見ると、角の取れた丸っこい形になっていた。
MagicaVoxelで作成したボクセルオブジェクト(あえてのカクカクモデル)風味を残してアニメーションさせるのが目的なのでこれは失敗!
再度、上部メニューの「編集」→「元に戻す」で、重複頂点削除の前まで戻す。
リプレイ:一旦さっきのところまで戻す
金魚(メッシュオブジェクト)を選択後に「編集モード」に変更したところまで遡って再開。
画面上部メニューから「メッシュ」→「マージ」→「距離で」を選択(これは先程の作業と同じ)。
ここから何がいけなかったのか?
先程同様に、画面下部に”482個の頂点を削除しました”と表示される。
この時点で金魚オブジェクトを見ると角が取れて丸くなっている。これでは先の失敗と同じ。角を復活させる必要がある。
試み1→改善なし
(先ほどはスルーした)左下に表示された[>距離でマージ]ウィンドウをクリックする。
ウィンドウに表示された項目から[結合距離]をクリックして最も短い距離(0.00001m)にする。
この操作で角が復活した例もあったが、今回はまだ金魚の角は丸い。この方法ではだめだ。
試み2→正解
[>距離でマージ]ウィンドウの項目”□シャープな辺”にチェックを入れる(□→☑)と、金魚(メッシュオブジェクト)の輪郭が水色の直線で表示された。
これが角を復活させる方法だった。
重複頂点削除の確認
画面左上のモード変更で「オブジェクトモード」に変更すると、金魚はカクカクモデルになっていた。
これでいよいよスキニングの作業に入れる。
スキニング(アーマチュアとオブジェクト表面の連携)
モードは「オブジェクトモード」に変更。
[Shift]キーを押しながら、金魚(メッシュオブジェクト)、アーマチュアの順にクリックして選択。
[Ctrl]キーと[P]キーを一緒に押すと、”ペアレント対象”ウィンドウが開く。
”ペアレント対象”メニューから、”自動のウェイトで”を選択してクリック。
前述の失敗1のようなエラー表示がでなければおそらく成功。
右上のアウトライナーから”kinjo01”オブジェクトが消えて”アーマチュア”だけになっている(ペアレント化されて1つに統合された)。
スキニング成功の確認
アーマチュアを選択した状態で、画面左上のモード設定を、「ポーズモード」に変更する。
[7]キーを押して真上からの視点に切り替えた。
動かしたいアーマチュア(ボーン)を選択すると、輪郭が水色に表示される。
尻尾部分のアーマチュアを選択し、[R]キーを押すとアーマチュアの横に矢印が表示されて、関節を軸に動かせる状態となる。
ここから(何も押さない状態で)マウスを動かすとアーマチュアが回転し、それとともに金魚の尻尾部分が動く。できてる!!
左クリックするとその位置で決定される。
頭部分も同様に動かしてみる。
頭部分のアーマチュアを選択して[R]キー押す。
アーマチュアをマウスで回転させると、頭の向きが変わった。
左クリックで決定。
視点を変更すると、金魚の変形の様子がよく分かった。
動き残しもないようなので、スキニングは正確に実行されたことが確認できた。
画面上部メニューから「ファイル」→「保存」選択し、上書き保存した。
失敗と復帰を繰り返して大変だったが、アニメーションの元となるアーマチュアをメッシュオブジェクトと連動させること(スキニング)ができた。
いよいよ次回、Blender上でオブジェクトにアニメーションさせる。
この記事の参考書籍