blender-retopology-uv について
BlenderでリトポロジーとUVを扱うアーティストやテクニカルアーティスト向けのワークフローガイドです。自動・手動のメッシュ処理から、UV配置、テクセル密度、特殊なケースまで説明します。
主な機能
- 01自動リトポロジー手法の選択
- 02変形メッシュのエッジフロー規則
- 03UVシームとアンラップ手法
- 04UVアイランドの配置と密度管理
- 05特殊なUVワークフロー
活用シーン
- 01ゲーム用プロップのローポリ化
- 02変形キャラクター向けトポロジーの作成
- 03メッシュのUV展開と配置
- 04UVやテクセル密度の問題診断
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ el4cteo/ blender-skills --skill blender-retopology-uvインストール後、Claude Code で/blender-retopology-uvを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
scripts/_bpyx.pyauto_retopo.pytexel_density.pyuv_pack.py詳細
リトポロジーとUV
実行モデルについては blender-core を参照してください。
リトポロジー
自動(scripts/auto_retopo.py -- --objects Sculpt --tris 8000 --method ...)では、<name>_low が作成され、ソースは非表示になります。
| Method | 用途 | 備考 |
|---|---|---|
quadriflow | 有機的な小道具、静止キャラクター、スキャンデータ | クリーンな四角形ポリゴンです。まずボクセルリメッシュを行い、入力を多様体にします。UVは失われるため、再展開が必要です |
decimate | 背景の小道具、LOD、AI生成メッシュ | UVと形状を維持し、三角形ポリゴンを生成します。高速です |
planar | ハードサーフェスのCAD/ブーリアン演算結果 | 平坦な領域を溶解し、シーム/シャープ/マテリアル/UVの境界を維持します |
手動(主役級キャラクター、または変形するあらゆるもの)。Shrinkwrap モディファイア(PROJECT、ターゲット=スカルプト)を設定した新しいメッシュオブジェクトを作成し、スナップを FACE_PROJECT と use_snap_project に設定します。ソースは別のビューポートカラー/X線表示にします。下記のエッジフローが重要なため、自動リトポロジーでは変形する主役級メッシュには不十分です。
変形するメッシュのエッジフロー規則
- 目と口の周囲に同心ループを配置します(3リング以上)。鼻唇溝のループは鼻翼から口角へ流れるようにします。
- 曲がる関節(肘、膝、指の関節)にはそれぞれ3ループを配置し、ボリュームを保つため両側にもループを配置します。肩には腕を上げるための追加ループが必要です。
- 極(3辺/5辺の頂点)は曲がる部分を避けます。胸や後頭部など、平坦で硬い領域に配置してください。
- 四角形ポリゴンを均等に配置し、変形やシルエットに必要な場所では密度を高めます。三角形は、隠れていて変形しない箇所にのみ使用してください。
- 2026年のキャラクターの三角形数の目安:モバイル 5–15k、Roblox のボディは合計 ≤ 10.7k、コンソール/PC の三人称視点では 30–80k、主役級/シネマティックでは 100k 以上です。
blender-game-optimizationで対象プラットフォームを確認してください。
UV
- シーム:目立たない位置(腕の下、脚の内側、後頭部、パーツの下)に隠し、硬いエッジに沿わせ、円柱は背面で切ります。ゲーム用メッシュのルール:すべての硬いエッジ(>~60°、
sharp_edge)をUVシームにする必要があります。そうしないと法線マップにアーティファクトが発生します。scripts/uv_pack.py --seams-from-sharp 60で設定できます。 - 展開:
--method seams(マーク済みシームを使う Angle Based)、--method min_stretch(SLIM、4.3 以降。有機的な形状で歪みが最小)、--method smart(ハードサーフェス/自動、--angle 66)。 - 長方形のアイランドをまっすぐにします(Follow Active Quads、ライブのみ)。トリムやピクセルグリッドを揃えられます。
- アイランドスケールを平均化してパックし、ピクセル単位で余白を設定します:2k → 8 px、4k → 16 px、モバイル 1k → 4 px。
--shape CONCAVEは最も密にパックできます(ヘッドレスでは低速)。デフォルトのAABBは即座に完了します。 - テクセル密度(
scripts/texel_density.py --res 2048):アセット内のspreadを 1.3 以下に保ちます。--set <px/m>で設定します。fits_0_1が false の場合は、解像度または密度を変更してください。 - QA:
blender-asset-qaは、面積ゼロのUV面と重なり率を報告します。
テクセル密度の目標(px/m、スタジオの基準値であり、絶対的な規則ではありません)
| コンテキスト | px/m |
|---|---|
| 一人称視点の主役級アセット/武器 | 1024–2048 |
| 一人称視点の環境 | 512–1024 |
| 三人称視点のゲーム | 512(コンソール/PC)、256(モバイル) |
| 見下ろし型/ストラテジー | 128–256 |
| Roblox | テクスチャあたり約 256–512:5×5 studs → 256²、10×10 → 512²、20×20 → 1024² |
| 同じシーン内のすべてのものは、同じ密度に揃える必要があります。例外は主役級アセットで、密度を2倍以内に保ちます。 |
特殊なケース
- ミラー/積層 UV:スペースを節約できますが、固有のベイクができなくなります。ベイク中は重複する島を正確に +1 U 移動して(0–1 の範囲外へ)、その後元に戻します。法線マップはミラーに対応している必要があります(MikkTSpace を使用するエンジンではタンジェント空間が対応します)。
- ライトマップ UV2(
--lightmap。UVMap_Lightmapを生成):重なりがなく、すべての島が 0–1 の範囲内にあり、十分なマージンが必要です。Unreal/Unity では独自に生成できます。エンジンのパイプラインで必要な場合にのみ同梱してください。テクスチャリング用には UV0 をアクティブにしておきます。 - UDIM(映像/ヒーローアセット向け):島を 1001 以降のタイルに配置します(タイルごとに U を 1 ずつオフセットします)。テクスチャノードの画像は
source="TILED"にします。ほとんどのゲームエンジンは UDIM に対応していません。 - トリムシート:帯状の部分を展開してから、トリムの列に合わせて島をスケール・移動します(V 位置はトリムレイアウトに従います)。タイリングのため、島が U 方向で 0–1 の範囲を超えてもかまいません。
- Roblox:UV セットは 1 つだけにし、すべてを 0–1 の範囲内に配置します。重なりは許可されています。
注意点
- 5.0 以降:UV の選択状態は UV マップ間で共有されます(
.uv_select_*属性)。古いBMLoopUV.selectコードは動作しません。 uv.*オペレーターは Edit Mode で実行され、選択中の面に作用します。最初にすべてを選択してください(スクリプトでは自動的に処理されます)。- ヘッドレス環境での
uv.pack_islandsは、回転を有効にしたCONCAVE/CONVEXでは、小さなメッシュでも 2~25 秒かかることがあります。反復作業中はAABBを使用してください。 - 展開時の警告「failed to solve island」:その島にシームがありません(閉じた形状です)。シームを追加してください。
- テクセル密度を測定する前にスケールを適用してください。適用しないと密度が正しく表示されません(スクリプトはワールド空間を使用し、スケールをすでに考慮しています)。
コメント
Markdown 対応