2016年04月19日

0235

■更新内容

・SDEF高速化/スケール対応
・ラベルジャンプ(0232c以降)
・MR選択(オブジェクト操作)のShift+/Ctrl+操作
・子窓位置の相対固定(親窓との位置同期)
・子窓表示位置のカーソル合わせ(Shift+)
・鏡像判定の領域モード
・鏡像対象の任意固定化

以上


不具合修正ついでに各部の見直しをしてたら色々と気になったので、いくつか修正しておきました。

● SDEF高速化/スケール対応

PMXエディタ以降の SDEF変形は自分で色々弄って勝手にカスタマイズしていたりします。一応、変形結果はほぼ違いの出ないようにしているので、テスト環境としては大丈夫だと思いますが。

今回もその一環で、計算を端折れそうな部分を削って高速化(計算量的に 2〜3割程度)、ついでに SDEFにスケールを加えると正常に変形していなかったので、その対応をしておきました。

※MMDではボーン変形にスケールを加えることはできないので、対応自体はさして重要なことではありません。

SDEFのスケールは [編集]-[SDEF変形のスケール有効] を ONにすると機能します(計算量が結構増えます)。

余談ですが、ボーンのスケール変形は倍率が XYZそれぞれ等しい設定以外ではうまくいかないケースがほとんどです。BDEFや QDEFでも同様なので、嘘パースモデルの作成や各部位の微調整などでスケールを利用する場合は注意しておきましょう(Xに倍率入れて[→]ボタンで設定推奨)

● ラベルジャンプ(0232c以降)

例:頂点のウェイト欄右にあるボーン名を(左)ダブルクリックすると、当該ボーンに表示が移動します。その後 Ctrl+Qで元の表示場所へ戻ることもできます。

対応はリドミに一通り書いてあるので、詳細についてはそちらを参照してください。

修正版の頃から入れてある機能なので(リドミ追記済)、既にお気付きの方もいらっしゃるかと思います。

● MR選択(オブジェクト操作)のShift+/Ctrl+操作

オブジェクト操作子窓の MR選択時に Shiftキー及びCtrlキー併用で選択分に追加、削除ができます(選択ガイドと同一仕様)

Shift + MR -> 現在の選択状態へ追加して選択
Ctrl + MR -> 現在の選択状態から記憶分を選択削除
Ctrl + MS -> 選択対象がない場合 記憶分を消去(クリア)

● 子窓位置の相対固定(親窓との位置同期)

とりあえず PmxViewで適当に子窓(表示設定など)を表示して、PmxViewのウィンドウを移動してみれば、どういうものか解るかと思います。

同期させたくない場合は Shift併用で親ウィンドウを移動してみてください。サブ画面や TransformViewなどでも色々設定されていますが、状態検証や 本体→PmxView、PmxView→TransformView など、あえて独立させているものもあります。

今更感の強い新?仕様ですが何故か 「実装できない機能」 として無意識下に埋没してたっぽいです。実際のところは実装も大して難しいわけでもなく...何事も無意識な思い込みというのは厄介なもののようですね。

※PMDエディタ時代の初期の頃に一度試みたような記憶がうっすらありますが、その時にうまくいかなかったのか別の作業で中断したのか...今となっては謎デス

● 子窓表示位置のカーソル合わせ(Shift+)

位置同期処理により不意に子窓が画面外へ出てしまうことがあるかもしれないので、表示場所を現在のマウスカーソル位置へ固定できるようになっています。

メニューやツールバーからの表示時に Shift併用で機能します(Shift+F1とかは別のショートカット判定にされるので×)

※右ボタンを押しながら表示(左クリック)するとマウスカーソル側が子窓位置へ移動する、という機能も以前から入っていたりします(使わない)

● 鏡像判定の領域モード
● 鏡像対象の任意固定化

オブジェクト操作子窓の 「鏡像モード」 の右側に 「鏡像固定(領域)」 という(チェック)ボタンが追加されています。

従来の鏡像操作は処理速度の問題から 1 対 1 の関係でしか機能しないようにしていましたが、領域から対象を判定することで 1 対 多 のような関係でも鏡像操作ができるようになります(かわりに領域内はすべて鏡像対象とみなします)

パターンとしては、

1. 鏡像元の対象を選択
2. [鏡像固定(領域)] を押す(チェック状態になる(枠色変化など)/鏡像モードも ONになる)
3. ハンドルや操作窓から操作編集(2.で固定した鏡像側も同時に操作されます)
4. [鏡像固定(領域)] をもう一度押す(非チェックに戻る/鏡像モードOFF)

というようなものが想定されます。選択前に鏡像固定を押しても鏡像対象が何もない状態になるだけなので、操作の順番に注意してください。

一応、鏡像判定を領域指定に強制することもできますが(操作子窓の[編集]-[鏡像設定]メニュー内参照)、環境によっては酷いことになるかもしれませんので、基本的には手動による鏡像設定を推奨しておきます。

※「何が変わったのかよくわからない」 という方は、簡易プリミティブから箱(立方体)を作成して、片側の頂点を鏡像モードで移動してみるとよいでしょう。

● その他

細かい不具合修正や、パースOFF時のカメラ初期化(右ダブルクリック)が TransformViewなどで正しく機能していなかった点などが修正されています。あと TransformViewのFPS表示にフレーム経過時間[ms]を表示できるようになっています。


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

世の中災害で色々大変な昨今ですが、そういう時こそ普段と変わらない生活を心掛けつつ、また普段よりも多少多めにお金を使っていこうかと思います(とりあえず SIMフリーのスマホを一つ買ってみました)

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

2016年04月01日

5年

PMX作ってからもう 5年らしいですね。参考>>2年とちょっと裏話

というわけでお久しぶりのブログ記事です。最近は特に書くネタもないのでここも長いこと放置していますが、一応ちょこちょことまとめ的なものなどを(ry

それにしても、本家 MMDも既に 8年を超え未だ現役のようで 「随分と息の長いものになったなぁ」 と驚くばかりです。

さすがに(5年もそのままですし)技術的には時代遅れな面も目立ちますが、まあ趣味的な用途に限ればまだまだ十分かもしれませんので、今後も自由に楽しんで遊んで頂ければと思います。

以上
posted by - at 19:49| PMX | 更新情報をチェックする

2015年10月02日

テクスチャ名の話

したらばでちょっと話題になってたので、ブログのネタにでもしておこうかと思います。

PMXやPMDのモデルデータではモデル(*.pmx/*.pmd)が、外部のテクスチャファイル(*.pngなど)を参照しているのはご存知かと思います。

このテクスチャファイルですが実は 「ファイル名を日本語で指定するとうまく動作しない」 というケースがたまにあります。

モデルファイルやモデルデータ内の各部分は日本語表記でも特に問題はないのに、何故テクスチャファイルだけが例外なのか?...と、この手の問題に慣れていない方などは不思議に思われるかもしれませんが、

理由としては単純に 「テクスチャファイルの読み込みは DirectXの専用処理を使っている」 からです。

例えば DX9のテクスチャロードでは D3DXCreateTextureFromFile 関数 などを使うのが定番ですが、この処理で指定するファイルパスは(デフォルト設定では)日本語などの2バイト文字に対応していません(使用文字によっては別の記号として認識されてしまう)

※ファイルパスはフルパスで指定する場合がほとんどなので、本来フォルダ名にも注意が必要です。

また 2バイト文字への対応を正しく設定していた場合でも、DirectXの内部処理も同じように対応して(正しく)動作しているかどうかはわかりません。

基本的にベースライブラリを作成している方たちは 「半角英数(7bit)だけで事がすむ」文化圏の方たちですし、昨今ではユニコード対応なども当たり前になりましたが、DX9が作られた頃はまだそうでもない時代でしたので。

※そもそもライブラリではなく呼び出し側に実装ミスがあることもよくあります。

そういった内部の事情から 「テクスチャファイル名の問題」 ということが表面化するわけです。


その他の名称やファイルパス部分で特に問題になることはない理由も同様に、

・PMXエディタやMMMなどの.NETフレームワークベースのアプリケーションはユニコード仕様になりほぼ問題が出なくなった
・MMDなどのネイティブアプリでも作成者が日本人などの多バイト圏の方なら(自身の処理部分では)大体対応済み

ということだからです

※.NETフレームワークから呼び出しているDirectXも結局はネイティブ側の処理に繋がっているので、問題が出ることはよくあります(Xファイルのロードとか)

今でも海外(特に欧米系)のネイティブアプリでは日本語指定でたまに問題が起きたりしますが、このあたりは自分たちで対応していくしかありません(=日本語使わない)

それにしても日本語のファイル名に関する問題とか、こんな風に古いシステムの名残による問題がひょこっと顔を出すと、「ファイル名なんてちょっと前は 8+3 文字(英数のみ)が当たり前だったのになぁ」 みたいにちょっと郷愁的な気分になりますね(笑)


以上


※PMDの各部位やパス指定などの文字列データは特定の容量制限があるので、昨今の PMXから入った方などは特に注意しておきましょう(アトVMDハ今デモ15byte制限アルヨ、キヲツケテ)

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