はんぶろぐ

-*-*-*-

モーションとグローバル軸とローカル軸

2015-03-06 21:34:29 | MMD

先日、Twitterのタイムラインにて、

「腕とかのローカル軸はモデルによって違うのにモーションを流し込むと同じ動きになるのはなぜ?」

といった趣旨の内容が流れてきたので、

「ローカル軸使うとそのボーン独自の回転軸を持つことになるから腕の関節の向き通りに曲げられる。
でもモーションを流してキー登録したあとは
「『グローバル軸で』曲げた時の座標位置(どれだけ回転したか)」
が登録されるからローカル軸の向きが違っても流し込んだ時に一緒の位置まで回ってくれる。」
(原文そのまま)

という内容のツイートを流したところ、少々反響があったようなので、拙い文章、そして少々長くなるかとは思いますが、まとめてみようと思います。

グローバルローカルの違いは分かるよ!という方は最初の説明部分は飛ばして頂いて構いません。



まずローカル軸グローバル軸の違いについて。

グローバル軸とは、

MMDを起動して一番に出てくるこの画面の、3本の色のついた軸です。(灰色の線は違いますよ!)
グローバルには、「地球全体の,世界的な」という意味がありますが、
ここでは「MMD世界の軸」と考えれば良いと思います。

一方でローカル軸とは、

腕ボーンなどを選択して、画面右下のアイコンにカーソルを持って行くと出るこの三本のカラフルな軸のことを指します。
「ローカル」を訳すと

  • 場所の
  • 土地の
  • (特定の)地方の

…などといったように様々な訳が出てきますが、MMDでのローカル軸とは、

「各ボーンがグローバル軸とは別にそれぞれ1つずつ持っている軸」

と考えればいいと思います。

MMD初心者の方がまず思うのが、
「ややこしいからどっちか一つだけでいいじゃん…!」
ではないでしょうか? 私がそうでした。

ですが、ローカル軸グローバル軸の違いがわかると、恐らく作業効率がかなり上がるのではないでしょうか。
次項で2つの軸の違いを説明していきます。


グローバル軸での操作とローカル軸での操作って何が違うの?

まずこの2つの操作の切り替えはMMD操作画面右下のアイコンの英字部分をクリック、
またはMMD ver 9.00以前が「G」キー、9.00以降では「L」キーで切り替えることが出来ます。


このように切り替わります。(モデル操作画面の場合)

↓ボーン操作パネルの「回転」をクリックするとこのようにハンドルが出ますが、
これは上の2つとはまた違う動き方をするので注意。

英字の下のXYZを使って操作した時だけグローバルローカルの違いが分かります。

ここまで書きましたが、実際にモデルで試してみると、
「上半身ボーン(※例)をグローバルで回してもローカルで回しても一緒じゃん!」
と思う方がいらっしゃると思います。

確かに、モデルを読み込んだときの最初の姿勢で上半身ボーンなどをグローバル軸で回してもローカル軸で回しても同じように回ります。

ではひじボーンをそれぞれの軸で回すとどうなるでしょうか?



どちらもX軸を約90°、右下のアイコンを使って曲げてみました。
明らかに回り方が違うのがわかると思います。

なぜ回り方が違うのかというと、

グローバルでは最初に画像で説明したMMD世界の軸を使って回転をさせる。
ローカルではボーンが持っている軸を使って回転をさせる。


ようになっているからです。
ここは実際に、お手元にあるモデルさんで見てみるとわかりやすいかと。

このようにモデルを読み込んだときの最初の姿勢でローカル軸とグローバル軸で違う回り方をするボーンは主に
」「ひじ」「手首」「です。
これらのボーンは人体で実際に動かす時に回せる向きが決まっているので、ローカル軸を設定しておくことで簡単に関節のとおりに回せるようになっています。ローカル便利!

これら以外のボーンではモデルを読み込んだ最初の姿勢だとどちらの軸を使ってもあまり変わりません。

ただ上半身を前に倒した状態でY軸をそれぞれのモードで動かすとまた挙動が変わります。
だからといって○○軸モードを使わないといけない!という制約はないので 操作、把握しやすいモードで操作していくのがオススメです。

グローバル軸とローカル軸の違いについての説明は以上です。



それでは本題に入ります。
「なぜローカル軸の向きが違ってもモーションを流し込むと同じ動きをするの?」

ローカル軸の向きってなんだよ!と思う方がいると思うので説明します。

ここに二人のモデルさんがいます。拙作のニュージーランドさんモデルです。


左のモデルさんのローカル軸は見慣れた向きをしているのに対し、


右のモデルさんのローカル軸はあまり見たことのない方向を向いています。


これは右のモデルさんのローカル軸の設定をしていないからです。

(設定方法などは省略します)

この二人のモデルさんを全く同じモーションデータを使って踊らせてみます。

モーフで二人の区別をつけている以外はモーション修正は一切していません。
二人とも全く同じ動き方をしています。
(お借りしたものは動画説明文にて。)


本題の問いの答えはボーンを操作したあとのキーフレームの登録のされ方にあります。


キーフレームには
「ボーンがXYZ各軸でどれだけ回ったor動いたのか」
が登録されており、その情報はグローバル軸XYZで登録されます

MMDのバージョンによってはこのように操作画面下部にXYZ軸それぞれの数値が表示されます。
角度に限って説明すると、
この数値がボーンがどれだけ曲げられたかを表す数値です。
これもグローバル軸で曲げた時の数値です。

例えローカル軸を使った操作でボーンを動かしても、この部分にはローバル軸で動かした時の数値に置き換えられて登録されます。

モーションデータであるVMD、ポーズデータであるVPDにも、ボーンを動かした時の角度、移動量はグローバル軸で動かした時の数値が登録されています。

私の解釈では、あくまでもローカル軸
「モデルの関節通り、もしくは意図したとおりに動かしやすくする」
ためにあるのではないかと思います。
特に指の第一関節などは1方向にしか曲がらないのでこれをグローバル軸だけで骨折しないように曲げるのは大変ですからね。ローカル軸は本当に便利です。(二度目




長くなりましたが、これらをすべてまとめ、結論を述べると、

なぜ「ローカル軸の向きが違ってもモーションを流し込むと同じ動きをする」というと、

最初に述べたとおり、
モーションデータにはグローバル軸で曲げた時の座標位置(どれだけ回転したか)」
が登録されているからローカル軸の向きが違っても流し込んだ時に一緒の位置まで回ってくれる。」

となります。


少しでも理解が進んだ方が入れば幸いです。
結局のところ、全部ローカル軸操作でモーションを作っていようが大体どのモデルも同じように踊ってくれます。腕などが体にめり込むのはこれとはまた別問題ですが…。
ローカルもグローバルもどちらも利点があるので使い分けをしていくといいと思います。

解釈など間違っている部分がございましたらそっと教えていただけると嬉しいです。

それでは、楽しいMMDライフを!


私がblenderで躓いた部分さらっとまとめ

2015-03-04 12:08:37 | MMD

せっかくブロマガ登録したのでどうせならなにかまとめておきたい…!ということで
今回は私がblenderを使っていて個人的に躓いた点をまとめておこうと思います。
blenderの機能は多くまだまだ使い切れていない部分もあるので随時追加していく事になると思います。

「モデリングしていて躓いた点」なので、そもそもUV展開とかどうやるの!などの基礎的な部分は説明しません。なので今日からblender始めます☆という方にはオススメできません。申し訳ない!

もっとやりやすい方法あるのに!という方がいらっしゃればそっと教えていただけると嬉しいです。

メモ帳に覚書きしたものをここにまとめていくので、かなり自己流の書き方、直し方をしています。わかりづらいよココ!!という部分もあるかとは思いますが、その際は質問して頂ければ分かる範囲で答えますのでお気軽にどうぞ。

なお、私の環境はblender ver2.65 日本語化済みで、少々UIを変更しています。
日本語化されていない方が参考にする場合は私が選択している項目と同じ場所の項目を選択すれば大丈夫だと思います。実にすみません。

目次
オブジェクトが意図した軸でMiller化出来ないんだけど!
シェイプキー編集のまま他のとこいじっちゃった!戻したい!
テクスチャを割り当てたのにめちゃくちゃピンク!テクスチャ当てられてない!
Blender2PMXでエクスポートが出来ない!
PMDEに持っていったらエッジがおかしい!
その他

-------------------------------------------------------------------------------------

オブジェクトが意図した軸※でMiller化出来ないんだけど!
※x,y,z軸どの軸も扱えるのでこのような記述にしています。画像内はx軸に対象にしています。


再現するとこんな感じ。赤軸がX軸青軸がZ軸ですね。
最初に顔をつくろうとしてX軸に対象になるようミラーリングしたら軸になってほしいZ軸を挟んでではなく別の部分に軸が出来上がってしまった!などといった感じですね。

原因:「オブジェクトの原点が座標軸のど真ん中(0,0,0)の位置にないから」

上の画像の中の2つの四角の間にオレンジ色の点が見えるかと思います。
この点は「そのオブジェクトの基準点」といえる部分であり、Miller化する際にもその点を基準としてMiller化されます。
つまりこの基準点を座標軸の中心(0,0,0)の位置に持ってこればいいわけです。
MMDにはこのオレンジ色の原点に当たるものが無いのです。

一番楽な方法は、オブジェクトモード画面にした状態で
該当オブジェクトを選択→CTRL+A→適用から「全て」適用する です。
全部適用したほうが確実です。

(ショートカットを使わずともこのコマンドは出せるのですが私のやったようにしか書けないのでショートカットキーを使った方法で書いています。)
この適用を使うことでオブジェクトの位置を変えずにオブジェクトの位置、向き、大きさの変更を確定してオレンジ色の原点が座標軸の真ん中に戻ります。これでX軸Miller化する際の軸もZ軸の部分へ戻ります。

まあオブジェクト画面で回転とか移動をしないで頂点モードで動かすほうがいいよってことですね。

-------------------------------------------------------------------------------------

シェイプキー編集のまま他のとこいじっちゃった!戻したい!



ここの形が気に入らないからちょっと変えて…



あれ?オブジェクト画面に行ったら戻った…
あっ
間違えて「お」のモーフ作る画面で形変えちゃってた!!!

よくやらかします

右下のシェイプキーというのがMMDでいうモーフにあたるものです。
Basisというのはモーフ変形の原型(ベース)となる形、MMDで言えばなにもモーフが入っていない状態の形を指します。
Basisと各シェイプキーの各頂点位置の移動量の差がMMDではモーフとして表れます。

それぞれの画像の右下に注目すると、一枚目では「」のシェイプキー、二枚目ではBasisシェイプキーが選択されています。

ここでの例で言うと、「お」のモーフ操作画面で後頭部をいじってしまったがために、
「お」モーフを使うと後頭部がびよんびよん伸びてしまうようになるわけです。嫌ですね!

解決方法:Basisから形状をコピーする

結構簡単に直ります。
まずやらかしてしまったシェイプキーの操作画面で元に戻したい頂点を選択し
W」キーを押してスペシャルを出し、「任意のシェイプキーを選択部に合成」します。


これで戻りま…


戻ってないですね

これは上の画像でいう▼任意のシェイプキー…の項目の「追加」にチェックが入っているからです。
このチェックを外してみます。


戻った!
これで「お」のモーフを動かしても後頭部がびよびよしません!やった!

補足をしますと、
▼任意のシェイプキーを選択部に合成
【参考にしたいシェイプキー】
ブレンド:どれぐらいその形状をコピーしたいか
☑追加:現在のシェイプキーの移動分 + コピーしたい形状
❑追加:現在のシェイプキーの移動分をなかった事にして上書きコピーされる

こんな感じでしょうか 少々わかりにくいですが…。
変更したい頂点を選択したあと任意のシェイプキーを選択部Basisからブレンド率1で「追加」のチェックを外してこの合成を使えば形を元に戻せるよ ということです。
この合成モードを応用すれば、まばたきのシェイプキーを片目だけ元に戻してウィンクが簡単に作れたりもします。便利ですね!

-------------------------------------------------------------------------------------

テクスチャを割り当てたのにめちゃくちゃピンク!テクスチャ当てられてない!



テクスチャ表示モードにしたのに驚きのピンクさ
(ピンクになっていないところはそもそもテクスチャ当ててないです)

UV展開してテクスチャを割り当てたのに保存したりして久しぶりに起動しなおすとなぜかテクスチャが表示されずにこうなることがあります。この状態だとBlender2PMXでもエクスポートが出来ません。

↓Blender2PMXでエクスポートを選択したあとの画面

エラーが出てます。
「Traceback」をggってもあまり解決方法が見つけられない。

私はBlendファイル(セーブデータ的なもの)を他のHDDに移したがためにこうなりました。
バックアップファイルから起動した時も場合によってはこうなります。

解決方法:テクスチャを当て直す

と 一言でかきましたが、当てなおしても直らないことがたまにあります。フシギ。
テクスチャが指定したフォルダに入ってなかったり(使わないと思って消してたりとかが多い)、そもそもテクスチャの名前間違ってるよ!だったり、何故かテクスチャがどうしても当てられない!という時もこのピンク色に染まります。
ここでは私がとった解決方法を書いていきます。一例です。

ピンク色に表示されたオブジェクトのUV操作画面を見てみます。

本来正しくテクスチャが反映されていると右側にテクスチャが表示されるはずなのですが、灰色の背景のままでなにも表示されていません。左側の▼画像のソース部分も「画像を読み込めません」となっています。

こうなったらとにかくテクスチャを当て直します。この際適当でも構わないです。PMDEでも当て直せます。私はいちいち当て直すのが面倒で全部髪の毛のテクスチャ当てたりとかします。
[単一画像]の下のフォルダーマークから画像を参照できるので当て直します。直接パスを書き換えることも出来ます。だいたいはこれで直ります。

よーし同じようにテクスチャを当てなおして直そ…う…


選択できなくなってる!!!

いくらクリックしても参照させてくれません。
こうなっている場合は、[ソース]の下部分の箱に紙が入っているようなアイコンをクリック。



このようなメニューが出るのでRemove Packを選択。これで参照し直すことが出来るようになります。

このアイコンは、Blendファイルにテクスチャの情報が保存されているために表示されます。(多分)
Remove Packすることでそのテクスチャを忘れさせるわけです。


ファイル→外部データ→パスが壊れているファイルの報告 を選択すると、Blender画面右上に

このように参照できていないテクスチャ名が表示されるのでそれを参考に当て直すと楽です。

テクスチャ変更しても3Dビューで反映されないよって時は頂点を全選択してから当て直すと反映してくれるかもしれません。(要検証)

-------------------------------------------------------------------------------------

Blender2PMXでエクスポートが出来ない!

一番躓いたところです。
エクスポートしようとするとエラーを吐かれます。

(使い回し)
このようなエラーメッセージが出るのですが(私は)解読ができません。
マシシ様のホームページ(Homeマシシ)に対策が書かれています。必読!

・マテリアルの設定されていないオブジェクトがあると書き出しに失敗する。
・取り込み時にテクスチャパスが別ドライブにあると出力時にエラーになる。
(引用させていただきました)
私はこの2つが圧倒的に多かったです。

↓マテリアルを設定してある(一例)


↓マテリアルを設定してない


マテリアルとはPMD、PMXでいう材質にあたります。
モデルの頂点は全て何かしらの材質に属しているので、どの材質に属すか決めていない頂点があったら当然エラー吐かれますよね。
Blender上でオブジェクトが分かれていても(「前髪」、「後ろ髪」とか)、同じマテリアルを割り当てているとPMDE上では統合されて表示されます。
逆に何にも割り当てていないマテリアルがあってもエラーにはなりません。PMDEに持っていった時に「面が無いよ!」と言われるだけです。

テクスチャのパスが別ドライブにある~の場合は上の③テクスチャを割り当てたのにめちゃくちゃピンク!テクスチャ当てられてない!と同じ手順で当て直せば大丈夫です。

-------------------------------------------------------------------------------------

PMDEに持っていったらエッジがおかしい!

いい感じに出来上がったのでエクスポートしよう!


テクスチャやエッジの太さも設定して…

…腕まくりの部分にエッジが発生してない。あとなんか黒い!
エッジは出る設定にしてるのにエッジが出てきてくれない。

これも何度か遭遇しました。
では、一度法線を見てみましょう。
法線とは一言で言えば頂点の向いている方向を指した線です。
法線についての詳しい解説は長くなるので後日別記事でします。

法線の表示を見やすくしてみましたがそれでもわかりにくいですね。

エッジが出ている服の部分の法線(黒い細線)はオレンジ色で表示されている頂点から外側に向かって出ているように見えるのに対し、エッジが出ていない部分の法線はなんとなく内側に向かって出ているように見えませんか?

これがエッジが出ない原因です。
一度Blenderに戻ってみてみましょう。

エッジが正しく出ていたオブジェクトでは、法線を表示するとこのように青い線が頂点に対し外側を向いています。

↓法線の出し方
←[頂点の法線ON/OFF]:[面の法線ON/OFF]:(法線の長さ)の項目です。




一方エッジが出なかったオブジェクトはこのように頂点に対し内側を向いています。
見づらいのはどうしようもない…


(追記)法線を表示せずともバックフェースカーリングにチェックをいれることでも
面が裏返っているかどうか確認することが出来ます。(追記コメントありがとうございます)
裏向きになっている面は透明になります。





解決方法:法線を反転する

PMDEでも出来ますがBlenderでやったほうが後々楽ですよね
まず法線を反転させたい頂点を選択します。ここでは腕まくりの部分を全選択しておきます。
そしてCTRL+Fを押して面に関するメニューを出し、面を反転を選択。

これで法線が反転しました。PMDEに持って行けばエッジが出るようになります。

-------------------------------------------------------------------------------------
⑥その他
モーフありオブジェクトの一括適用プラグインを適用した後、シェイプキーが
・オブジェクト名.001
・[元々つけていたモーフ名]
と増えた場合、元々つけていたモーフにはシェイプキーが入っておらず増えたモーフの方に行ってしまう上に oldオブジェクトを消し、シェイプキーのリネームを行った後保存して再起動しないとPMX出力時にオブジェクトがダブって出力されて泣く

-------------------------------------------------------------------------------------

上でも書きましたが、随時追加していくと思います。ひとまずここまで。

Blenderは最初の操作がメタセコに比べとっつきにくい部分が多く、UIも最初は英語なので初めてモデリングに挑戦する人には難しい部分が多いと思います。
とはいっても初心者はBlenderやめておけ!というわけではなく、有志の方が様々な便利アドオン(プラグイン)を公開してくださっていたり、モデリング講座を公開していらっしゃる方が居たり、何より無料なので、私はBlenderをおすすめします。

このブロマガが少しでも私と同じようなつまづき方をした方の参考になれば幸いです。

それでは素敵なMMDライフ、モデリングライフを!

いろはん

2015/03/04 公開 さらっとまとめ