読者です 読者をやめる 読者になる 読者になる

チリペヂィア

リンクフリー。サンプルコードなどは関連記事内でライセンスについて明示されない限り商用利用なども自由に行って構いませんが、自己責任でお願いします。またこれら日記内容の著作権自体は放棄していません。引用部分については引用元の権利に従ってください。

自作メタセコプラグイン UVTexIntegra

作りました。オブジェクト中で、[0.0,1.0]のフルサイズにマップされたUV情報を、それぞれ任意のサイズに拡縮平行移動、任意のマテリアルに変更します(一応画像も統合します)。

とりあえず先行アルファ版ですが、気になった方はどぞどぞ。
UV and Texture Integration Tool (UVとテクスチャを統合するプラグイン)
移設先:UVTexIntegra (SourceForge) / Download

操作手順

モデルを用意します。

UVを[0.0,1.0]のフルサイズでマップしてあります(分かりやすいようにマテリアルごとに色分けしてあります)。

マテリアルごとに配置を設定していきます。ついでに別の一つのマテリアルに統合する「マテリアルの変更」も設定していきます。

変換実行!(*1

面が指定のマテリアルに変更され、UVがお引越し、テクスチャ画像が統合されています。

いわゆるワンパスレンダ用の、UV座標・マテリアルが1つに統合されたオブジェクトを出力するためのツールです。おさらいするとこんなところ。

  • UV変形情報はグリッド上でマウス操作するだけで設定できます。
  • 元データが吹っ飛ぶのはたいてい嫌なので、オブジェクト複製後に変換するモードがあります(個人的には複製変換ONがデフォルトのつもりです)。
  • 変形情報を元にテクスチャ画像を統合する事も出来ます
  • 背景オブジェクトや建物、幾何学的な模様の物体など、無機物をローポリで作るのに向いてます。
分かりにくいところ

テクスチャ統合は、元マテリアルと変更先マテリアルの両方に有効なテクスチャが設定されていないと動きません。とくに変更先マテリアルのテクスチャ画像サイズを読み取って書き込むので、サイズがゼロの変な画像などではうまく動かないかもしれません。

現状で怪しいところ

.Netライブラリを使っているため基本的にデカい重いメモリつぶすの三重苦です。またテクスチャを統合する部分は総じて挙動が安定しません。とくに画像形式の変換やら出力やらはgdiplus(Windows標準の画像処理機能)にお任せしているのですが、同じ処理を繰り返しているだけでも時々バグります。あんまり多発するなら対応形式をpngに絞ってでも安定したc言語用のライブラリを使おうか悩んでいます。ただ運が悪くても統合先の画像が飛ぶくらいなんですよね。

改版予定

先行アルファなのでまだまだ方向性検討の途上となっております。

  • 変更先マテリアルの画像サイズがゼロの時に元マテリアル画像のサイズや変形情報から逆算して適当に作ってしまうように。
  • 変更先マテリアルの画像パスが設定されていない時に適当なファイル名で作ってしまうように。
  • 変更先マテリアルの画像パスが存在しないパスの時に勝手に作ってしまうように。
  • スケール/移動/パディングの変更操作で、マテリアル複数選択時の一括編集に対応する
  • 頂点色の焼き込みとかやってみたいなー。
  • 実行時コンパイルとか使ってプログラマブル頂点色の焼き込みとかやってみたいなー。

*1:現在の仕様では、変換後に一回オブジェクト設定画面を開き、OKボタンを押さないと、追加と更新がオブジェクトパネルに反映されません。古いプラグイン開発環境を使っているからかもしれません。ここが改善できるかは現在調査中です。