蕎麦みっくす。
xismo(キスモ)でキャラモデリングに挑戦してみる vol.6
2017-12-08 21:51:09フリーの3Dモデリングソフトウェア「xismo(キスモ)」を利用し、MMDキャラモデリング作成の顛末を綴る日記です。
自分用の「備忘録」をメインにキャラモデリングの初心者たるうp主が作業の進捗具合をゆるい感じに報告する趣旨のテキストです。
前回、「間を開けずに投稿でき(ry」などと書いておきながら、気がつけばまたしても1か月経過してしまいましたw
モデルの方はお陰様で無事完成し、今現在は配布に向けた諸々の準備をしているところです。
完成よりも少し前の状態になりますが、テスト用にモーションを流し込んだ動画をつべのほうにアップロードしています。
(限定公開の扱いとしていますので、予告なく削除する場合もあります)
https://www.youtube.com/watch?v=EvWcz01hgxA
※モーションおよびカメラは、背中Pさんのデータをお借りしました。
6回目の今回はボーン、ウェイト関連について書いてみます。
ただ、このあたりの作業については、うp主自身もまだまだ試行錯誤の状態でもありますので主に以下の点に集中して記載したいと思います。
1.とりあえず、今回うp主が行った作業手順的なメモ
2.実際に作業を行った際にハマった部分
本来であれば効率の良いウェイトの塗り方等を提示できれば良いのですが「逆にこっちが聞きたい」状態だったりします(笑)
この記事を読まれたうえでもっとベストな方法等があれば、教えていただけると助かります。
また、ボーン、ウェイトといった用語等に関する前段の説明も割愛させていただきますのでご了承ください。
■ボーンについて
xismoには標準的なMMD用のボーンを追加する機能が実装されています。
一般的な人型のモデルであれば、こちらの機能を利用することでボーン作成の作業が大幅に削減できます。
今回のモデル作成においても利用させていただきました。
ボーンを作成するには、まずプロジェクト内に「ルートボーン」と呼ばれるボーンを入れるための箱(のような概念)を追加する必要があります。
「ルートボーン」が存在しない状態では、ボーン作成(「MMD用のボーン追加」も含む)が行えないので注意してください。
[メニュー]-[作成]-[ルートボーン]でプロジェクト内に「ルートボーン」が追加できます。
「ルートボーン」を追加することでボーンの作成が行えます。
MMD用のボーンを追加した状態
なお、ボーンウィンドウで各ボーンに対する可視設定が行えますが、ノードウィンドウ上の「ルートボーン」の可視設定からボーン全体(=「ルートボーン」配下のボーン)に対してまとめて表示・非表示の制御も可能です。
うp主はいちど、うっかりノードウィンドウ上で「ルートボーン」を非表示設定してしまい「ボーン情報がすべて消えた!」とパニックに陥りかけたことがあるので心に留めておいた方が良いかもしれませんw
「MMD用のボーン」は標準的なスタイルで追加されるため、作成しているモデルにあわせてボ
ーン位置の調整が必要になります。
また、作成するキャラクター固有のパーツ(今回の場合は衣装やツインテール)に関しては「MMD用のボーン」として追加されませんので、こちらは個別に追加する必要があります。
今回作成したモデルの場合、特にスカートまわりはある程度のボーンを割り当てています。
実際の動き(というか動いてほしいイメージ)を想定してボーンを追加する感じかと思います。
スカートまわりのボーン構成
■ウェイトについて
●ウェイト塗りの手順
ウェイト塗りの手順については、うp主もまだまだ試行錯誤の途中にあります。
未だ「これ」といったやり方が自分の中で確率されていない状態なのですが、とりあえずは以下のような手順で作業を行いました。
1.ウェイト適用の順番
ボーンウェイトとは『頂点が、ボーンの動きに対してどのくらい影響(すなわち移動)を受けるか』の設定値であり、通常、頂点に対して100%となるように値を適用します。
(関節など2つのボーンから影響受ける頂点については、それぞれのボーンに割り当てたウェイト値の合計が100%となるように設定する)
したがって対象とするボーンを選択し、影響を受ける頂点に対してウェイト値を設定していくのがウェイト塗りの作業となるわけですが、順番的にはボーンの末端から親に向かって作業を進めました。
例えば腕の場合は指先から肩に向けて作業を行う感じです。
これは、ボーンウェイトツールの中にある「親を正規化」というオプションをチェックすることで、子供側のボーンウェイト値が決まれば、自動的に親側のウェイト値も適用されるためです。
2.ボーンウェイトツール
xismoのボーンウェイトツールは、ブラシサイズを任意の大きさに拡縮(ALTキーを押しながらドラッグ)出来たり、ボケ足のような減衰指定も行えます。
そのほか、グラデーション塗りや、既にウェイトを適用した頂点に対し徐々に値を加算(または減算)するといった機能も備えています。
本来であれば、グラデーションや減衰(ボケ足)の機能をうまく使用することで綺麗に変形するウェイト塗りができそうな感じなのですが、うp主の場合はあまりうまく使いこなせず、結局、頂点ひとつずつに対してウェイト値を適用していくというアホな作業を行いましたw
この場合、「前面」表示のみに限定したほうが良さそうです。
(「前面」に限定しない場合、カメラの角度によっては関係ない頂点に対してもウェイトを塗ってしまうため)
3.曲面化モディファイアのフリーズ
おそらく仕様だと思いますが、曲面化モディファイアが適用されたメッシュの場合、曲面化モディファイアをフリーズしないとウェイトが正しく適用されないようです。
(ウェイトの設定はあくまで曲面化前の頂点に対して行うため、そこから曲面化後の頂点にウェイト値を振り分けるのが困難であると類推)
したがってローポリでモデリングを実施し曲面化モディファイアを適用している箇所は、ウェイト作業の前にモディファイアのフリーズを行う必要があります。
ただし「顔」については曲面化をフリーズしハイポリ化してしまうと、表情モーフの作成で地獄を見そう(笑)なので、後述する「アンカー」を利用し、曲面化をフリーズしない状態でウェイトを適用しています。
4.アンカー
ウェイト塗りが影響頂点に対してウェイト値を直接適用したのに対し、アンカーとはボーンの影響を受ける範囲を立方体で囲むことでウェイトを適用する方式です。
ちなみに、この記事を書いている時点(2017/12/08)でアンカーに関する解説動画が投稿されていないので、ざっくりと適用方法を記載します。
①メッシュに「ボーンウェイトタグ」を追加(←これ重要)
②ノードに「アンカーノード」「ボーン変形ノード」を追加
(ノードの順番も重要です)
③アンカーノードのプロパティから「関連ボーン」を追加
④アンカーの大きさを調整する
以上でアンカーによるウェイトが適用できます。
個人的には、立方体の位置や大きさで変形具合を調整できるアンカー方式の方が編集しやすいのですが、xismoの場合はノードをまたがってアンカーを適用することができないため必然的に用途が限られてしまいます。
(アンカーの使用前提で、ひとつのメッシュノードでモデリングを完結すれば別ですが・・・)
ちなみに「顔」部分のアンカーは↓のような感じです。
ちょっと見づらいですが・・・
このあたりの使い分けはセットアップサンプルとして配布されている「初音ミクV4X」が大いに参考になりました。
●トラブル
ボーンウェイトの工程あたりから、実際にPMX出力しMMD側で動きの確認などもぼちぼちはじまるワケですが、イロイロと心が折れそうになるトラブルが頻発しましたw
ほとんどが、うp主の凡ミス・間違い・勘違いに起因するものであると共に、その全てを無事解決出来て今に至るわけですが、そういった記録を残してこその備忘録ですので覚えている限り認めておきます。
1.そもそもxismo上でボーンに連動しないw
ボーンウェイトを適用後、アニメーションツールでボーンを動かしてみたものの頂点が全く動かないというケースが多々ありました(笑)
これは単にうp主が「ボーン変形」のモディファイアを適用し忘れていたのが原因です。
2.PMX出力後、MMDで開くと破綻している
xismo側では特に問題が無いものの、MMDで動作確認するといきなり破綻してしまうケースもよく経験しました。
以下のような状態が原因となるようです。
①ウェイト値の合計が100%を超えている
②ウェイト値0%の頂点が存在する(?)
③ボーン影響が3以上の頂点が存在する
①②については、頂点を選択し[メニュー]-[ボーンウェイト]-[正規化]を実行するか、ボーンウェイトタグの「正規化」をチェックすることで改善/回避できるかと思います。
また、③については[メニュー]-[ボーンウェイト]-[影響3以上の頂点を選択]を実行し、実際に問題となっている頂点が存在するか確認可能です。
3.対象化がうまくいかない
対象化のモディファイアを使用している場合は、片方に適用したウェイトの情報が自動的に対象側にも適用されて便利です。
しかし、対象化がうまく適用されずウェイト情報が壊れてしまう現象に遭遇しました。
このケースの場合、ボーン情報が厳密に対象になっていない可能性が考えられます。
(例えば「左手首ボーン」と「右手首ボーン」が対象になっていない)
修正を行う場合は、左側のボーンを選択した後、[メニュー]-[ボーン]-[反転ボーンの位置を合わせる]等を実行し、対象関係にあるボーンの位置を合わせます。
ボーンの位置を合わせたあと、いったんノードから対象化モデファイアを削除し、再度、対象化モディファイアを追加することでウェイトが正しく適用されます。
4.ポリ割の見直し
関節等、きれいに曲げるためにはウェイト以前のポリ割についても考慮が必要となります。
うp主の場合、モデリング工程においてはあまりボーンで変形させた後のことを考えずに、単純な造形についてのみフォーカスした状態で作業を進めてしまったため、ウェイトの工程になって相当の手戻りが発生しました。
具体的には、特に関節など曲がる方向が限定される個所について以下のようなポリ割に修正を行っています。
また、複数のパーツが組み合わさって1つのオブジェクトとなるような箇所については、ポリゴンの分割も合わせておく必要があります。
今回のモデルでは、当初、上着の裾部分について上着とフリルのポリ割が全く異なっていたためウェイト設定の段になって動きが一致しない問題が発生しました。
(モデリングしている時から、なんとなく気付いてはいたのですが・・・笑)
最終的にフリル部分は上着と同じポリ割の板ポリに透過マッピングを施すことで対処しています。
5.ボーン位置
ウェイトを適用したものの、実際にモデルを動かしてみると破綻が気になるケースがままありますw
うp主の場合は、特に肩の動きについて相当苦労しました。(厳密には完成モデルでも破綻しいるのだが・・・)
当初はウェイトの塗り方かポリ割のどちらかに原因があるのではないか?と思いまして、延々と調整を繰り返していましたが全く改善されませんでした。
半ば諦めモードでしたが、以下のモーションをお借りしてチェックを行っている際に、
「そもそもボーン位置が正しくないのでは?」
という問題に思いが至りまして、なんとかそこそこ動くような状態まで漕ぎつけました。
腕や足、胴体といった円筒形状の部位については、ボーン位置を調整する際も特段問題は無いと思われますが、肩のようなパーツの場合、中心位置がずれていても意外に気づきづらいようですねw
実は冒頭で紹介したテスト用の動画は、こちらの問題を改善する前のモデルでして、完成モデルに比べて肩から腕にかけての破綻が目立つ状態となっています。
とりあえず思いつくところをざっくりまとめてみました。
何かしら参考になる内容があれば幸いです。
次回はモーフに関する内容を書きます。
それではまた。