System.Windows.Formsの覚書【PmxEプラグイン】

前にどう書いたか見ても思い出せなくてしぬ。

合ってるのか合ってないのかすらわからない手探りのやり方をメモしておかないと覚えてない。

・基本的な処理はmain.csに記述してある。
 直接呼び出して処理させるだけならここで完結する。

・Fom1.csでフォームのOKを押した時に、main.csの処理を実行して欲しい。
 プラグインのForm1を開いたまま別のボーンを選択してまた処理させたいので、
 ポチポチできるようにしたい。

・main.csは動くことをPmxEで確認済み。

・Form1.csにOKボタンを設置、押したらOKを出すように設定。
this.button1.DialogResult = DialogResult.OK;

【Form1.csの記述】
前に作ったプラグインを見るに、
・namespaceは全て共通にしておかなければならない。
・自動で作成されるnamespaceの下は「 public partial class Form1 : Form 」だけど、
partial class Form1: System.Windows.Forms.Form
{
public Form1(CSScriptClass 名前)
}
になっている。
なんかここで、名前を分割しておくとなんかうまくいく。
CSScriptClassがmain.csで書いてあるpartial classの名前なので、
別に読み込んだりする時は多分ここを変えないといけないんだと思う。
(ここまで自分で勝手に判断していることで書いているので、参考にしない方がいいです)

main.csに
using (var m_form = new Form1(this))
{
if (m_form.ShowDialog() != DialogResult.OK) return;
{何かの処理}
}
と書くと、OK以外が返ってきた時に何が起こるかを記述できる。
たぶん。

あ!できた!すごい!!

つまり、ボタンからどのpartial classをやらせるかを記述する訳じゃなくて、
そもそも動いてるのがmain,csでその途中でformが開かれて、
ボタンでどういうものを発したかを受け取ってるのかな…。


困ってること。
・OKを返した時にはwindowを閉じないで欲しい。
→label1で冒頭を指定しておいて、最後にgoto label1;で返る。

・formが開いてる間に、Pmx編集画面がさわれない。
→「モーダルフォーム」と言うらしい。
 「モードレスフォーム」で開くといじれる。

usingを使うとフォームが閉じちゃうのはモーダルフォームのせい?みたい。
(参考:http://www.itlab51.com/?p=2446

怒られた。
nnn3661.jpg
うーん。form1はthis.Visible = false; って書いたんだけどなぁ。

何がダメなんだよぅ、とメソメソしていたが、よく見たら、
if (m_form.ShowDialog() != DialogResult.OK) return;
って書いてあった。
.ShowDialog() って。
モーダルは→.ShowDialog()
モードレスは→.Show()

でもDialogResultはhowDialog() でしか受け取れないっぽい。

わからん、無理。

【PMXE講座】UV展開とポリゴンの切れ目の関係

PmdとPmx(以下Pmx)の仕様のお話。

UV展開の仕様は各モデリングソフトによると思いますが、
blenderのUV展開は、エッジを選択して「ここUVの切れ目だよ!!!」と指定する方式です。
(エッジ選択→ctrl+E→Mark Seam)
データ上は「切れ目入れている」というのではなく、
「ここが切るラインだから」という印を付ける感じです。
実際のエッジどうしは離れていないため、周りのポリゴンから切り離されるようにUVのラインを付けても、
つながっている面の一括選択では、周りと一緒に繋がっているものとして選択されます。

これがPmxにエクスポートすると変わります。
エクスポートすると変わる仕様は、まあこれもソフトによるのですが、
代表的なのは
・四角ポリゴンが自動的に三角ポリゴンになる。
・マテリアル(材質)設定ごとにポリゴンが切り離される。
・UVの展開ラインが切り離される。
の3点だと思います。

四角ポリゴンは、3D業界でも「四角ポリゴン信者」と揶揄されたりもしますが、
実際モデリングにおいては、三角ポリゴンを多用するよりも、
できるだけ四角ポリゴンでモデリングした方が、色々とやりやすいです。
blenderで言うと、エッジの選択は三角になっている所で途切れますし、
ポリゴンのループカットも、三角でストップします。
一番四角がいい、と言われるのは、Subdiv(Subdivision=細分化)を使用した時の分割結果です。
(この辺は豆知識として、後は適当にググって下さい。)

ただし、Pmxは四角ポリゴンではなく三角ポリゴンなため、
エクスポーターが自動的に三角ポリゴンに変換してくれるのですが、
場合によって、表のポリゴンと裏のポリゴンの三角の割り方がクロスしてしまう場合があります。
例えば、コートの表面のポリゴンは[/]なのに、裏地は[\]に割れている場合です。
正面から見ると、裏面と表面で[×]という状態になっていると、
ボーンで動かした時に、折れ方が裏と表で異なり、裏地が表に飛び出してしまいます。
(コートは両面表示にする、という手もありますが、裏地に模様がある場合もある)
この場合は、予め、モデリングソフトの方で三角ポリゴンに変換しておいた方が後々楽です。
(エッジ編集ツールというプラグインがあるので、PmxEで編集することもできますが、
 何度もエクスポート→微修正を繰り返すなら、面倒なので三角ポリゴンにしてしまいます)

話が逸れました。

・UV展開ラインが切り離される。
という点です。
blender上でUV展開ラインを作っても、実際のポリゴンはくっついているので、
面選択もできますし、エッジ選択もできます。
しかしPmxにエクスポートすると
展開ラインで切り離される
 =展開ラインには、全く同じ座標に頂点が2つある(エッジも同じ位置で重なっている)
という状態です。
材質設定も同じで、材質を設定した面はそこでエッジが切り離されています。

つまり一枚の繋がった面の中で、
UV展開ラインをたくさん刻めば刻むほど、
材質分けをすればするほど頂点がその分増えます。


これはある意味便利で、UVを切っておきさえすれば、PmxEで接続面選択(ctrl+Xだっけ?)で、
そこの面だけ選択して編集することもできます。


そして気をつけなければいけないのが、近傍頂点の結合です。
ダブってる頂点があるだろうからくっつけちゃえーとか、
頭と首を切り離して作ってたからくっつけちゃえーとか、
とりあえず全部選択してくっつけちゃえーとかすると、
U V が 狂 い ま す 。

これは推測でしかないのですが、恐らくPmxの仕様として、
繋がっているポリゴンのUVを切ることはできないのだと思います。
UVが切れている=ポリゴンが離れている
ポリゴンをくっつける=UVもくっつけるね!
ということだと思います。
頂点の結合をしたらダメ、という訳ではなく、材質やUVが分かれているところは気をつけましょう、ということです。


じゃあ首と頭の境目はどうやったらいいの?というところですが、
A:予めモデリングツール側でくっつけておく
B:PmxEで境目の重なっている2頂点を選択して法線の平均化を行う
の2種類あります。

UV展開や材質設定でエクスポート時に面が離れるのと、
予めモデリングツール側で面を離しておくのはどう違うのか、というと、
主に「法線の向き」が違います。
法線はその面が光を反射する向きの事だと思っておいてください。
(これ以上はググって下さい)
blender上で面が繋がっていると、法線はそれに合わせて滑らかに変化します。
(画像左2つ)
130312_01.jpg
つまりこういうカキっと曲がっているものでも、光のあたり方(影の出来方)を滑らかにすることで、
ぬるっとした角に"見せかけてくれる"訳です。
ローポリモデルでもそんなにカクカクして見えないのはこのお陰です。
画像右は、上の面と側面を予め切り離しておいたものです。
上面と側面はパキッと切り離されていますが、側面は繋がっているのでカクカクしていません。

メタセコは確か、角度何度以下だったら法線をなめらかにしない(エクスポート時も)設定があったと思いますが、
blenderの場合(私の使っているエクスポーターの場合)は自力で切り離す必要があります。

頭と首の頂点座標は同じだけど、ポリゴン的には切り離して作っている場合は、
おそらくこれと同じで、法線の向きが揃っていない=滑らかになっていないので、
切り離しているラインでパキッとした線が出ます。
なので、Aの予めくっつけておく、は簡単に言うと法線がなめらかな感じになってくれるので良い感じ。

Bは、PmxEには法線を編集する方法([動]ボタンで出てくるタブの中に法線がある)ので、
これで滑らかに見えるように法線を揃えればいいわけです。
ただし1頂点ずつしか編集できないのでめんどくさいです。
選択面の法線の平均化は、選択している面の法線を平均に揃えるので、
切り離している所を全部選択すると、やるとわかりますが、そうじゃないの!!!ってなります。


逆に考えると、ロボや機械、家具、無機物、などは、予め切り離しておくことで、パキッとさせることができます。
立体機動装置のブレードは最後にやろうと思って忘れました。

【PMDE講座】IK影響下の子にボーンをつけたい時

標準ボーン構造でIK影響下になっているのは、両足、両膝、両足首ボーンです。
人によって髪の毛をIK制御していたり、チェーンなどをIK制御していたりする場合もありますが、
よく当たる壁が、ブーツの紐です。

そして多分これはPMXでの場合で、PMDだとまた仕様が違ったと思います。
PMDとPMXはIK影響下の親子関係、回転連動の仕方が違うので、注意してください。
以下すべてPMXの話です。

まずIKとIK影響下、MMDにおけるこれらの扱いの話をします。


続きを読む

 【MMD講座?】ののの式フォルダ整理法

MMDのフォルダ内がカオスだよ!という人が多いので、
私のフォルダ整理法を書いておきます。

ただし、MMDは作りかけのPMMなどは、フォルダを移動すると、
モデルがないよ?とかステージがないよ?エフェクトないよ?アクセないよ?
と聞いてくるので、一番最初にやっておくか、
過去のPMMは諦めて整理をし始めてください。

DLして適当にぶっこまないこと。
そうすると後で後悔します。

続きを読む

【PMXE講座】追加UVの作り方

サブテクスチャとして、PMXから追加UVが使えるようになりました。
テクスチャの上にさらにテクスチャを重ねる、という感じです。
ちなみにそのまま乗るのではなくて、乗算として処理されます。

フォトショップやSAIのレイヤをもう一枚作って乗算にした感じです。
お絵描きソフト使う方には理解しやすいかと。

01. モデル情報の追加UVを1にする。
 (モデル名や説明を書くところの上にある)
02. 追加UVを入れたい材質を絞り込み。
03. 絞り込んだ頂点を選択(全選択でも部分選択でもやりたいことに合わせて)。
04. 選択頂点>UVコピー>追加UV1
05. 絞り込んだ材質のスフィアの所に追加テクスチャを入れる。
06. スフィアのファイル名の右側の、乗算とかの所をサブTexに。

これで追加テクスチャが乗算で入ります。
顔に落書き、傷、服に模様、影などを描くのが楽になると思います。

これをUVモーフにしたい場合は、普通のUVモーフと同じ。
UVが2つになるので、それなりに重たくなるようです。


ただ短所もありまして、サブテクスチャ以外にスフィアを設定していると、
そちらの設定が反映されます。
つまり、顔にはサブテクスチャ、髪には加算スフィアを設定していると、
顔のサブテクスチャも加算スフィアとして処理されてしまうことがあります。
つまりその材質が真っ白に表示される。

単体モデルの場合は、加算スフィアだけでなく、乗算スフィアが使われていれば、
相殺されるのか、大丈夫だったりします。

MMDに複数のモデルを読み込んだ場合は、
一緒に読み込んだモデルに加算スフィアが使われていると、
こちらのモデルにも影響を受けて、サブテクスチャが加算スフィア扱いになり、
その材質が真っ白になります。
BPn_2MZCQAAqjOD.jpgBPoASjtCMAENipr.jpg
これを防ぐには、先に乗算スフィアのあるモデルを読み込んでおき、
次にサブテクスチャのあるモデルを読み込む、という手があります。


しかし一般的には配布するモデルにこれを使うのは、
使い勝手的に難しいかな(特に初心者の方に対して)、と思い、
うちの配布モデルに仕込むのは諦めました。

ただ自分で使う用に改造するのは、普通のUVモーフよりも多分楽です。
特に傷口や血糊、服の模様などなど、元のテクスチャを損なうことなく、
上塗り(乗算)できます。

試しにやってみるのには面白いと思います。
(MMMに対応しているか、最新版のMMDでも同じ現象が起きるかは不明)

※スフィア欄がサブテクスチャ欄になるので、
 当然サブテクスチャを使いたい材質にはスフィアは使えません。
※別にサブテクスチャを使ったモデルは、他の材質にスフィアを使ってはいけない訳ではありません。
 乗算スフィアがあれば、大丈夫です。(多分加算だけだとやばい)

[追記(14.11.054)]
さらに、エクセレントシャドウ等のシェーダーをかけると、何故かサブテクスチャのUVが狂います。
鼻の穴をサブテクスチャで載せて、右がそのまま、左がエクセレントシャドウをかけたミカサ。
BRXn7ycCUAA7NxX.jpg
右はちゃんと鼻の位置に鼻の穴のテクスチャがありますが、左は鼻筋と右目の所にラインとして出ています。
個人的にはエクセレントシャドウ大好きなので、これはサブテクスチャ使うの厳しいなぁ…と。
プロフィール

のののP

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

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

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

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

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

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