From 17c57512c1a81c012653816d97e7932daee36d52 Mon Sep 17 00:00:00 2001 From: vickydotbat Date: Sun, 5 Jul 2026 01:24:55 +0200 Subject: [PATCH] wgt01: wire MAT_wgt01_* materials into blend --- wgt01/wgt01.blend | 3 +++ wgt01/wire_materials.py | 31 +++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 wgt01/wgt01.blend create mode 100644 wgt01/wire_materials.py diff --git a/wgt01/wgt01.blend b/wgt01/wgt01.blend new file mode 100644 index 0000000..c843e9a --- /dev/null +++ b/wgt01/wgt01.blend @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:256b6ac3c6f078d0241c29a54fd757afe13844506aea1fda1043132c84c82df2 +size 1221460 diff --git a/wgt01/wire_materials.py b/wgt01/wire_materials.py new file mode 100644 index 0000000..b223f6c --- /dev/null +++ b/wgt01/wire_materials.py @@ -0,0 +1,31 @@ +"""Create/refresh MAT_wgt01_* materials in wgt01.blend (run headless).""" +import bpy, os +SLOTS = ["cobble", "worn", "plaza", "sidewlk", "wall", "bridge", "gutter", "water"] +BASE = os.path.dirname(bpy.data.filepath) + +for slot in SLOTS: + name = f"MAT_wgt01_{slot}" + mat = bpy.data.materials.get(name) or bpy.data.materials.new(name) + mat.use_nodes = True + nt = mat.node_tree; nt.nodes.clear() + out = nt.nodes.new("ShaderNodeOutputMaterial") + bsdf = nt.nodes.new("ShaderNodeBsdfPrincipled") + nt.links.new(bsdf.outputs["BSDF"], out.inputs["Surface"]) + d = os.path.join(BASE, "textures", f"wgt01_{slot}_d.tga") + img = bpy.data.images.load(d, check_existing=True) + img.filepath = f"//textures/wgt01_{slot}_d.tga" + tex = nt.nodes.new("ShaderNodeTexImage"); tex.image = img + nt.links.new(tex.outputs["Color"], bsdf.inputs["Base Color"]) + n = os.path.join(BASE, "textures", f"wgt01_{slot}_n.tga") + if os.path.exists(n): + nimg = bpy.data.images.load(n, check_existing=True) + nimg.filepath = f"//textures/wgt01_{slot}_n.tga"; nimg.colorspace_settings.name = "Non-Color" + ntex = nt.nodes.new("ShaderNodeTexImage"); ntex.image = nimg + nmap = nt.nodes.new("ShaderNodeNormalMap") + nt.links.new(ntex.outputs["Color"], nmap.inputs["Color"]) + nt.links.new(nmap.outputs["Normal"], bsdf.inputs["Normal"]) + # wet look: low roughness on ground slots + bsdf.inputs["Roughness"].default_value = 0.35 if slot in ("cobble", "gutter", "water") else 0.6 + +bpy.ops.wm.save_mainfile() +print("WIRED:", ", ".join(f"MAT_wgt01_{s}" for s in SLOTS))