2012年

6月

04日

【Blender】pmdの表情出力に対応しました

ShapeKeyを頂点モーフに変換して出力が出来るようにしました。

で、今回から表情出力をするために出力条件を追加しました。

 

●従来までの出力条件

・メッシュは必ずアーマチュアの影響下にあり、頂点グループを設定してること(必須) 

 

●追加した出力条件

・アーマチュア影響下のメッシュオブジェクトは一つだけにすること(必須)

下図のような構造が望ましいです。

メッシュがアーマチュアの影響下にない場合は出力対象外になります。

また、下図のようにメッシュが複数存在する場合は最初のメッシュのみを出力対象とします。

 

メッシュが複数個のものは、出力前に一つにまとめておいてください。

さて、表情出力で表情の種類(目、口等)の区別の方法ですが、下図をご覧ください。

このように、それぞれのShapeKeyの名前に表情の種類名を付け加えています。

出力時にはこの名前で表情の種類を識別するようにしました。

 

●名前の付け方

(表情の種類名)+ : + (表情名) 必ず半角の:で区切ること

 

●種類名一覧

Eye → 目の表情として判別

Eyebrow → 眉毛の表情として判別

Lip → 口の表情として判別

Ather → その他の表情として判別

 

出力の際は、「:」で区切った後ろ側の文字列を名前として認識し出力します。

 

表情種類名をつけていない、もしくは認識できなかったShapeKeyは全て「その他」の表情として扱われて出力します。

 

pmdインポーターでは表情をShapeKeyへ変換する際に表情の種類名をつけるようにしていますが、「名前に手を加えずそのままの状態で使用したい」という要望があったので、インポート-画面で種類名追加をOn/Offで切り替えられるようにしました。

デフォルトはOnに設定しています。表情名に種類名を追加したくない方はここのチェックを外してください。

 

デフォルトをOffの状態にしておきたい方は、スクリプトフォルダの「mmd_tools.py」ファイルを開き64行目の「def_morph」の値を「True」から「False」に変更してください。

前回いったとおり、次はvmdモーションの読み込みを実装しようと思います。

どのくらいで完成するかはわかりませんが、気長にお待ちくださるとうれしいです。

 

最後に・・・

最近更新が多くてすみません。なるべく更新をもっとまとめるように気をつけます。

コメントをお書きください

コメント: 10
  • #1

    iRi_E (火曜日, 05 6月 2012 17:18)

    初めて使ってみました。不具合報告と要望があります。

    不具合1: 64bit Linux 環境ではpack()/unpack()でエラーになる

    pack('<L', value) のように、byte order, size, alignmentの指定文字「<」を入れれば大丈夫でした。

    不具合2: エクスポート時に超点数の上限を超えてしまいエラーになる

    複数の面に共有される頂点が全て別々の(重複する)頂点として出力されるようです。

    要望1: オープンソース化

    現在のnon-freeな使用条件では制限が多すぎて、ちょっと扱いづらいです…

    要望2: バージョン番号を付けて欲しい

    バージョンがわからないといろいろ不便です。VCSのリポジトリを公開すれば、リビジョン番号が付くし、ダウンロード時の手間も省けるのでいいと思います。

    以上よろしくお願いします。

  • #2

    ze10 (火曜日, 05 6月 2012 18:35)

    >>iRi_E様
    ご報告ありがとうございます。

    >不具合1について
    64bit環境下でデバッグをしたことが無かったので知りませんでした。申し訳ないです。次回から指定文字をつけるようにします。

    >不具合2について
    MMDとBlenderの仕様の違い(頂点UVと面UV)により、簡単に出力が可能な今の方法を取っています。なので重複頂点が生じるのも仕様になっています。とはいえ、頂点数の制限オーバーのことは考えていませんでした・・・

    出力方法を変えることは可能ですが、おそらく今の状態より出力速度が遅くなると思います。また、現在ほどではないにしろ若干の重複頂点は生じると思います。

    >要望1について
    一応これでオープンソースのつもりでいました・・・
    このスクリプトで作ったものは自由に公開していただいてかまいませんし、ソースも自分で使う範囲では改変していただいてかまいません。

    掛けている制限は「スクリプトの再配布」と「商用目的での利用」の2つですが、どちらかの活動での利用をご希望なのでしょうか?

    >要望2について
    開発当初から付けていなかったので今までずっと怠っていました。ソースコードにはversion明記はしてたんですけど、やはりわかりづらいですよね・・・

    わかりました。次回から対応させていただきます。

  • #3

    iRi_E (火曜日, 05 6月 2012 19:11)

    早速のお返事ありがとうございます。

    > 点数の制限オーバーのことは考えていませんでした・・・

    いくつか手元にあったpmdファイルをimport/exportしてみたところ、ほとんどのモデルは頂点数が制限を超えてしまいexportできませんでした。

    > 一応これでオープンソースのつもりでいました・・・

    どちらの制限ものオープンソースの定義には反しています。Wikipediaが参考になると思います。

    http://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3%E3%82%BD%E3%83%BC%E3%82%B9

    オープンソースソフトウェアでないと、例えばBlenderの本家に取り込まれる可能性がなくなるとか、Linuxのパッケージ化ができないとか、公開にGithub等が利用できないとか、いろいろ問題が出てきますので、Blenderと同じライセンス(GPL v2 or later)か、少なくとも衝突しないライセンスにすることをお勧めします。

    個人的には、Ubuntu用のBlenderのパッケージを置いているリポジトリにpmdインポーター/エクスポーターのパッケージも置きたいと思っているので、オープンソースな(かつ変換精度の高い)ものを探しているところです。

    https://launchpad.net/~irie/+archive/blender

    あと、Readme.txtの文章が曖昧で分からなかったのですが、商用利用の制限はスクリプトの利用についてなのか、作成したモデルの利用についてなのか、どちらでしょうか。もし後者なら、作成したモデルを公開するときは商用利用を制限したくないので困ります。どちらにしてもオープンソースの定義には反していますけど…

  • #4

    iRi_E (火曜日, 05 6月 2012 19:21)

    バージョン番号については、配布するファイル名を

    mmd_scripts-1.1.1.rar

    のようにしていただけると、バージョン番号がすぐに分かりますし、ダウンロード時のファイル名の重複も避けらるのでありがたいです。

  • #5

    ze10 (火曜日, 05 6月 2012 19:30)

    >頂点数の制限について
    やはり問題があるようですね・・・
    わかりました。出力方法を検討しなおしてみます。

    >商用利用について
    曖昧な表現ですみませんでした。これはスクリプトの利用についての制限です。製作物に関してのその後の利用方法については口出しするつもりはありません。

    >オープンソース化について
    すみません。私のライセンスについての知識が乏しいもので・・・確かにOSDの定義には当てはまらないですね。
    この件については少し検討させていただきます。

  • #6

    Blender使い (火曜日, 05 6月 2012 21:36)

    ze10さん更新ご苦労様です。
    それから要望聞いてくださりありがとうございます。
    VMDインポーターはマイペースでお進めください気長に待ってます。

    質問をひとつ。
    BoneのObject DataのIK SolverをiTaSCにしてるのはどうしてなのでしょう。

  • #7

    ze10 (火曜日, 05 6月 2012 21:41)

    >>Blender使い様
    理由ですか?特に無いですよ。
    実際、「iTaSC」と「Legacy」の違いが私にはよく分かりません。
    パラメータを見る限り、「Legacy」にするほうがいいんでしょうけど。

  • #8

    iRi_E (火曜日, 05 6月 2012 22:08)

    度々すみません。

    shapekeyの "Ather" という単語を初めて見たんですが、"Other" のtypoですか?

  • #9

    ze10 (火曜日, 05 6月 2012 22:12)

    >>iRi_E様
    すみません///
    その通りです・・・

  • #10

    Blender使い (木曜日, 07 6月 2012 18:26)

    >Ze10さん
    >実際、「iTaSC」と「Legacy」の違いが私にはよく分かりません。

    同じだ^^;

    「iTaSC」にするとIKのパラメータが「Legacy」とは違うので、
    MMDの仕様の兼ね合いで変えてるのかと思ってました。