도면 SVG Spike Test — Layer 1 (base floor plan)

2026-04-28 · 옥탑방 (L05) · 시나리오 씬 5/12/14/18/25/27 + selected shots → spec.json → matplotlib 렌더링

비교 대상: 사람이 시나리오 분석 + 3차례 정제(v1→v2→v3)한 도면 prompt로 gpt-image-2가 그린 도면. 메모리 session_20260428_floor_plan_experiment.md 참조.
핵심 검증: LLM이 한 번에 v3 수준의 정확도로 spec.json을 출력하는가?

1. Base Floor Plan 비교

GPT-5.5

rooms=5 · doors=7 · furniture=21 · exterior=1 · rejected=4 · validation warnings=0
GPT-5.5 floor plan

Gemini-3.1-pro

rooms=5 · doors=7 · furniture=13 · exterior=1 · rejected=3 · validation warnings=0
Gemini floor plan

2. spec.json 통계 비교

항목GPT-5.5Gemini-3.1-pro비고
rooms55거실/안방/수리영방/욕실/현관 5 zone 둘 다 식별
doors77front_entry + interior 5 + window N
furniture2113GPT가 더 디테일 (sofa, kitchen 가전 등)
exterior_adjacency_zones11rooftop 양쪽 모두 식별
rejected_layouts43둘 다 시나리오 contradiction 명시
schema validation warnings00가구가 room 안에 있고 door가 wall 위에 있음

3. v3 수동 도면과 시각 비교 체크리스트

v3 수동 도면 핵심 요구사항GPTGemini
거실 = TV(왼쪽 벽) + sofa(오른쪽 벽) 마주봄??
거실 = sink + window 위쪽 벽??
안방 = top-right corner + bed??
수리영방 = right side + bed + window with curtain??
욕실 = bottom-right + mirror + sink??
현관 = lower-left of apartment??
front entry door 옆 ROOFTOP concrete (NOT balcony)??
모든 interior door가 거실에서 분기??

→ PNG 시각 검토로 ? 항목 채울 것

Variant B — SVG XML in prompt (no schematic PNG)

가설: SVG XML 텍스트를 prompt에 넣으면 모델이 좌표를 layout으로 해석하는가?
입력: SVG XML 7,411자 + chain bg photoreal prompt (총 9,403자). 입력 이미지 없음.
비교 대상: variant E/F (도면 PNG ref + photoreal prompt, 검증된 방식).
핵심 검증: 텍스트 좌표만으로 모델이 TV/sofa/sink/문 위치를 정확히 그리는가?

gpt-image-2 (text-to-image, no ref)

SVG XML in prompt only · 1536x1024
GPT-image-2 variant B

Gemini nano-banana-2 (text-to-image, no ref)

SVG XML in prompt only · 16:9 2K
Gemini variant B

비교용 — variant F (S5_Shot3 정확 케이스) 결과: 31_chain_bg_v3_living_day.png (도면 PNG ref + photoreal prompt)

Variant D — 자연어 spatial DSL (option a)

가설: 자연어 spatial language("LEFT wall", "FACES across", "upper-right corner") 가 SVG XML 보다 모델 친화적. 학습 데이터에 풍부.
입력: 자연어 DSL 4,742자 + chain bg photoreal prompt (총 6,643자). 입력 이미지 없음.
변환 예시:
APARTMENT FLOOR LAYOUT (top-down view, 10m wide × 4m deep). +x=east, +y=north.

### LIVING/KITCHEN (거실 주방) [living]
  Position: LOWER-LEFT corner.
  Size: 6.0m wide (E-W) × 4.0m deep (N-S).
  Furniture:
    - TELEVISION (tv): 1.2m × 0.1m, on the LEFT wall (west wall, on camera-left), centered along the wall.
    - SOFA: 1.5m × 0.6m, on the RIGHT wall (east wall, on camera-right), centered along the wall.
    ...

FURNITURE FACING RULES:
  - The TV (LEFT wall) and the SOFA (RIGHT wall) FACE EACH OTHER ACROSS the room.
  - The kitchen SINK on the BACK wall faces toward the front (toward the camera).

gpt-image-2 (text-to-image, no ref)

자연어 DSL in prompt only · 1536x1024
GPT-image-2 variant D

Gemini nano-banana-2 (text-to-image, no ref)

자연어 DSL in prompt only · 16:9 2K
Gemini variant D

변환 전체 텍스트: spec_gpt_natural_dsl.txt · full prompt: variant_d_prompt.txt
비교용: variant B (SVG XML) 두 결과 위에 / variant F (도면 PNG ref) 31_chain_bg_v3_living_day.png

Variant E — ASCII grid (option c)

가설: 단순 2D char grid가 SVG/DSL보다 모델이 직관적으로 인식. 학습 데이터에 게임 맵, 코드 댓글의 ASCII art 풍부.
입력: 14×16 char grid + legend + chain bg prompt. 이미지 ref 없음.
Grid 미리보기:
              w
  MMMMMwwSSScwpwcS
  MbbbbwwSSSSSSSSS
  MbbbbwwSSSSbbbbb
  MbbbbbMbddSbbbbb
  MMMMIMMbdISbbbbb
     TTTLLLLLLLLLL
     LL,,tc,,LLLllw
     LL,,pc,,LLLll
RR   LLLttttLLLLLL
RREEELLLLLLLLLmBBB
RRFEILLLLLKKkkIKoo
RRsssLLLLLKKkkmKoo
RR                   

gpt-image-2 (ASCII grid)

GPT variant E

Gemini nano-banana-2 (ASCII grid)

Gemini variant E

Variant F — 좌표 array (10×10 bbox)

가설: 가장 단순한 코드/JSON 형식. tv: [2, 5, 3, 5] = bbox cols 2-3 row 5.
입력: 10×10 grid + bbox array + chain bg prompt. 이미지 ref 없음.
Array 미리보기:
ROOMS:
  living_kitchen          : [2, 1, 9, 5]    # 거실 겸 부엌
  main_bedroom            : [1, 5, 4, 8]    # 안방
  small_bedroom           : [4, 5, 9, 8]    # 작은방
  bathroom                : [7, 1, 9, 3]    # 욕실
FURNITURE:
  tv            : [2, 5, 3, 5]    # in living_kitchen, on top wall
  table         : [4, 3, 5, 4]
  sink          : [5, 1, 6, 1]    # on bottom wall
  ...

gpt-image-2 (좌표 array)

GPT variant F

Gemini nano-banana-2 (좌표 array)

Gemini variant F

Test 6 — LLM 자동 도면 prompt vs 사람 수동 v3

핵심 검증: spec.json/matplotlib 모두 제거. 가장 단순한 흐름 — Gemini Pro가 시나리오 보고 도면 prompt를 자동 작성 → gpt-image-2가 도면 PNG 생성. 사람 v3 정확도 도달?

흐름:
시나리오(6 씬 + selected shots)
   ↓
[Gemini Pro] 자동 prompt 작성 (1578자 영문)
   ↓
[gpt-image-2 text-to-image] 도면 PNG (자동본)
   ↓
[Gemini nano-banana-2] chain bg = image=[도면 PNG] + photoreal prompt
전체 prompt: auto_floor_plan_prompt.txt

도면 PNG 비교 (Step 1+2)

자동 도면 (LLM prompt)

Gemini Pro 1578자 prompt → gpt-image-2 1024×1024
Auto floor plan

수동 v3 도면 (사람 작성 prompt)

사람이 v1→v2→v3 정제, "TWO-WALL SEPARATION RULE" 명시
Manual v3 floor plan

chain bg 결과 비교 (Step 3 — Gemini nano-banana-2)

chain bg (자동 도면 ref)

image=[auto_floor_plan.png] + photoreal prompt
Chain bg with auto floor plan

chain bg (수동 v3 도면 ref) ← variant F baseline

image=[manual_v3.png] + photoreal prompt
Chain bg with manual v3

분기

결과의미다음
자동 도면 + chain bg가 수동 v3 + chain bg와 동급 정확spec.json/matplotlib 모두 제거. 가장 단순한 자동화 가능v2 plan 대폭 단순화
자동 도면이 부정확 (zone 누락, layout 모호)LLM prompt 자동화로는 사람 v3 도달 못함vision validator + retry chain 추가 필요
도면은 OK인데 chain bg 결과 차이 큼도면 자체가 layout authority로 작동 안 함다른 접근 (사람 도면 업로드, 또는 도면 자체를 ref로 안 쓰고 prompt에만 의존)

⚠️ 이전 발견 — spec.json 자체 sofa 누락 (참고)

중요: 어떤 variant 결과에도 sofa가 없는 이유는 spec_gpt.json 자체에 sofa가 없기 때문.

GPT가 시나리오 + selected shot에서 sofa를 추출 못함 — 씬 텍스트에 "소파"가 명시되지 않거나 selected shot이 sofa를 언급 안 함. 수동 v3 prompt의 "fabric sofa parallel to the wall facing the TV"는 사람이 추가한 정보.

의미: variant B/D/E/F의 layout 따르기 능력 평가는 sofa 외 다른 요소(TV 위치, sink 위치, 두 침실 문)로 해야 함. 그리고 v2 plan에 spec.json 정확도 보강이 필요 — 시나리오에 명시 없는 가구도 inferred하도록.

variant 비교 매트릭스

variant 입력 형태 입력 이미지 가설 예상
F (검증됨) 도면 PNG + photoreal prompt 도면 PNG (sch.) visual ref가 강력 정확
B SVG XML 텍스트 in prompt 없음 SVG는 모델이 vector graphics format으로 학습 부정확 (모델이 좌표 해석 X)
D 자연어 spatial DSL in prompt 없음 "LEFT wall", "FACES across" 같은 spatial language는 학습 데이터 풍부 B보다 정확, F에 가까울지 검증
E ASCII grid (char) 없음 게임 맵, 코드 댓글의 ASCII art 학습 풍부 모델이 grid pattern을 layout으로 인식?
F 좌표 array bbox (JSON-like) 없음 가장 단순한 코드 형식, 모델이 코드 풍부하게 학습 D/E보다 단순, 효과는?

결정 분기

결과분기
두 도면 모두 v3 수준으로 정확v2 plan SVG-first 그대로 진행. 모델 cost 차이로 선택.
한쪽만 정확해당 모델 사용. 다른 모델 fallback.
양쪽 모두 부정확 (zone 위치 틀림)hybrid: 사람 spec 작성 또는 prompt에 v3 layout hint 추가
좌표는 OK, 시각 표현만 부족SVG renderer 개선 (벽 두께, 가구 도형 디테일)