# -*- coding: utf-8 -*- # 화면 확인(2026-09-28 BT36) 뒤 손보기: ① 천의 줄무늬를 가늘게 ② 성채 돌을 어둡게 ③ 사막 분위기 · 바위 import io, re def patch(path, pairs): s = io.open(path, encoding="utf-8").read() for a, b in pairs: assert s.count(a) == 1, (path, a[:60], s.count(a)) s = s.replace(a, b) io.open(path, "w", encoding="utf-8", newline="\n").write(s) print("ok", path) B = "blender_props/" patch(B + "bt_kit.py", [ ("def make_cloth(name, base, dirt=(0.12, 0.09, 0.06), stripe=None, weave=60.0):\n \"\"\"천 — 올 무늬 + 아랫단으로 갈수록 때. stripe = 가로 줄무늬 색.\"\"\"", "def make_cloth(name, base, dirt=(0.12, 0.09, 0.06), stripe=None, weave=60.0, stripe_n=0.8, stripe_w=0.16, stripe_mix=0.7):\n" " \"\"\"천 — 올 무늬 + 아랫단으로 갈수록 때. stripe = 가로 줄무늬 색 · stripe_n = 줄 수(1 m 에 몇 줄) · stripe_w = 줄 굵기(0~1) · stripe_mix = 줄 색의 세기.\n" " 굵은 줄무늬(절반 굵기)는 게임 화면에서 천막 · 깃발이 장난감처럼 보였다 → 가는 줄 몇 가닥만 넣는다.\"\"\""), (" bands = g.ramp(g.wave(1.6, 0.4, 1.0, 'Z'), [(0.42, 0.0), (0.5, 1.0)])\n col = g.mix(g.math('MULTIPLY', bands, 0.85), col, stripe)", " edge = max(0.05, 1.0 - stripe_w)\n" " bands = g.ramp(g.wave(stripe_n, 0.25, 1.0, 'Z'), [(edge - 0.05, 0.0), (edge, 1.0)])\n" " col = g.mix(g.math('MULTIPLY', bands, stripe_mix), col, stripe)"), ]) patch(B + "theme_keep.py", [ (" MATS['stone'] = make_stone('stone', (0.30, 0.27, 0.26), dark=0.5, crack=0.6, streak=0.35, soot=0.45)\n" " MATS['stone_block'] = make_stone('stone_block', (0.29, 0.26, 0.25), dark=0.5, crack=0.45, joints=(0.75, 0.36), streak=0.35, soot=0.5)\n" " MATS['stone_dark'] = make_stone('stone_dark', (0.17, 0.15, 0.15), dark=0.5, crack=0.5, soot=0.6)", " # 게임 화면에서 돌이 둘레의 성벽(짙은 벽돌)보다 훨씬 밝게 떴다(성채 맵은 노출 1.6 · 용암 빛) → 바탕을 어둡게, 줄눈 · 그을음을 짙게\n" " MATS['stone'] = make_stone('stone', (0.150, 0.128, 0.118), dark=0.5, crack=0.65, streak=0.4, soot=0.55)\n" " MATS['stone_block'] = make_stone('stone_block', (0.140, 0.120, 0.110), dark=0.5, crack=0.5, joints=(0.62, 0.30), streak=0.4, soot=0.6)\n" " MATS['stone_dark'] = make_stone('stone_dark', (0.085, 0.074, 0.070), dark=0.5, crack=0.5, soot=0.65)"), (" MATS['cloth'] = make_cloth('cloth', (0.26, 0.04, 0.035), dirt=(0.03, 0.025, 0.02), stripe=(0.30, 0.22, 0.08))", " MATS['cloth'] = make_cloth('cloth', (0.20, 0.028, 0.026), dirt=(0.03, 0.025, 0.02), stripe=(0.24, 0.17, 0.06), stripe_n=0.6, stripe_w=0.10, stripe_mix=0.6)"), ]) s = io.open(B + "theme_desert.py", encoding="utf-8").read() print([l for l in s.splitlines() if "make_cloth" in l or "make_stone" in l])