9148c358d0
Topic_Agent/Topic_Blog/Topics/Topics_Biz/Topics_Meeting/Topics_Rag의 마크다운 지식 문서를 Topic_General/Topic_Programming/Topic_Graphic/Topic_Business 4개 카테고리로 재분류. - 중복 제거: frontmatter의 status:duplicate/merged + duplicate_of/redirect_to 필드로 자기 자신을 중복으로 선언한 리다이렉트 stub 1032개 제거, 완전 동일 내용 파일 472개 제거, 동일 파일명·다른 내용 충돌 시 더 큰(완전한) 버전만 유지(162개 제거) — 총 1639개 중복 제거. - 분류: 폴더 단위로 명확한 항목(AI_and_ML/Coding/Architecture 등 → Programming, Comfyui/Visual_Effects → Graphic, Topics_Biz/Topics_Meeting/사업 등 → Business, Poetic_Blog_Writing/창의성/Game_Design 등 → General)은 폴더 우선순위로, 나머지 혼재 폴더(Topic_Agent/Topic_Blog/Topics 루트/Thinking & Reasoning/Other/UI_UX_Assets)는 title/tags 키워드 스코어링으로 파일 단위 분류(불명확한 경우 General로 폴백). 원본 폴더명은 "From_*" 서브폴더로 보존해 추적 가능성 유지. - 최종 배치: Programming 2784 / General 1608 / Graphic 285 / Business 249 = 4926개 문서. - 에이전트 운영 상태(.astra/.agent/.obsidian/sessions/memory/_company/docs/lessons/_shared/src)는 지식 콘텐츠가 아니므로 재분류 대상에서 제외하고 원위치 유지. - Topics/Topic_email(상위 보호 폴더 Topic_email과 파일명 100% 중복) 삭제 — 보호 폴더 자체는 미변경. - 완전히 비게 된 Topic_Agent/Topic_Blog/Topics_Biz/Topics_Rag 폴더 제거.
4.7 KiB
4.7 KiB
id, title, category, status, canonical_id, aliases, duplicate_of, source_trust_level, confidence_score, verification_status, tags, raw_sources, last_reinforced, github_commit, tech_stack
| id | title | category | status | canonical_id | aliases | duplicate_of | source_trust_level | confidence_score | verification_status | tags | raw_sources | last_reinforced | github_commit | tech_stack | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wiki-2026-0508-procedural-architecture-systems | Procedural Architecture Systems | 10_Wiki/Topics | verified | self |
|
none | A | 0.85 | applied |
|
2026-05-10 | pending |
|
Procedural Architecture Systems
매 한 줄
"매 building / city 매 hand-author 의 X — 매 rules + grammar + noise 매 generate". 매 No Man's Sky / Minecraft / Townscaper / Houdini 매 production-grade. 매 2026 LLM-driven layout 매 mainstream (e.g. Inworld + procedural blockout).
매 핵심
매 layers
- Macro: 매 city / region — Voronoi, road network, biome.
- Meso: 매 building footprint, lot subdivision (BSP, L-system).
- Micro: 매 facade grammar, room layout, props placement.
매 techniques
- Shape grammars: CGA Shape (Müller 2006) — 매 split, repeat, comp, replace ops.
- Wave Function Collapse: tile constraint solver — 매 Townscaper 매 famous.
- L-systems: 매 organic / fractal (street trees, ivy).
- Noise: Perlin / Simplex / Worley — 매 base terrain.
- Constraint propagation: 매 SAT/CSP for room layout.
매 응용
- AAA open-world filler (Ubisoft, GTA city blocks).
- Roguelike dungeon (Spelunky, Hades).
- ArchViz mass modeling — Houdini PDG.
- UGC (Roblox, Dreams) — runtime gen.
💻 패턴
Wave Function Collapse (Python)
import numpy as np, random
def wfc(tiles, adjacency, w, h):
grid = [[set(tiles) for _ in range(w)] for _ in range(h)]
while any(len(c) > 1 for row in grid for c in row):
# pick lowest-entropy cell
x, y = min(((i, j) for i, row in enumerate(grid)
for j, c in enumerate(row) if len(c) > 1),
key=lambda p: len(grid[p[0]][p[1]]))
choice = random.choice(list(grid[x][y]))
grid[x][y] = {choice}
propagate(grid, adjacency, x, y)
return [[next(iter(c)) for c in row] for row in grid]
Shape grammar (CGA-style)
def split_facade(rect, rules):
# axiom: Facade -> Floor*
floors = subdivide(rect, axis='y', sizes=[3.0, 3.0, 3.0])
for f in floors:
windows = subdivide(f, axis='x', sizes=[1.5]*5)
for w in windows:
emit_mesh('window_unit', w)
L-system street network
def lsystem(axiom, rules, depth):
s = axiom
for _ in range(depth):
s = ''.join(rules.get(c, c) for c in s)
return s
# F=forward, +=turn, [=push
streets = lsystem("F", {"F": "F[+F]F[-F]F"}, 4)
Noise-based terrain (GLSL)
float fbm(vec2 p) {
float v = 0.0, a = 0.5;
for (int i = 0; i < 6; i++) {
v += a * snoise(p);
p *= 2.0; a *= 0.5;
}
return v;
}
Houdini PDG-style chunked gen (pseudo)
# Chunk world into tiles, generate independently
for tile in tiles:
seed = hash((tile.x, tile.z))
rng = np.random.default_rng(seed)
buildings = place_buildings(tile, rng)
export(f"tile_{tile.x}_{tile.z}.usd", buildings)
LLM-augmented blockout (2026)
prompt = f"""Design a {style} village, 12 buildings.
Output JSON: [{{type, x, z, rotation, size}}]"""
plan = json.loads(claude.complete(prompt))
for b in plan:
spawn_building(b['type'], (b['x'], b['z']), b['rotation'])
매 결정 기준
| 상황 | Approach |
|---|---|
| 매 grid-tile aesthetic | WFC |
| 매 organic city | L-system + agent sim |
| 매 facade detail | Shape grammar (CGA) |
| 매 terrain | Noise + erosion sim |
| 매 narrative-coherent | LLM-driven plan + procedural detail |
기본값: 매 hybrid — LLM macro plan + procedural meso/micro.
🔗 Graph
- 부모: Procedural Generation
- Adjacent: Perlin Noise · CSP
🤖 LLM 활용
언제: 매 high-level layout / narrative coherence — LLM 매 plan, procedural 매 detail. 매 prompt-to-blockout (2026 Inworld, Promethean). 언제 X: 매 real-time per-frame gen — LLM latency 너무 김. 매 precompute / edge-cache.
❌ 안티패턴
- Pure noise: 매 visible repetition / no semantic. 매 layered noise + masking 필수.
- No seed control: 매 reproducibility 부재 — debugging hell.
- Monolithic gen: 매 entire world in one pass — chunked / streamable 필요.
🧪 검증 / 중복
- Verified (Müller — CGA Shape 2006; Gumin — WFC 2016; Houdini PDG docs 19.5+).
- 신뢰도 A.
🕓 Changelog
| 날짜 | 변경 |
|---|---|
| 2026-05-08 | Phase 1 |
| 2026-05-10 | Manual cleanup — full PCG architecture entry |