【覚書】PmxEでNaNが入っちゃうやつ

PmxEはプラグインでやったときとか、TransFormViewから変形した時とか、
なんかふとした時に、jointの値に「NaN」が入ってしまうことがある。
当然ながらちゃんとした数値ではないので、動かすとアババババってする。
でもこれPmxEの「PMXデータの状態確認」では引っかからない。
(ファイル>PMXデータの状態確認で、△や✕がついてると正常に動かない可能性があるので、
 モデルが完成したぞい!と思ったら配布する前にチェックするといいよ。
 あと配布モデルをもらってきておかしいな?と思ったらここからチェックするといいよ。)

「PMXデータの状態確認」で引っかからないの、モデラー(セットアッパー)としては結構やっかいで、
知らないうちにデータがアウトになってるのやめて欲しい。
(知らないうちに軸制限が狂うのもやめて欲しい)

チェックするプラグインが欲しいよね、という話があったので作った。
もうちょっと手直しして一般配布します。


プログラミングとかやってない人には分からないと思うので一応説明すると、
NaNというのは、まあなんだ、簡単に言うと
「プログラム上は数値として扱うけど、正常でない数値」 のことだ。
0を0で割るとか、虚数(2乗すると-1になるやつ)とかね。
なので正常でない角度を指定されてもMMDくんが混乱するのでアババババってなるんですけど。


--ここからプログラミングの話なので読まなくていいです。--

で、このNaNが入ってしまったPmxデータをもらったんですけど、
jointの数値をC#で取り出す場合って、型はfloatなんですよ。

角度制限下限は
this.PMX.Joint[i].Limit_AngleLow
でV3で取り出せるんですけど。

スマートにやる方法が分からなかったので、
float.IsNaN(this.PMX.Joint[i].Limit_AngleLow.X)
でTRUE/FALSEをチェックしてみたんですけど、全部FALSE。
(jointは変数に入れてるので、いちいちthis.PMX.Joint[i]とは書いてないです。大丈夫です。)

で、メッセージボックスで該当のjointインデックスの値を表示してみると、ちゃんとNaNと表示されるんですね。
でもメッセージボックスはstring型なので、stringに型変換して入れてるんですけど。

最終的に
this.PMX.Joint[i].Limit_AngleLow.X.ToString() == "NaN"
で、TRUEになりました。
お前string型だったんかーーーーい。

っていう。
float型の中にstring型のNaNって入れられるものなの??
というかこれは無理矢理stringにしてるだけで、floatのNaNとして扱ってるの?
いや、扱ってないよな?IsNaNでFALSEでもんな??

jointをcsvコピーしたら確かにそのままNaNって入ってたので、
薄々stringじゃないかなこれ…とは思ってたんですけど、まさかなーと思ったし、
この値取り出してきたらfloatだよ!!って怒られた(VSEに)ので、最初にIsNaNにしたんですよ!


私はプログラミングド素人なのでなんか間違ってたら教えて下さい。


ということで、チェックはできるようになったので、
あとはNaNが入ってる所を自動的に"0"に置き換えるかどうかのチェックボックスを作ります。
ダイアログ出して選択した結果をもらってくるの死ぬほど苦手なので、ダメだったら2種類同梱します。
Class間の数値のやり取りの概念が未だにわからないんだ。
ミニキャラプラグインどうやって作ったんだろう。
横jointプラグインもダイアログで選択するようにできなくて2種類同梱した。

とりあえずやりたいことだけを場当たり的にできるように独学してるとこれだよ。
誰か分かりやすく教えてくれ。

【モデリングtips】まぶたボーン導入のススメ

その1: 【モデリングtips】顎ボーン導入のススメ
その2: 【モデリングtips】眉毛ボーン導入のススメ

>>まぶたは難しいよ<< マジで。

なんせ自分も未だに勘でやってる。

もともと、「眼球って球体」→「じゃあまぶたも回転運動しないと眼球を貫通する」→「ボーンモーフじゃん!」
という流れで始めたんですが、ボーンの位置調整が難しい難しい。
ウエイトは慣れてきたけど、目の形がキャラによって違うので、
「笑い」モーフまでボーンで作れたモデルは、未だに1体だけです。
なので、「まばたき」はボーンモーフ、「笑い」は頂点モーフでやってます。

遊ぶのは楽しいよ!
左がデフォルトで、右がまぶたボーンでツリ目にしたやつ。
(ただしこのままではまばたきは破綻する)
DObN8HOUMAA4bid.jpg DObQLDHVwAEJuAQ.jpg

あとまぶたをボーンにしておくと、視線IKと連動させて色々できる。(楽しい)
171113.gif





続きを読む

【モデリングtips】眉毛ボーン導入のススメ

前回「顎ボーン導入のススメ」を書いたんですが、難易度から言ったら眉毛の方が先でした。
←難しい [ 瞼 >>> 口角 >> 顎 >>> 眉毛 ] 簡単→

一番簡単なんですが、眉毛のモーフの形にこだわりがある人には向かないかも。
そういう人はモーフはモーフで入れておいて、
ボーンもついでに入れておくとやれることが増えるかなーみたいな気持ち。

モーフ作るの超絶めんどくさいマンには向いてます。
つまり私。
これくらいはできるよっていうサンプル(クリックでちょっと大きくなる)。
左から、デフォルト、真面目、困る、にこり、怒り。
171112_01.jpg 171112_02.jpg 171112_03.jpg 171112_04.jpg 171112_05.jpg
もちろん上下もできる。
左右バラバラに動かすのは、モーフが多くなりすぎるので入れてないですけど、ボーンを動かせばいい。


続きを読む

【モデリングtips】顎ボーン導入のススメ

商業モデルでもそうなんですが、モデルによって、
口パクはしても顎は微動だにしないものと、顎ごと口が動くものとあります。
手描きアニメの場合はコスト削減もあるし慣れもあるのか、そんなに気にならないんですが、
個人的に3Dは顎から動くモデルが好きです。

それを簡単にするために、顎ボーン。
あと顔の頂点モーフを作るのが面倒過ぎる。

続きを読む

【blender tips】ウエイト転送の仕方

blenderで別のオブジェクトのウエイトを指定のオブジェクトに転写する方法。

・ウエイト転送ボタンを押すと、この設定が出てくるので、「名前」「全レイヤー」「置き換え」に変更する。
DMV77NjUIAE5Rl3.jpg

・転送する側をオブジェクトモードで選択。
・ウエイトを移す側をshift選択。
・ウエイトを移す側をウエイトモードにする。
・ウエイト転送ボタンを押す。

この状態でウエイトは移っているが、各頂点に全ウエイト分の設定が乗っているので邪魔なのを処理。

・ウエイトクリアボタンを押す
・ウエイトが乗ってるボーンだけが頂点に残る。

すっきり綺麗にウエイト転送完了。
プロフィール

のののP

Author:のののP
絵描いたり動画作ったり歌ったり3Dモデリングしたりゲームしたり。

■ニコ動
mylist/2325248
■youtube
nononoP00
■Pixiv
id=141058
■連絡
opm_niconico○yahoo.co.jp
○→@

MMD配布系まとめ
PMDE講座まとめ
blender tips

配布物以外の無断使用禁止。

商用利用、商業依頼については上記連絡先までメール下さい。

カテゴリー
アーカイブ
ブログ内検索
リンク
RSSフィード