舌の移植
ぷれでたぁ様がセットアップされたモンテコア様の茨木華扇に、同じくモンテコア様の巡音ルカの舌を移植します。
華扇の舌も動きますが、ルカのほうが舌のモーフの種類が多いためこれを使用したいと思います。
まずルカの舌を取り出します。
材質で分かれていないので選択しづらいですが、カメラをうまく移動させて頭の中を覗きます。舌が見えたらどれか面を選択し CTRL+X を押すと舌だけが選択されます。
入り組んだモデルの場合は、どるる様のUVエディタ(http://bowlroll.net/up/dl15244)を使用すればUV展開図から頂点が選択できますので簡単かもしれません。
ルカのモデルから今選択した舌だけを残して削除します。
要するにこの頂点の選択状態を反転すれば良いのですが、PMXEditorに該当するコマンドが見当たらなかったのでスクリプトを書きました。
[PMDE]選択頂点を反転する
舌が選択された状態でスクリプトを実行すると、選択状態が反転されて舌以外が選択されますので、そのまま SHIFT+DELで削除します。
頂点は舌だけが残りました。あとはボーンや剛体、ジョイントなども不要ですので削除します。ただし、頭ボーンは舌がウェイトとして持っていますので残しておきます。モーフも舌に関係ないものは削除します。
結果として各オブジェクトはこのような風になります。これでルカの舌の準備は終わりましたので、モデルを別名で保存してPMXEditorを終了します。
次に華扇をPMXEditorで開き、ルカのときと同じように舌を選択します。この舌はルカの舌と置き換えることになりますので座標を覚えておきます。舌が選択された状態でオブジェクト操作パネルを開き、値指定タブで重1ボタンをクリックすると選択された頂点の中心座標が求まりますのでこの値をメモしておきます。
値を記憶したら、そのまま舌をCTRL+DELで削除します。
次に先ほど準備したルカの舌を追加読み込みします。
ルカは背が高いですので舌の位置が華扇とは合っていないのがわかります。追加読み込み時に同名ボーンのマージをすると自動で位置を調整してくれるかとも思いましたが、このあたりの仕組みはよく判りません。一度ちゃんと調べる必要がありそうです。
ここでは先ほどと同様に舌の位置を知ら得て、先ほど得た舌の座標との差分だけ移動します。
余談ですがPMXEditorの中身を調べていて気が付いたのですが、このオブジェクト操作パネルの移動や回転といったボタンをShiftキーを押しながら右クリックすると値を0に初期化してくれます。CTRLキーだと反転ですね。こういうのってどこかにマニュアルが書かれているのでしょうか?
移動の X, Y, Z に差の値を入力して移動ボタンをクリックすると華扇の元あった舌の位置に移動されました。
次は材質変更です。
ルカの舌を読み込みましたので、舌に割り当てられている材質は未だルカのもののままです。
材質リストに華扇本来の材質である「顔」と、追加読み込みしたルカの「顔」が登録されています。
モンテコア様のモデルの場合、顔のUVは共通であることが多いですので材質を結合するだけで対処できます。リストから両方の材質を選択し、右クリック>材質の材質の結合を実行します。
最後にモーフの結合です。
モーフを確認します。みると、もともとあった「あ、う、え、お」といったモーフと後から追加した舌のモーフが別々に登録されています。これはメニューから編集>モーフ>同名モーフのマージを実行してまとめて終わりです。
以上、舌についてはボーンを入れても良いのですが、モーションでは結局使わないことが多いですので舌はモーフだけでも十分かもしれません。
華扇の舌も動きますが、ルカのほうが舌のモーフの種類が多いためこれを使用したいと思います。
まずルカの舌を取り出します。
材質で分かれていないので選択しづらいですが、カメラをうまく移動させて頭の中を覗きます。舌が見えたらどれか面を選択し CTRL+X を押すと舌だけが選択されます。
入り組んだモデルの場合は、どるる様のUVエディタ(http://bowlroll.net/up/dl15244)を使用すればUV展開図から頂点が選択できますので簡単かもしれません。
ルカのモデルから今選択した舌だけを残して削除します。
要するにこの頂点の選択状態を反転すれば良いのですが、PMXEditorに該当するコマンドが見当たらなかったのでスクリプトを書きました。
[PMDE]選択頂点を反転する
舌が選択された状態でスクリプトを実行すると、選択状態が反転されて舌以外が選択されますので、そのまま SHIFT+DELで削除します。
頂点は舌だけが残りました。あとはボーンや剛体、ジョイントなども不要ですので削除します。ただし、頭ボーンは舌がウェイトとして持っていますので残しておきます。モーフも舌に関係ないものは削除します。
結果として各オブジェクトはこのような風になります。これでルカの舌の準備は終わりましたので、モデルを別名で保存してPMXEditorを終了します。
次に華扇をPMXEditorで開き、ルカのときと同じように舌を選択します。この舌はルカの舌と置き換えることになりますので座標を覚えておきます。舌が選択された状態でオブジェクト操作パネルを開き、値指定タブで重1ボタンをクリックすると選択された頂点の中心座標が求まりますのでこの値をメモしておきます。
値を記憶したら、そのまま舌をCTRL+DELで削除します。
次に先ほど準備したルカの舌を追加読み込みします。
ルカは背が高いですので舌の位置が華扇とは合っていないのがわかります。追加読み込み時に同名ボーンのマージをすると自動で位置を調整してくれるかとも思いましたが、このあたりの仕組みはよく判りません。一度ちゃんと調べる必要がありそうです。
ここでは先ほどと同様に舌の位置を知ら得て、先ほど得た舌の座標との差分だけ移動します。
余談ですがPMXEditorの中身を調べていて気が付いたのですが、このオブジェクト操作パネルの移動や回転といったボタンをShiftキーを押しながら右クリックすると値を0に初期化してくれます。CTRLキーだと反転ですね。こういうのってどこかにマニュアルが書かれているのでしょうか?
移動の X, Y, Z に差の値を入力して移動ボタンをクリックすると華扇の元あった舌の位置に移動されました。
次は材質変更です。
ルカの舌を読み込みましたので、舌に割り当てられている材質は未だルカのもののままです。
材質リストに華扇本来の材質である「顔」と、追加読み込みしたルカの「顔」が登録されています。
モンテコア様のモデルの場合、顔のUVは共通であることが多いですので材質を結合するだけで対処できます。リストから両方の材質を選択し、右クリック>材質の材質の結合を実行します。
最後にモーフの結合です。
モーフを確認します。みると、もともとあった「あ、う、え、お」といったモーフと後から追加した舌のモーフが別々に登録されています。これはメニューから編集>モーフ>同名モーフのマージを実行してまとめて終わりです。
以上、舌についてはボーンを入れても良いのですが、モーションでは結局使わないことが多いですので舌はモーフだけでも十分かもしれません。
ちょっとしたスクリプト
ちまちまとモデルを改造中。モデルはモンテコア様の華扇です。改造とは言っても、ぷれでたぁ様がセットアップされたモデルとマージしたり、ごにょごにょしたりですとかその程度ですが。さて、最近たいした更新もできていませんのでネタ埋めにモデル改造の中でちょこちょこと作ったスクリプトを幾つか掲載します。
[PMDE]材質名読み込みスクリプト
最近PMXEditorに移行したのですが、どういうわけかPMD形式のファイルを読み込んだとき、モデルと一緒に配布されている材質リストを読み込んでくれません。おかげで材質名が「材質~」となって不便ですのでスクリプトを書いてみました。CSScriptを開いて、簡易形式にぺたりと貼り付けて実行します。(なにが原因なんでしょう?)
[PMDE]指定した名前が含まれるボーンを削除
私がモデル改造をするとき、最初にするのは不要なボーンの削除です。特にアダルトな動画にスカートが要らない事が多いですので(折角作ってくれたモデラーさんスミマセン!)ごっそり削除してしまいます。もちろんスクリプトを書き換えればスカート以外にも使えます。
[PMDE]関連するボーンが存在しない剛体を削除する
ボーンを削除すると、そのボーンを参照していた剛体があれば不正な剛体となってしまいます。そんな剛体を削除します。
[PMDE]接続剛体のないJOINTを削除する
剛体を削除したのならその剛体を参照していたJOINTはそのままにしておくとVMDViewやMMDが異常終了してしまい、作業中のファイルが消えてしまうという恐ろしいことになってしまいます。不正なJOINTは忘れずに削除。または剛体やJOINTを触る前は忘れずにデータの保存が基本です。
恐らくPMDEditorでモデリングをするひとは同じようなスクリプトを書いたりしているのでしょうけど、公開とかされているのかな?
稚拙なスクリプトで恥ずかしいですが、ひとまずblogの穴埋めに……
gistの表示が変ですので、記事公開後にちょこちょこ弄ります。
[PMDE]材質名読み込みスクリプト
最近PMXEditorに移行したのですが、どういうわけかPMD形式のファイルを読み込んだとき、モデルと一緒に配布されている材質リストを読み込んでくれません。おかげで材質名が「材質~」となって不便ですのでスクリプトを書いてみました。CSScriptを開いて、簡易形式にぺたりと貼り付けて実行します。(なにが原因なんでしょう?)
[PMDE]指定した名前が含まれるボーンを削除
私がモデル改造をするとき、最初にするのは不要なボーンの削除です。特にアダルトな動画にスカートが要らない事が多いですので(折角作ってくれたモデラーさんスミマセン!)ごっそり削除してしまいます。もちろんスクリプトを書き換えればスカート以外にも使えます。
[PMDE]関連するボーンが存在しない剛体を削除する
ボーンを削除すると、そのボーンを参照していた剛体があれば不正な剛体となってしまいます。そんな剛体を削除します。
[PMDE]接続剛体のないJOINTを削除する
剛体を削除したのならその剛体を参照していたJOINTはそのままにしておくとVMDViewやMMDが異常終了してしまい、作業中のファイルが消えてしまうという恐ろしいことになってしまいます。不正なJOINTは忘れずに削除。または剛体やJOINTを触る前は忘れずにデータの保存が基本です。
恐らくPMDEditorでモデリングをするひとは同じようなスクリプトを書いたりしているのでしょうけど、公開とかされているのかな?
稚拙なスクリプトで恥ずかしいですが、ひとまずblogの穴埋めに……
gistの表示が変ですので、記事公開後にちょこちょこ弄ります。
頂点くっつけスクリプト
モデルの改造……挿げ替えですが……をしていて、メタセコイアで言うところの頂点吸着移動のような頂点移動がPMDEditorでも欲しくなったので書いてみました。標準機能かスクリプトで既にありそうですが探すより書いた方が早いこともありますので。何より息抜きになります。
頂点を別の頂点とくっつけたい。でもPMDEの選択頂点の結合を使用すると両方の頂点の位置が変わってしまう。そういう時に使用します。PMDEの近接頂点の結合機能に似ていますがちょっとだけ動作がが違います。繰り返し作業のとき、そのちょっとした違いが負荷になることが多いですのでコマメにスクリプトを作っておくと後々ラクになります。
事前にスクリプトファイルをPMDEのCSScriptに読み込ませておくか、ビルドしてプラグイン化しショートカット登録しておきます。
まずは移動させたい頂点を選択します。そしてスクリプトを実行します。
すると選択した頂点が、それぞれ一番近い頂点に引っ付きます。この時「絞り込まれている材質の頂点」「選択頂点以外」「いちばん近い頂点」に引っきます。ウェイトも引っ付き先に合わせます(ただしSDEFは未対応です)。また頂点は移動しただけですので、最終的には近接頂点の結合をしないと動かしたときにエッジが出たりすると思います。思った先の頂点に移動してくれない場合は、あらかじめ頂点を移動して近づけておきます(意味ないですね!)
Download
認証キー tracebox1010
頂点を別の頂点とくっつけたい。でもPMDEの選択頂点の結合を使用すると両方の頂点の位置が変わってしまう。そういう時に使用します。PMDEの近接頂点の結合機能に似ていますがちょっとだけ動作がが違います。繰り返し作業のとき、そのちょっとした違いが負荷になることが多いですのでコマメにスクリプトを作っておくと後々ラクになります。
事前にスクリプトファイルをPMDEのCSScriptに読み込ませておくか、ビルドしてプラグイン化しショートカット登録しておきます。
まずは移動させたい頂点を選択します。そしてスクリプトを実行します。
すると選択した頂点が、それぞれ一番近い頂点に引っ付きます。この時「絞り込まれている材質の頂点」「選択頂点以外」「いちばん近い頂点」に引っきます。ウェイトも引っ付き先に合わせます(ただしSDEFは未対応です)。また頂点は移動しただけですので、最終的には近接頂点の結合をしないと動かしたときにエッジが出たりすると思います。思った先の頂点に移動してくれない場合は、あらかじめ頂点を移動して近づけておきます(意味ないですね!)
Download
認証キー tracebox1010
SKBボーン解説
SKBボーンの使用例動画を申し訳程度に。
私は100フレーム未満の短いループ動画を作ることが多く、そんなときに活用しているのがこのボーン構造のセットです。なにか解説動画は作りたいと思っていたのですが、どういう解説にしたら良いかまとまらなかったので、ひとまず簡単な使用例から。
最初は前後から挟むものを作り始めてたのですが、複雑になりそうでしたので単純な騎乗位動画にしています。よく見えるように背面騎乗位ですね。
動画でのポイントは、以下の通りです。
説明が下手なので(仕事でもホワイトボードプレゼンとか苦手です)うまく伝わっていない可能性がありますが、少しずつ補足していければと思います。
[広告 ] VPS
私は100フレーム未満の短いループ動画を作ることが多く、そんなときに活用しているのがこのボーン構造のセットです。なにか解説動画は作りたいと思っていたのですが、どういう解説にしたら良いかまとまらなかったので、ひとまず簡単な使用例から。
最初は前後から挟むものを作り始めてたのですが、複雑になりそうでしたので単純な騎乗位動画にしています。よく見えるように背面騎乗位ですね。
動画でのポイントは、以下の通りです。
- 1.IKの特性について
- SKBボーンで使用している顔IKや腕IKは、センターや身体を動かしても追従せず、その空間上に残り続けようとします。ポーズを付けようとするとすぐ破綻してしまうので、正常にボーンが動作していないと捉えかねられません。その説明として、その動作は正常であるということを示そうとしています。
- 2.繰り返しモーションについて
- 単純な上下運動をサンプルとして採用しましたが、上下の繰り返しであっても緩急が必要であることを示そうとしています。動画では「突く」「引く」の2アクションの繰り返しですが、こだわるのであれば「溜め」を入れても良いかもしれません。また、多段化したセンターで上下運動に変化を付けるのも良いです。
- 3.顔IKについて
- センターと顔IKだけで「それっぽい」モーションになることを示そうとしています。それっぽく見えていれば良いのですが……
説明が下手なので(仕事でもホワイトボードプレゼンとか苦手です)うまく伝わっていない可能性がありますが、少しずつ補足していければと思います。
[広告 ] VPS
モンテコア式博麗霊夢(鈴奈庵風)
モンテコア様の博麗霊夢が公開されました。
http://www.melonbooks.com/index.php?main_page=product_info&products_id=IT0000166227
大変可愛らしいモデルです。しかし、モンテコア様のルカモデルもそうでしたが、首の接続部分が気になる場合があるのでほんの少し修正したいと思います。
あまり表に出ることは無いのかもしれませんが、頭を極端に曲げると接続部分の隙間ができてしまいます。向こう側の髪の毛が見えてしまっていますので、少しだけ気になります。
原因は、体側の頂点のウェイトと、頭側の頂点のウェイトが異なるため、変形しないうちは2つの頂点はくっついているのですが、変形を始めると2つの頂点は徐々に違った変形をはじめ、最終的には離れてしまうためです。
修正の方法はいくつかあるようですが、修正すべき頂点数は20いくつかですので、手作業で修正してしまいます。
ここまでが前準備です。この状態からスキマが埋まるように修正していきます。
この選択した頂点に対応する頭側の頂点は、ボーン番号6番と7番にそれぞれ0.5ずつウェイトが塗られていました。しかし体側の頂点は若干中途半端な値となっています。これがスキマが生じる原因になっていますので、頭側のウェイトと同じ割合で塗ることにします。
正規化ボタンを押すと両方とも0.5になったと思います。ここで改めてTransformViewを確認すると、先ほどまで離れていた2つの頂点がくっついています。これを首の回りの頂点をぐるりと繰り返します。
でもやっぱり面倒ですね。
http://www.melonbooks.com/index.php?main_page=product_info&products_id=IT0000166227
大変可愛らしいモデルです。しかし、モンテコア様のルカモデルもそうでしたが、首の接続部分が気になる場合があるのでほんの少し修正したいと思います。
あまり表に出ることは無いのかもしれませんが、頭を極端に曲げると接続部分の隙間ができてしまいます。向こう側の髪の毛が見えてしまっていますので、少しだけ気になります。
原因は、体側の頂点のウェイトと、頭側の頂点のウェイトが異なるため、変形しないうちは2つの頂点はくっついているのですが、変形を始めると2つの頂点は徐々に違った変形をはじめ、最終的には離れてしまうためです。
修正の方法はいくつかあるようですが、修正すべき頂点数は20いくつかですので、手作業で修正してしまいます。
- PMXEditorで霊夢モデルを読み込みます。
- TransformViewを開き、隙間が判るように変形させます。
- TransformViewの表示形式をワイヤー追加表示にします。
- 他、下図にあるように頂点を選択可能にします。
- ここで一旦Pmx編集のメイン画面に戻って、頂点タブを選択しておきます。
ここまでが前準備です。この状態からスキマが埋まるように修正していきます。
- TransformViewでスキマが気になる箇所の下側の頂点を選択します。選択された頂点はオレンジ色になると思います。
- CTRLキーを押しながらXキーを押します。
- ここでPmx編集のメイン画面を見ると、先ほどTransformViewで選択した頂点の情報が表示されていますので、ボーンウェイトを修正します。
この選択した頂点に対応する頭側の頂点は、ボーン番号6番と7番にそれぞれ0.5ずつウェイトが塗られていました。しかし体側の頂点は若干中途半端な値となっています。これがスキマが生じる原因になっていますので、頭側のウェイトと同じ割合で塗ることにします。
- ボーンウェイトの最初の欄に0.5と入力する。
- 正規化ボタンを押す。
正規化ボタンを押すと両方とも0.5になったと思います。ここで改めてTransformViewを確認すると、先ほどまで離れていた2つの頂点がくっついています。これを首の回りの頂点をぐるりと繰り返します。
でもやっぱり面倒ですね。