mcpField
B
blender-texture-baking

blender-texture-baking

github.com/el4cteoクリエイティブ・メディア569107 回インストール2 週間前に更新
リポジトリ

blender-texture-baking について

Blender Cycles でテクスチャマップを作成するアーティスト向けのベイクスキルです。ハイポリとローポリ、またはプロシージャルマテリアルからベイクし、画像設定や GPU 選択、CPU フォールバックを処理します。

主な機能

  1. 01ハイポリとローポリからマップをベイク
  2. 02プロシージャルマテリアルをテクスチャ化
  3. 03法線、AO、曲率、ID マップを生成
  4. 04レイの押し出し量またはケージを設定
  5. 05GPU を選択し CPU にフォールバック

活用シーン

  1. 01ローポリ向けゲーム用マップのベイク
  2. 02ORM テクスチャパックの作成
  3. 03第 2 UV レイヤーへのライトマップ生成
  4. 04投影アーティファクトや継ぎ目の診断

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/el4cteo/blender-skills --skill blender-texture-baking

インストール後、Claude Code で/blender-texture-bakingを入力して読み込まれたか確認します。

同梱ファイルscripts/_bpyx.pyscripts/bake_maps.py

詳細

テクスチャベイク(Cycles)

実行モデルは blender-core にあります。UV は blender-retopology-uv、マテリアルは blender-pbr-materials から取得します。

1 回の呼び出し

scripts/bake_maps.py -- --low SM_Crate --high Crate_high Crate_bolts --maps normal ao curvature id \
   --res 2048 --samples 64 --margin-px 16 --pack-orm --out //textures

セルフベイク(プロシージャル → テクスチャ、--high なし):--low SM_Crate --maps basecolor roughness metallic normal --pack-orm。 スクリプトは GPU(OptiX/CUDA/HIP/Metal/oneAPI)を選択し、使用できない場合は CPU にフォールバックします。適切なカラー空間でターゲット画像を作成し、一時ノードをクリーンアップして、T_<name>_<N|AO|CURV|BC|R|M|ORM...>.png を保存します。

準備チェックリスト(ベイクの不具合の多くは以下が原因です)

  1. ローポリ:UV を展開し、重なりがないこと(スタック/ミラーされたアイランドは U 方向に +1 移動)、ベイク解像度でパディングを 8 px 以上にし、スケールを適用します。
  2. ハードエッジ = ローポリの UV シーム。ベイク時にグラデーションを処理するスムーズシェーディングを使うか、シームで分割されたハードエッジを使います。UV アイランド内にハードエッジを置かないでください。
  3. ローポリをエンジンと同じ方法で三角形分割するか、三角形分割したメッシュをエクスポートします。三角形分割の不一致はシェーディングのシームとして現れます。
  4. ハイポリはローポリ全体を覆い、ローポリからわずかにはみ出す程度にします。浮遊パーツ(ボルト、パネルのディテール)は表面のすぐ上に配置できますが、押し出し距離の範囲内に収める必要があります。
  5. 名前:X_low / X_high のペアにします。パーツごとにベイクするか、隣接パーツ同士が互いに投影されないように各ペアを軸に沿って移動して分離し、その後元に戻します。
  6. 必要に応じてハイポリにモディファイアーを適用します(マルチレゾリューションとサブディビジョンは自動的に評価されます)。

レイ:押し出しとケージ

  • --extrusion(メートル)は、ローポリの表面からレイの原点を外側に押し出します。ハイポリがローポリからはみ出す最大距離より大きくする必要があります。デフォルトはローポリの対角線の 2% で、max_ray_distance は押し出し距離の 2 倍です。
  • ケージ(--cage Crate_cage):ローポリと同じトポロジーを持ち、膨張させたコピーです(Displace/「Push」)。均一な押し出しでうまくいかない場合(鋭い凹角、薄いパーツ)に使用します。レイが外れる箇所は、ケージを局所的に編集します。
  • 小さすぎる場合:穴やディテールの欠落が生じます。大きすぎる場合:メッシュの別のパーツが投影されます(交差、「ゴースティング」)。

マップガイド

マップ空間備考
normalNon-Color、タンジェント、OpenGL(Unreal 用には --directx)16 サンプルの AA で十分です。ゲームでは 8-bit PNG で問題ありません
aoNon-Color64~256 サンプル。接触 AO が必要な場合を除き、ハイポリのみでベイクします(地面なし)
curvatureNon-Color、0.5 = 平坦ベイク済み法線から派生します(凸面は白/凹面は暗)。エッジ摩耗の制御に使います
idsRGBハイポリのマテリアルごとに単色を割り当てます。マスクとしてマテリアルを使います
thicknessNon-Color内向きのレイを使う AO です。暗いほど薄く、SSS/透過マスクに使います
basecolor/metallic/opacityemission オーバーライド経由ソースマテリアルの Principled 入力を読み取ります(プロシージャルチェーンも対象)
roughness, emit, combinedCycles のネイティブパスcombined = ライティング済みの結果(ライトマップ、スタイライズド表現)
positionfloatグラデーションマスク

ORM = R:AO、G:Roughness、B:Metallic。glTF/Unreal の標準です。Unity では異なるパッキング方式を使います(blender-pbr-materials)。

よくあるアーティファクトの修正

症状原因修正方法
円柱に波状の線が出るローポリのポリゴン数が少なすぎる、スムージングのグラデーションセグメントを追加する、ケージを使う、またはローポリにサポートを追加する
ディテールが歪む(ボルトが傾く)レイの方向が平均化されたローポリの法線に沿っているハードエッジとシームを設定する、ケージを使う、またはフローターを個別にベイクする
黒い領域/乱れた領域レイが外れる、または裏面に当たっている押し出し量を増やす、反転した法線を修正する(blender-asset-qa)、ハイポリのカバー範囲を確認する
エンジンでシームが見えるマージンが小さすぎる、ハードエッジにシームがない、タンジェントが異なる2kでマージンを16 px以上にする、ハードエッジにシームを設定する、タンジェント(MikkTSpace)をエクスポートする
隣接パーツのディテールが混入するパーツ同士が近すぎるベイク時にパーツを分離する、またはオブジェクトペアごとにベイクする
エンジンで緑チャンネルが反転して見えるOpenGL/DirectXの不一致Unrealでは--directxを使う、またはテクスチャインポーターでGを反転する
階段状のノイズ/バンディング大きく平坦なグラデーションを8-bitで扱っている16-bit(float_buffer)でベイクし、エクスポート時にディザリングする

非PBRデータのベイク

  • 頂点カラー:アクティブなカラー属性を設定してbake.target = "VERTEX_COLORS"を指定します(モバイルやRobloxを使わないシェーディングに便利です)。
  • ライトマップ:シーンのライトを使って、UV2にcombinedをベイクします(--uv-layer UVMap_Lightmap)。
  • マルチレゾ(別個のハイオブジェクトがない場合):bake.use_multires=True、bake.type="NORMALS"|"DISPLACEMENT"|"VECTOR_DISPLACEMENT"、bake.use_lores_mesh=Trueを設定し、その後bpy.ops.object.bake_image()を実行します。ビューポートレベルがローポリ、スカルプトレベルがハイポリになります。

注意点

  • ターゲット画像は、ローポリオブジェクトのすべてのマテリアルで、アクティブな Image Texture ノードである必要があります(スクリプトが処理します)。
  • Cyclesでのベイクでは、アクティブなUVマップが使われます(選択するには--uv-layerを指定します)。
  • 画像は自動保存されません:img.save()またはsave_renderを使ってください。パックされた画像や内部画像は、再読み込み時に消失します。
  • 5.2:Cyclesのテクスチャキャッシュ(.tx)はレンダリングメモリ用で、ベイク結果には影響しません。
  • 反転した法線や浮いたチャンクがベイクの乱れの主な原因となるため、まずローポリとハイポリに対してblender-asset-qaを実行してください。

コメント