Texture Paint Studio
画像と図で読むマニュアル を用意しています。manual/index.html をブラウザーで開くと、操作画面・変更前後の比較・レイヤーの図解を確認できます。
Blockbench 5.2.1以降向けの独立した日本語Texture支援プラグインです。初期版0.1.0は、指定した色の並びで明暗を描く「陰影ブラシ」と「3Dグラデーション」を備えています。Bedrock Entity、Bedrock Block、Generic Modelのキューブが対象です。
インストール
- Blockbenchの ファイル → プラグイン → ファイルから読み込む を開きます。
- このフォルダーの texture_paint_studio.js を選択します。ファイル名は変更しないでください。
- テクスチャを割り当てたモデルを開き、ペイントモードへ切り替えます。
- 右側の Texture Paint Studio パネルを使用します。見つからない場合は ツール → Texture Paint Studio を開きます。
配布JSだけで動作します。利用者側でNode.jsや追加ライブラリーを導入する必要はありません。
色の並びを指定する
パネル上部の色は 暗 → 明 の順に並べます。自動で明るさ順に並べ替えることはしません。
- 「標準パレットを表示」でBlockbenchの現在のパレットを表示し、色をクリックして追加できます。
- 色を選んで色入力で変更できます。不要な色は「削除」で取り除きます。
- 「←」「→」で選んだ色を移動し、「反転」で全体の順序を反転します。
- 2〜8色を指定でき、同じ色は重複して使用できません。
陰影ブラシ
- 編集したい通常のペイントレイヤーを選びます。
- 「陰影ブラシ」を押します。標準ツール一覧から TPS 陰影ブラシ を選ぶこともできます。
- 「暗く/明るく」と標準ブラシサイズを指定します。
- 3Dモデル上、または標準2Dテクスチャ画面に描画します。
左操作はパネルで指定した方向、右操作は明るい方向へ1色進めます。右操作にはBlockbenchの右クリック描画設定が必要です。無効な場合はパネルの「明るく」を使ってください。
指定色とRGBが完全一致するピクセルだけを変更します。範囲外の色や完全透明ピクセルは変更せず、元の透明度を保持します。先頭・末尾の色から先へは進みません。同じピクセルは1ストロークにつき最大1段階しか変わりません。次のストロークでさらに明暗を調整できます。
ブラシは円形のハードブラシです。標準の画像選択範囲・UV制限を使い、2D画面では表示中のキューブ面に使われているピクセルを対象にします。未使用の画像部分には描画しません。1ストロークは1回のUndo/Redoです。
3Dグラデーション
- 対象のキューブ、テクスチャ、元のペイントレイヤーを選びます。
- 「ベース色」に変更したい色を指定します。「現在の描画色」でBlockbenchの描画色を取り込めます。
- 「選択キューブ/表示中の全キューブ」と「パレット段階式/滑らかな補間」を選びます。
- 「対象へフィット」で端点を対象モデルの下側・上側へ配置します。
- 「3Dハンドルを表示」で紫色の暗い側、黄色の明るい側の球をドラッグします。画面に平行な平面で移動し、ShiftでXYZを1単位刻みにできます。パネルのXYZ数値入力でも指定できます。
- 「方向反転」で両端点を交換できます。
- 「グラデーションを生成」を押します。
指定ベース色とRGBが完全一致するピクセルだけを置き換え、他の色・模様・透明度は保持します。段階式は指定パレットだけを使い、滑らかな補間は隣接色のRGBを補間するためパレットにない色も含みます。
出力は選択中テクスチャに限定されます。各ピクセルの3D位置を端点間の軸へ投影して色を決め、端点の外側では最初/最後の色に固定します。キューブと親グループの回転、Box UV、面UV、反転・回転UVを扱います。
元レイヤーと再生成
結果は元レイヤーの直上に TPS グラデーション レイヤーとして作成されます。元レイヤーを非表示で残し、画像全体を複製した結果を通常合成します。半透明を二重に重ねないための方式です。他の既存レイヤーの表示は変更しません。
- 生成レイヤーを選ぶと、保存したパレット・ベース色・端点などをパネルへ読み込みます。
- 設定を変更し「設定を適用して再生成」を押すと、元レイヤーから再計算します。影や色は累積しません。
- 「保存した設定へ戻す」で設定変更を取り消せます。
- 再生成は元の対象キューブIDを使用します。別の対象にしたい場合は通常レイヤーを選んで新しく生成してください。
- 生成レイヤーへ直接描いた内容は再生成時に置き換わるため、確認を表示します。修正を保持したい場合は生成レイヤーの上に別レイヤーを作って描いてください。
- 「通常レイヤーとして確定」で画像を保持したまま生成設定を外します。確定後は再生成できません。元レイヤーは非表示のまま保持します。
- 生成、再生成、確定はそれぞれUndo/Redoに対応します。
元画像を直す場合は元レイヤーを表示・選択し、生成レイヤーを一時的に非表示にして描き直します。その後、生成レイヤーを選択して再生成します。
プラグイン導入中に .bbmodel を保存すると、パレット、直近の設定、生成設定、元レイヤーの参照を保存できます。PNGは通常の完成画像として保存でき、生成設定やレイヤーは含みません。ゲーム側にプラグインは不要です。
制限とエラー
- Mesh、アニメーションテクスチャは初期版の対象外です。
- 編集元は全画像サイズ・オフセット0・拡縮1・通常合成・不透明度100%の通常レイヤーにしてください。レイヤーグループ、変形中や部分サイズのレイヤーは対象外です。
- 非表示/書き出し対象外のキューブと親グループは対象外です。
- UVを共有する面には同じ色が付きます。対象面同士は各面の投影値を平均します。対象外の表示キューブ面へ影響するときは適用前に確認します。非表示の面やMeshとのUV共有は検出対象外です。
- 端点が同位置、対象面なし、指定ベース色なしの場合は適用せず理由を表示します。
- 元レイヤーまたは対象キューブが削除された場合は、通常レイヤーと対象を選び直して新しく生成してください。
- 対象画像は419万画素以下、表示キューブは2万個以下です。複雑なUV配置では処理に時間がかかります。
- 生成中は「処理を中止」で結果を適用せず終了できます。処理中にプロジェクト・形状・選択・画像が変わった場合も適用を中止します。
サンプル
サンプルを開き、ペイントモードで生成レイヤーを選ぶと設定を確認できます。
開発・検証
cd texture-paint-studio
npm test
npm run build
npm run test:integration結合テストはインストール済みBlockbenchのアーカイブを読み取り、同じバージョンのWebビルドを一時ブラウザーで動かします。通常のBlockbenchプロファイルは操作せず、外部へのページ通信は遮断します。
TPS_PLAYWRIGHT:Playwrightのモジュールパス。未指定時は通常のplaywright。TPS_BROWSER:Chromium系ブラウザーの実行ファイル。BLOCKBENCH_ASAR:本体のresources/app.asar。未指定時はWindowsのユーザー別インストール先。BLOCKBENCH_WEB_BUNDLE:同じバージョンのWebビルド。未指定時は作業フォルダー内のplayer-motion-studio/_dev/web-bundle.js。
結合テストは既存AOとVibrant Material Toolkitの配布ファイルも読み込み、共存を確認します。これらはプラグイン自体の動作依存ではありません。
確認した項目は検証記録にまとめています。
公開されたRuneFist Handpainted Workflowの操作仕様を参考に独自実装しています。本家のコード・画像プリセットは取り込んでいません。