PmmDump モーション取り出し
MMDで動画作成作業をする際に前から欲しいと思っていたちょっとしたツールを書いてみました。まだまだ不具合は多いと思いますので暫定的な公開です。
私はMMDで動画を作成する際、動画を作りながら頻繁にモデルを更新して入れ替えています。
その度にモーションを保存し、モデルを削除→変更したモデルを読み込み→モーションを再度読み込み……といったことをするのですが大変煩雑で、モーションを保存しそこなっていたりといったミスも多くなります。
また、MMDはモデルのバージョンが合わないとpmmファイルが開けなくなりますので、作成が一段落したら動画内の各モデルのモーションをVMDに書きだすようにしているのですが、これも少し面倒でついつい先延ばしにしているうちに忘れてしまい、次にpmmを開こうとしたときにはもう開けなくなってしまっているといったことも数多く経験しています。恐らくMMDを使用されている方の多くが体験していることでしょう。
そんな作業の負荷を軽減するためのツールを書いてみました。
使い方は簡単。コマンドラインからプログラムにpmmファイルを指定して上げるだけです。
するとpmmファイルと同じ場所に日付付きのフォルダを作成し、その中にVMDファイルを出力します。
まだ作り立てですので不具合は多いかもしれませんが恐る恐る公開します。
Download
認証キー tracebox1108
私はMMDで動画を作成する際、動画を作りながら頻繁にモデルを更新して入れ替えています。
その度にモーションを保存し、モデルを削除→変更したモデルを読み込み→モーションを再度読み込み……といったことをするのですが大変煩雑で、モーションを保存しそこなっていたりといったミスも多くなります。
また、MMDはモデルのバージョンが合わないとpmmファイルが開けなくなりますので、作成が一段落したら動画内の各モデルのモーションをVMDに書きだすようにしているのですが、これも少し面倒でついつい先延ばしにしているうちに忘れてしまい、次にpmmを開こうとしたときにはもう開けなくなってしまっているといったことも数多く経験しています。恐らくMMDを使用されている方の多くが体験していることでしょう。
そんな作業の負荷を軽減するためのツールを書いてみました。
使い方は簡単。コマンドラインからプログラムにpmmファイルを指定して上げるだけです。
C:\PmmDump.exe C:\MMD\えっちな動画.pmm
するとpmmファイルと同じ場所に日付付きのフォルダを作成し、その中にVMDファイルを出力します。
まだ作り立てですので不具合は多いかもしれませんが恐る恐る公開します。
なぞの白い液体のつくりかた
PMXEditorのみで液体を作れないものかと考えてみました。
私は動画に液体をよく使用しますが、その液体モデルの作成をPMXEditorのみでできないものかと考えてみました。また、その使い方もふくめて解説動画にしてみました。
液体モデルは用途に合わせて物理演算を組み込んだもの、IKを組み込んだもの、制御ボーンを複数持つものなどありますが、ここでは簡単なモノを例としています。実際に私が今使っている方法とは異なりますが何かの参考になればと思います。
今回初めてナイフ機能を使いました。普段はモデリングソフトにはメタセコイアを使用していますので、編集作業はPMXEditor上ではあまり行いません。PMXEditorも素晴らしいツールソフトですが、込み入ったモデリングを行うのであれば専用のソフトを使用した方が数十倍の効率が得られると思いますので、PMXEditorに固執する必要はないと思います。
[広告 ] VPS
しかしエンコードされた動画を見るとフレームレートが随分落ちているように見えますね。エンコードのことはよくわからずツールに任せていますが難しいですね。
私は動画に液体をよく使用しますが、その液体モデルの作成をPMXEditorのみでできないものかと考えてみました。また、その使い方もふくめて解説動画にしてみました。
液体モデルは用途に合わせて物理演算を組み込んだもの、IKを組み込んだもの、制御ボーンを複数持つものなどありますが、ここでは簡単なモノを例としています。実際に私が今使っている方法とは異なりますが何かの参考になればと思います。
今回初めてナイフ機能を使いました。普段はモデリングソフトにはメタセコイアを使用していますので、編集作業はPMXEditor上ではあまり行いません。PMXEditorも素晴らしいツールソフトですが、込み入ったモデリングを行うのであれば専用のソフトを使用した方が数十倍の効率が得られると思いますので、PMXEditorに固執する必要はないと思います。
[広告 ] VPS
しかしエンコードされた動画を見るとフレームレートが随分落ちているように見えますね。エンコードのことはよくわからずツールに任せていますが難しいですね。
[TOHO MMD]DRUNK HERMIT
舌の移植
ぷれでたぁ様がセットアップされたモンテコア様の茨木華扇に、同じくモンテコア様の巡音ルカの舌を移植します。
華扇の舌も動きますが、ルカのほうが舌のモーフの種類が多いためこれを使用したいと思います。
まずルカの舌を取り出します。
材質で分かれていないので選択しづらいですが、カメラをうまく移動させて頭の中を覗きます。舌が見えたらどれか面を選択し 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の表示が変ですので、記事公開後にちょこちょこ弄ります。