美味しい焼き鳥屋さん

初心者による技術系のメモ

楽にUV展開をしたい!~「Ministry of Flat(MoF)」をBlenderで活用をする ~

はじめに

大嫌いなUV展開作業を楽にしたいです。
Blender4.3よりUVアンラップの手法に「アングルベース」のほかに「Conformal」、「Minimum Stretch」が追加されました。
4.3 — blender.org
前バージョンに比べて機能性が向上したものの、未だに満足がいきません。
(ハード系だとスマートUV展開で良いのですが…)
もっと楽かつ高品質なUV展開がしたいです。
そんな中、「Ministry of Flat」というツール及びBlenderとの連携方法を見つけたので記録します。

Ministry of Flat

概要

「Ministry of Flat」はEskil Steenberg氏により開発され、Quel Solaarとしてリリースされたツール及び技術群です。
Cinema4Dなどで知られるMaxon社によりライセンス取得され、2020年4月20日のCinema4D S22のアップデートの一部としてリリースされました。
Maxon社がライセンスを保持していますが、他社へのライセンス供与も可能な形で公開がされています。
出典:Maxonウェブページ

youtu.be

ライセンス形態

※原文を意訳しています。
正しい内容は公式ページを参照ください。

  • ソフトウェアをダウンロードして、任意のデバイスで実行できます。
  • ソフトウェアを使用して、趣味、学術、または商業目的で利用できます。
  • アンラップされたメッシュを販売、利用することは自由です。
  • 無料ライセンスでは、いかなる形でもソフトウェアを再配布できません。
  • 無料ライセンスでは、クラウドでソフトウェアを実行することはできません。
  • 無料ライセンスでは、AI/MLトレーニングには使用できません。
  • 無料ライセンスでは、SaaSの一部として機能を提供することはできません
  • ソフトウェアが役に立った場合はメールで教えてくれると嬉しいです。

カスタムライセンスを契約することで以下のことが可能です。

特徴

取り込んだモデル(ジオメトリ)から適切なアプローチを算出し、UV展開をします。
伸縮・継ぎ目を最小限に抑え、モデル全体のテクスチャ解像度を均一に保つための最適化を重視しています。また、テクスチャの向き(正しい方向)も重視しています。
Ministry of Flatは優れたUVアーティストの経験から数えきれないほどの特殊なケースやトリックを実装しています。

つまり、最適なUV展開を自動的に行うツールになります。

また、非常に特徴的なUIをしています。

これに対し、開発者であるEskil Steenberg氏は「楽しいからね!シンプルなものが欲しければコマンドラインツールを使ってね」と発言しています。

使い方

  1. zipファイルをダウンロード
  2. zipファイルを解凍
  3. 「Unwrap3.exe」を起動
  4. UV展開をする3dモデルをインポート(obj形式のみ対応)
  5. 作業が完了したら「Save」をクリックし、obファイルを保存

たったこれだけです。
SettingよりUV展開の細かい設定をすることができます。

同梱されている「UnWrapConsole3.exe」はコマンドライン上でMinistry of Flatを実行できるツールになります。「documentation.txt」に詳細な引数が記載されています。

GUIで制御した「Unwrap3.exe」のSetting項目と「UnwrapConsole3.exe」の引数は同様のためGUI上の項目が不明になった場合もドキュメントを参照することで問題解決できます。
(非常にわかりやすいドキュメントです)

設定項目

以下の内容はドキュメントの内容を意訳したものです。

一般的な設定
オプション名 説明 デフォルト値
`-RESOLUTION ` テクスチャ解像度(UVアイランド間の余白制御に使用) `1024`
`-SEPARATE ` ハードエッジをすべて分離(ライティングやノーマルマップ用) `FALSE`
`-ASPECT ` ピクセルアスペクト比(非正方形テクスチャ用) `1.000000`
`-NORMALS ` 法線を使ってポリゴンを分類 `FALSE`
`-UDIMS ` モデルを複数のUDIMに分割 `1`
`-OVERLAP ` 同一パーツを重ねて同じUVスペースを使用 `FALSE`
`-MIRROR ` ミラーパーツを重ねて同じUVスペースを使用 `FALSE`
`-WORLDSCALE ` UVを実寸スケールに合わせてスケーリング `FALSE`
`-DENSITY ` `WORLDSCALE`有効時の、単位当たりのピクセル `1024`
`-CENTER ` シームの向きを決定する空間上のポイント `0.000000 0.000000 0.000000`
高度な設定(非推奨)

「Minittry of Flat」は自動化を目指して作られてたツールのため、高度な設定をすることでUV展開の品質・速度に影響ができる場合があります。(そのため非推奨です)

オプション名 説明 デフォルト値
`-SUPRESS ` 検証エラーの出力を抑制 `FALSE`
`-QUAD ` トライアングルペアをクワッドに結合 `TRUE`
`-WELD ` 重複頂点の統合(ポリゴンデータには影響なし) `TRUE`
`-FLAT ` フラットなソフト面を検出し歪みを抑える `TRUE`
`-CONE ` 鋭い円錐形を検出 `TRUE`
`-CONERATIO ` 円錐の最小三角比率 `0.500000`
`-GRIDS ` クワッドのグリッドを検出 `TRUE`
`-STRIP ` クワッドのストリップ(帯状配置)を検出 `TRUE`
`-PATCH ` クワッドグリッドのパッチを検出 `TRUE`
`-PLANES ` 平面の検出 `TRUE`
`-FLATT ` フラットと見なすポリゴン間の最小法線ドット積 `0.900000`
`-MERGE ` 展開によるポリゴン結合 `TRUE`
`-MERGELIMIT ` 結合できるポリゴンの最大角度 `0.000000`
`-PRESMOOTH ` カット・投影前にメッシュをスムージング `TRUE`
`-SOFTUNFOLD ` ソフトサーフェスの展開を試行 `TRUE`
`-TUBES ` チューブ形状を円柱投影で展開 `TRUE`
`-JUNCTIONSDEBUG ` チューブ間の接合部検出 `TRUE`
`-EXTRADEBUG ` 4クワッド共有していない頂点からカット開始 `FALSE`
`-ABF ` スムース面に角度ベースのフラット化を使用 `TRUE`
`-SMOOTH ` スムース面のカット&展開 `TRUE`
`-REPAIRSMOOTH ` 小さなUVアイランドを大きなものに接続(スムース面) `TRUE`
`-REPAIR ` エッジの修正(直線化) `TRUE`
`-SQUARE ` 直角を持つポリゴンを検出 `TRUE`
`-RELAX ` 歪み最小化のためにスムースポリゴンをリラックス `TRUE`
`-RELAX_ITERATIONS ` リラックス処理の繰り返し回数 `50`
`-EXPAND ` ソフト面の拡張(実験的機能、デフォルトオフ) `0.250000`
`-CUTDEBUG ` 不自然な形をカットしてレイアウト効率を改善 `TRUE`
`-STRETCH ` 幅が広すぎるUVアイランドを伸ばして収める `TRUE`
`-MATCH ` 三角形ごとのUVマッチングでパッキング向上 `TRUE`
`-PACKING ` アイランドを矩形内にパッキング `TRUE`
`-RASTERIZATION ` パッキング時のラスター解像度 `64`
`-PACKING_ITERATIONS ` パッキング反復回数(最適な配置を探す) `4`
`-SCALETOFIT ` 空間に合わせてUVアイランドをスケーリング `0.500000`
`-VALIDATE ` 各ステージ後にジオメトリを検証しエラー出力 `FALSE`

Blenderで「Ministry of Flat」を使う

ここからが本題です。
Blenderモデリング→obj形式でエクスポート→Ministry of Flatにインポート→obj形式でエクスポート→Blenderにインポート

UV展開をチマチマするよりか数億倍楽になりましたが、減らせる工数は減らしたいものです。
前項で紹介したとおり、Ministry of Flatにはコマンドライン上で動作するツールが同梱されています。

Blender側でobjをエクスポートしつつ、コマンドラインを叩けば自動でUV展開をしてくれるようになりそうです。

調べたところ、BlenderとMinistry of Flatをブリッジするアドオンは複数あります。
※今回紹介するBlenderアドオンは全て「Ministry of Flat」が含まれていません。
ライセンスに記載とのおり、ソフトウェアの再配布が禁止されているため各自で用意してください。

アドオン一覧

mofbridge

github.com
とてもシンプルな設計です。
設定項目は3つのみ、うちMinistry of Flatに関する設定は1つのみです。

オプション名 説明
`separate edges~` コマンドライン引数-SEPARATE-を利用する
'Pack after~' Ministry of Flatから渡されたUV情報にBlenderのパック(ops.uv.pack_islands)を適用
'Show UV~' UV展開後に編集モードに移行してUVの即時プレビューをする

modelinghappy.com
ModelingHappyさんの記事で取り上げられていたものです。

AutoUVMOF

github.com
開発中のものです。(本記事執筆時点ではαv0.0.4リリース)
Ministry of FlatのSettingのうち、一般的な設定を網羅しつつユーザーが扱いやすいようにカスタマイズされた設定も存在するアドオンです。

Wrapper for MOF UV Unwrapper

extensions.blender.org
r60d.gumroad.com
github.com
Ministry of Flatの一般的な設定、高度な設定のみが項目として存在するアドオンです。
Ministry of Flatの参照方法がフォルダのパスではなく、zipファイルを参照することに注意が必要です。

mof-integration

github.com
何も設定することなく、Ministry of FlatでUV展開をすることができる(?)アドオンです。
AddonPreferencesの設定が死んでいるため、Ministry of Flatの参照ができないエラーが出ているため利用できません。

共通の注意点

Ministry of Flatの参照時のファイルパスに日本語や空白が入っているとエラーが出ます。
またアドオンによってはオブジェクト名に日本語が含まれていても同様です。

おすすめ度

順位 アドオン名
1位 Wrapper for MOF UV Unwrapper
2位 mofbridge
3位 AutoUVMOF
4位 mof-integration

AutoUVMOFは元々のUVを残しつつ、UVマップスロットにインポートしたUVを登録する設定など、他のアドオンに存在しない実用型の機能が実装されていました。

しかし、出力されたUVのスケールがUVタイルと異なっている問題が発生していました。※Use Normals を有効にすることで回避可能

この不具合が無ければ堂々の1位でした。

mofibridgeは設定項目が少なく、お手頃でしたがresolutionが変更できないためUV間の調整ができない部分が勿体なく感じました。(BlenderのUVパッカーを利用しているから不要なのだと判断)

安定性を考えると元々のMinistry of Flatの設定をそのまま参照している「Wrapper for MOF UV Unwrapper」が一番おすすめだと感じました。

Wrapper for MOF UV Unwrapperの使い方

前項で複数あるMinistry of Flatとの接続アドオンのうち、個人的に使いやすかった「Wrapper for MOF UV Unwrapper」に絞って紹介します。

導入方法

r60d.gumroad.com
Gumroadにアクセス


金額を記入して「I want this!」をクリックします。
※0$入力でも先に進むことができます。


メールアドレスを入力して「Get」をクリックします。


「Download」をクリックします。


zipファイルをダウンロードします。
ダウンロードしたzipファイルをアドオンとしてBlenderに読み込ませます。


プリファレンスからMinistry of Flatのzipファイルを参照します。
毎回zipファイルを参照するため、誤って削除・移動されないディレクトリに格納します。
※本記事ではAddonフォルダ直下に入れています。

参照後は「Check Verision」をクリックします。

使い方


3Dビューのツールバーに「Blender MOF」タブが新設されます。


「Auto UV Unwrap」をクリックするとUV展開が開始されます。

他のアドオンと異なり、元オブジェクトに上書をする形で編集されるため必要があればバックアップをとってから実行をする必要があります。

さいごに

UV展開は嫌いです。
しかし、避けては通れない道です。

なるだけ手作業は減らしつつ、「Mio3 UV」アドオンを使って細かい設定をするのが、私の最近のアプローチになっています。

全てをBlenderで解決するのではなく良いツールはドンドン使っていきたいです。