2018年06月26日

小ネタ (PMXエディタ)

たまには小ネタでも。内容的には今更な話ばかりですが、何故か未だに周知されていない不思議...

■ パーツ選択表示
まずはダメパターンから
●チェックリストからポチポチやる
0102.jpg

リストから一つ一つ探すのは非常に効率が悪い操作です。リストチェックから選択するのは "対象が判明している場合" だけにしておきましょう。

※PMXエディタは OS標準の(古い) UIを使って全て実装していますが、チェックリストUIはあまり触りたくない標準UIです (イベント挙動が謎?/カスタマイズが面倒etc)

●推奨操作1
0103.jpg

面選択を使った昔ながらの絞り込み方法。面の選択により対象材質の確認もすぐにできます。複数材質でも問題ありません。

●推奨操作2
0104.jpg

最近の PMXエディタなら対象面は選択頂点でも反応します。[除]→[反] は Shift+なら一度の [除] 操作だけで OKです。こちらも複数材質でも問題ありません。

※そもそもの話、MMDでの描画パフォーマンスを最適化するなら、材質数はできるだけ少ない方が望ましいです。PMXはエディタでの仕様上、材質をパーツ単位として個別に取り扱えるようにしていますが、本来は細かく分ける必要はありません。エディタの基本機能でも [同一材質の結合] などが用意されているので、テスクチャUVや透過判定等問題なければ (リリース時などに) 結合して最適化しておくとよいでしょう。


■ 選択補助

0105.jpg


■ 視点操作設定の場所 (カメラリセット関連など)

0106.jpg

視点操作関係は右上操作アイコン内から表示されるメニュー内 (右クリック) に配置されています。通常のメニュー内にあるのは回転中心関連だけなので、リセットや操作ロックなどはこちらから設定する必要があります。


■ ボーン系列選択

0107.jpg


■ 100%ウェイト設定

0108.jpg

ユーザー方の動向を見ていると "ウェイトは塗るもの" みたいな固定観念をたまに感じますが、別にそんなことはないです。

単一ボーンへの全振り(100%)ウェイトなら、対象の頂点/ボーンを双方選んで Ctrl+M を押すだけで完了します (PmxViewメニュー:[ウェイト関連]-[選択頂点を近位置ボーンでウェイト設定]-[ボーン軸基準])

一々ウェイト描画状態にして → ボーンを選択して → 頂点を範囲ドラッグ... みたいな面倒な基本操作を経由する必要はありません。

対象ボーンが選択しづらい場合は絞込み表示や、本体リストからのボーン選択 (View側がボーン選択不可でも選択可) などを併用するとよいでしょう。


■ ボーン軸ウェイト設定

0109.jpg

ボーン軸ウェイト設定 (Ctrl+M) で複数のボーンが選択されていた場合は、ボーン列からできる空間軸にしたがってウェイトが自動配置されます。

※元々の機能がこっちで、全振りはそれを特定状況で利用している形です。

機能としては、腕や指、髪などの円筒状に対して系列ボーンが内包されるような形状を想定しています。さらにこの状態から接合部に対してのブレンド描画([>>>])で、ざっくりとウェイト設定ができるようになっています。

0110a.jpg

0110b.jpg


とりあえず動けば十分、という程度のウェイト付けならこの手順だけで OKです。

●ブレンド描画 :
指定範囲の開始位置と終了位置に一番近い頂点のウェイト (と指定方向) を基準にして、範囲内を連続的な混合ウェイトに設定します。

画像の例だと 水色と青 がそれぞれ 100%で交差している範囲を指定しているので、互いが 0〜100% になるような、なだらかなウェイト変化に設定されます。

100%ウェイト以外でも使用できますが、あまり望ましい結果にはならないと思います (想定は、ボーン軸ウェイト設定との組み合わせで簡素なウェイト設定が楽にできるように、という程度)

なお、同 [>>>] 枠内の [ウェイト範囲] と同じように、指定位置によっては意図しない頂点に編集が及ぶことがあるので、その場合は絞込みや選択頂点によるマスキングなどで対応する必要があります。ブレンドの場合は対応ボーンが異なっていれば一応大丈夫なはずではありますが...


■ 2ボーン同時ウェイト描画

2ボーンウェイト (BDEF2) の場合、下地を 1ボーン分塗って、次のボーンにしてさらにウェイトを上から塗って... とか、そういう旧来の編集方式に従う必要はありません。

0111.jpg

元々 BDEF4用として拡張した機能ですが、ウェイト値を直接指定できるケースはこの機能だけでだいたい賄えます。

最近の PMXエディタなら各部位のボーン選択は以下のような仕様になっています (ボーンリスト欄上での右メニューから Indexコピーでも選択可)

0112a.jpg

0112b.jpg


■ モーフ編集時のアーカイブ利用

モーフ編集方式変更後、アーカイブが利用できなくなった? という話をどこぞやで見た気がしますが、特別に考える必要もなく単に本体側のアーカイブ機能を使えばいいだけです。

モーフ編集や変形同期など、PmxViewの現在の状態が特定の編集状態になる場合、本体側の操作は "その編集状態に対して適用される" という仕組みです。

0113.jpg



とりあえずこんなところで...(キリガナイ

エディタ関係の使い方を調べても古い時代 (PMDエディタ) の情報が真っ先に出てきてしまい、後に効率化された機能 (PMXエディタやプラグインなど) への更新はなかなか進みません。

まあ編集ツールに限った話ではありませんが、個別の機能ヘルプをネットの検索システムに頼る弊害の一つかもしれませんね。

なおエディタに限らず、やたら古いverで TIPSや機能解説をしている場面がたまにありますが、正直意図がよくわかりません。情報を発信する前にそのときの最新版なのか確認した方がよいでしょう (特に過去版に対して悪態なんかついていたりすると...)


以上

posted by - at 20:17| PMX | 更新情報をチェックする

2017年10月29日

0254

■更新内容

・仮想軸モード
・仮想軸表示
・オブジェクト操作機能の改定
・TransformViewの一部機能更新

以上


基本的な編集機能の拡充/改変は正直あまりやる気ないんですが、Switchが(店頭で)全然買えなくてアレなのでその腹いせに... (Switch版の繋ぎ目的で買った3DS版FE無双もそろそろコンプしてしまいそう)

というわけで謎な編集機能がまた一つ増えました。

●仮想軸

いわゆるローカル軸?的な編集仕様です。なおボーンのローカル軸設定などとまぎらわしいので用語は変更。

とりあえず PmxViewのハンドルアイコンの右に [v軸] というのが増えているので、ONにしてボーンや剛体などを選択してみるとよいでしょう。

仮想軸モード中はハンドルや子窓内の操作が指定した軸でおこなわれます。各オブジェクトの選択時に自動的に軸設定をする機能もあります。

----
・主な自動設定形式
[対象が単数]
頂点 : 法線
面 : 面法線(複数面の場合平均方向)
ボーン : 表示先(無効な場合親方向) ※設定で制限軸やローカル軸にも変更可
剛体/Joint : 対象の向き

[同一形式の対象が2つ]
対象位置を結ぶベクトル方向

[それ以外(3対象以上や混在状態など)]
実軸方向
----

その他、軸の任意設定や詳細などは [動:オブジェクト操作] 子窓の下に [軸指定] というタブが増えているのでそちらから。

一応、軸向きはハンドルの回転部分や子窓の回転操作(ドラッグ/値設定)を Altキー併用で操作することでも変更可能です(仮想軸モード時のみ)

仮想軸を表示(ドラッグ移動可)すると Z軸が逆方向になっているのが気になる方もいるかもしれませんが、MMDや PMXエディタに多少の造詣があれば理由はおのずと解るでしょう。

●オブジェクト操作機能の改定

ドラッグ操作欄(SRTタブ)の回転の順序が上から [X][Y][Z] に変更されています。合わせてドラッグ操作が横方向に統一(基本は右が+/左が- ただし標準状態はハンドルの操作方向に合わせて適宜変更されています)

従来は軸(XY)が画面の横/縦に対してほぼ同じ向きあることから操作感を合わせていましたが(それゆえ横方向操作に相当する Y軸回転が上側配置)、仮想軸の導入で対応関係も意味をなさなくなったので、リセットして全項目を同一の操作方法に変更しました。

※以前の配置及び操作方向に戻すことも一応できますが(操作子窓上でCtrl+Rなど) 推奨はしません。

Shift/Ctrl/Alt キー併用による操作もいくつか変更になっています。詳細はドキュメントを参照してください。

※値指定のボタン上で Shiftや Ctrlを併用した右クリックを行うと対象項目の初期化などが以前からできましたが、
・初期化が Shiftから Ctrlへ変更
・旧Ctrl併用の負数変換が破棄(負数(逆方向)設定は操作時のShift併用へ移管)
となっているのでご注意ください。合わせて他の同系入力でも Shift/Ctrl併用操作などが変更になっているものがあります。

といってもまあ 「そんな機能があったことをそもそも知らん」 という方がほとんどでしょうが...

●TransformViewの一部機能更新

各変形操作をオブジェクト操作子窓と同系統に設定。ドラッグ方向は上下のままですが、初期化やオフセットのShift+/Ctrl+などは変更されています。

他にメニューに、

[ローカル軸無視] : ハンドル向きにローカル軸設定を反映しない
[ベクトルコピー(クリップボード)からボーン位置設定] : ベクトルコピーによる選択対象ボーンへの位置設定

などが増えています。ボーン位置設定はうまく使えばパーツ合成時の位置合わせなどが多少楽になるかも?(強制的に位置設定されるので割と簡単に不正な変形状態になりますが)


以上、今回の更新でした。


----
11/1 追記:
一部ドキュメントに不備があったのでこちらで先に訂正

■旧操作系(※非推奨機能)
誤) ドラッグ操作の回転が[Y][X][Z]になり、2段目のドラッグ方向が横方向になります。
正) ドラッグ操作の回転が[Y][X][Z]になり、2段目のドラッグ方向が方向になります。

他にも冒頭部をずっと直し忘れていたようですね。
●動作対象
誤) Windows XP以降(32bit/64bit) ※推奨環境(=開発環境)は Win7-64bit及び32bit
正) Windows XP以降(32bit/64bit) ※推奨環境(=開発環境)は Win10-64bit

あとドキュメント書き忘れで、ハンドルのメニュー(ハンドル上で右クリック)の最下部に [状態] というのが増えています(主に仮想軸関連用)

メニュー内にハンドル向きを XYZ角(度) で保存/復元できる項目があるので、一時的に仮想軸の向きを外部のテキスト欄(メモ帳など)で記憶しておくことができます。

※[動] の仮想軸機能だけだと軸向きを一時的に保存/復元するのはちょっと大変

■テキストコピペによるベクトルコピー利用

ベクトルコピー関連を使ったことのない方は馴染みがないかもしれませんが、ベクトルコピーにより複数値が外部のクリップボードにも同時に登録されています("1,2,3" みたいなカンマ区切り数値)

逆にテキスト欄から数値をコピーしてベクトルコピー対応欄の [クリップボードから〜] などからエディタ側に設定することもできます。

例えば仮想軸を Y軸 = 45度回転した軸 にしたい場合は、"0,45,0" とメモ帳などに書いてテキストコピー(必要なのは" "内) → ハンドルメニューから設定、とすれば手早く軸の設定が可能です。

※仮想軸を選択対象から指定値にしておかないと、次に別の対象に切り替えると軸が変わってしまいますけどね(要注意点)

他にもオブジェクトの位置設定(PmxView上でCtrl+V)などにも応用できたりするので 「こういう機能がある」 程度には知っておくとよいでしょう。


posted by - at 20:35| PMX | 更新情報をチェックする

2017年07月20日

0252

■更新内容

・開発環境をVS2017へ移行
・モーフ編集の改修
・不具合修正

以上


0251も不具合修正版が随分と積まれているので、とりあえず ver上げておきます。

●開発環境移行

開発環境を VS2013から VS2017へ移行。ただし参照する VC++ランタイムは 2013のままなので、更新の必要は特にないかと思われます。

また .NETも4.0で変更なし。4.5なら async/awaitで非同期処理が楽に書けるとか、4.6以降だと 64bit版の動作が(かなり?)改善されたりするとか利点も色々ありますが、その他のランタイムとの整合性や 「動かなくなったー><」 とかの面倒ごともまた色々出てきますのでね...

※.NET4世代は 「実行時に OS側にインストールされている最新版を利用する」 という仕組みらしいので、64bit版を利用される方は .NET4.6以降を入れておくとよいでしょう(Win10なら標準で構築済み)

●モーフ編集の改修

主な改修点としては、
----
■選択頂点をモデル形状位置へ移動 (モーフ編集窓:[編集]メニュー内)

頂点の位置初期化は 0251の仕様で正常です(以前の専用編集窓の動作の方がむしろ不良)

モデル形状の方に合わせる(戻す)方法は 同0251で実装された [個別記憶] 機能で自由に行えるので特に不要かと思っていましたが、操作手順も少々多いので専用処理をメニューに追加しておきました。

それにしても両目閉じから片目閉じモーフを作成するのに、わざわざモーフ編集から片側を初期化して新規モーフを追加するとか、随分と面倒な手順をとっておられる方がいるようで...

PMDエディタ時代からある機能ですが、[絞](:絞込み表示) に選択した頂点を別モーフへ分割する機能が搭載されています。

1. [絞]
2. [頂点/材質]タブ内で [頂点モーフ]を選択
3. 対象のモーフを 子窓リストから選択
4. 分割したい頂点を選択
5. 子窓のリスト上で右クリック→メニューから[〜分離]を実行
6. モーフリストから名称などを修正

両目から片目であれば、モーフリストから両目を一旦複製し、↑で分割すれば 1分もかかりませんよ。

※実際は両側の片目(頂点)モーフを用意して、両目モーフはグループモーフで統合した方がデータ容量的には多少節約になります。

■新規⇔既存や既存モーフ対象を変更した場合の最終形状を Undoへ登録

ちょっとした操作ミスから編集状態が初期化されてしまうケースがあるようなので、変更時に形状状態を Undoへ登録するようになっています。
例)
0251: 新規モーフ作成中、誤って既存モーフを押してしまう→形状が初期化→新規に戻しても作成中の状態に戻れない=消えてしまう
0252: 新規に戻した後に Undo(Ctrl+Z) で変更前の形状に戻る

既存モーフ編集中に別のモーフを選択して初期化されてしまった場合も同様の操作で戻せます。ただし途中でモーフ編集を終了したり Undoを挟んだ後に変更したりなどすると Undo内の形状データは消えてしまいます。

■モーフ編集終了時に編集内容がある場合、終了確認及びキャンセル選択

なんらかの形状編集状態が残っていると判断される場合(Undoバッファの初期化を挟むと正常に機能しません)、モーフ編集終了時に確認を行います。

状態によっては追加や更新直後にも出る場合があるかもしれませんが、問題なければ気にせず終了を選択してください。

■モーフの追加/更新を分離(既存モーフからの新規追加可能)

0251は追加/更新が一つのボタンでしたが、分離されています。既存のモーフ編集から新規に別のモーフを作成することができます。

「更新したつもりが別のモーフ追加してた」 みたいなケースもあるかもしれませんので、その辺はユーザーが責任を持って選択してください。

合わせて既存モーフの名称とパネル位置をモーフ編集上でも変更(要更新)ができるようになっています(あまり意味はありませんが)

■モーフ編集時のTransformViewの表示を正常化

0251ではモーフ編集中は TransformViewの状態が "モーフonモーフ" みたいな不正な状態で表示されていましたが、一応改善されています。
----
といったところです。他に一部の編集手順でモーフの更新に失敗するケースへの対応などもしてあります。

余談: どこぞやで 「最新版は SubViewに [動] がなくなった」 とか見かけたときは目が点になりましたが (PMDエディタ時代から[動]:オブジェクト操作 が付いたことは一度もありません/一体どういうクラック版使ってたんだか...とか思わざる)、エスパーするにも話のベクトルがあっち方向すぎでは流石に理解が追いつきません (件の話は以前の頂点モーフ編集窓のことのようです...)


以上、今回の更新でした。

posted by - at 20:43| PMX | 更新情報をチェックする