Loading...
Loading...
Optional, advanced pipeline between Blockbench and Adobe Substance 3D (Designer, Painter and the Substance Automation Toolkit command lines). Use only when the user has Substance installed and asks for it — render .sbsar procedural materials to Blockbench-sized PBR maps with sbsrender, cook .sbs graphs with sbscooker, bake AO/curvature/normal/position/ID maps from a Blockbench export with substance3d_baker, drive Substance 3D Painter over its remote-scripting HTTP API to paint a Blockbench model and export Bedrock MER or glTF maps, and pack results into texture_set.json. Triggers on Substance, Substance 3D, Substance Designer, Substance Painter, SAT, Substance Automation Toolkit, sbsar, .sbs, sbsrender, sbscooker, sbsmutator, sbsupdater, sbsbaker, substance3d_baker, pysbs, bake AO for Blockbench, Painter export to Blockbench. Not needed for ordinary painting, generated textures or derived normal maps.
npx skill4agent add jasonjgardner/blockbench-mcp-project blockbench-substance.sbsar.sbscreate_texturedatapbr_channelimport_texture_setpython scripts/sat_locate.pysbsrendersbscookersbsupdatersubstance3d_bakerC:\Program Files\Adobe\Adobe Substance 3D Designer\sbsmutatorpysbs| Goal | Tool | Reference |
|---|---|---|
| Procedural material (bricks, rust, leaves) as Blockbench textures | | sat-cli.md |
Have a | | sat-cli.md |
Edit/specialise a | | sat-cli.md |
| AO / curvature / ID / position masks from the model | | baker.md |
| Hand-paint the model with smart materials | Painter + | painter.md |
| Pack Bedrock MER, convert bit depth, flip normal green, shrink | | below |
python scripts/sat_render.py material.sbsar --out out --size 16 --seed 7 \
--set Season=0.8 --normal-format directx--size$outputsizesbsrender'$outputsize@4,4'--outsbsrenderinputswarningssbsrenderusagesbaseColordiffusenormalheightmetallicroughnessglossinessemissiveexport_modelcodec_id: "gltf"options: {"encoding": "binary"}path: <abs>.glbobjsubstance3d_baker AmbientOcclusion.Raytraced model.glb --use_lowdef_as_highdef true --output_size 512,512 --output_path bakepython scripts/prep_maps.py convert bake/*.png --out bake/64 --size 64sbsrender --set-entryexport_modelcodec_id: "obj"--enable-remote-scripting--helppython scripts/painter_remote.py --ping --wait 240
python scripts/painter_remote.py --python-file scripts/painter_new_project.py --result \
--set MESH=C:/work/model.obj --set NORMAL=DirectX --set RESOLUTION=1024 --set BAKE=1python scripts/painter_remote.py --python-file scripts/painter_bedrock_export.py --result \
--set OUT=C:/work/painter_out --set NAME=model --set PRESET=bedrock --set SIZE_LOG2=9
python scripts/prep_maps.py convert C:/work/painter_out/model*.png --out final --size 64bedrockNAME.pngNAME_mer.pngNAME_normal.pnggltffilespython scripts/prep_maps.py pack-mer --metallic out/m_metallic.png --emissive 0 --roughness out/m_roughness.png --out final/model_mer.png
python scripts/prep_maps.py texture-set --color model --mer model_mer --normal model_normal --out final/model.texture_set.json--glossiness--roughnessimport_texture_setcreate_texturepbr_channelcolornormalheightmercreate_pbr_materialdirectx$normalformatprep_maps.py convert --flip-greenPIL.Image.convert("L")prep_maps.py convert--output-bit-depth 8C:/.../c/...--alias'$outputsize@...'list_texturesget_texturecapture_screenshot