37 lines
2.9 KiB
Python
37 lines
2.9 KiB
Python
# -*- 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])
|