v0.5 — 미뤄 뒀던 7개 전부 완료
2026-09-20 · 공개 전 마지막 기능 묶음. 도구 28개, 테스트 24개
결론
v0.4 문서에서 "아직 안 만든 것"으로 남겼던 7개를 모두 만들었습니다. 가장 위험했던 되돌리기는 실제 블렌더 창을 띄운 소켓 경로로 확인했고, 되돌린 뒤에도 블렌더와 연결이 끊기지 않았습니다.
1. 먼저, 약점
- 되돌리기는 파일을 다시 엽니다. 저장하지 않은 지금 장면은 사라집니다. 블렌더 자체의 "되돌리기(Revert)"와 같은 방식이라, 여러 단계 실행 취소(Undo)가 아닙니다.
- 조각 접착은 느립니다. 조각 60개에 제약 145개가 생깁니다. 조각을 200개 넘게 하면 굽기가 눈에 띄게 길어집니다.
- 하늘 텍스처는 빠른 미리보기에 안 보입니다. 워크벤치는 하늘을 단색으로 그립니다. 확인하려면
quality="smoke"이상이 필요합니다. - HDRI는 파일이 있어야 합니다. 인터넷에서 받아오지 않습니다. 없는 경로를 주면 한 줄로 알려 줍니다.
- 영어 메시지는 문장만입니다. 도구 설명(AI가 읽는 문서)은 아직 한국어입니다. AI는 둘 다 읽지만, 영어권 기여자에게는 불편합니다.
- 창문은 벽에 붙인 판입니다. 진짜 구멍이 아니라서 안이 비치지 않습니다. 부서질 때 같이 깨지긴 합니다.
2. 만든 것과 확인 방법
| 기능 | 무엇을 하나 | 상태 | 확인한 근거 |
|---|---|---|---|
| 스냅샷·되돌리기 | snapshot 저장 → restore 로 그때로 | 완료 | 건물 → 저장 → 25조각 파괴 → 되돌리기 → 조각 0개, 건물 보임. 실제 블렌더 창 소켓 경로에서도 성공 |
| 조각 접착 | glue: 이웃 조각을 붙여 맞은 곳만 무너짐 | 완료 | 같은 충격에서 접착 있을 때가 덜 내려앉음(테스트가 두 번 돌려 비교). 60조각에 제약 145개 |
| 창문 건물 | style="windows" | 완료 | 3층×4면×3칸 = 창문 36개, 면 230개. 민무늬와 픽셀이 다름. 실제 그림 확인 |
| 연기·조각 충돌 | smoke_collision=True | 완료 | 조각 25개가 연기 장애물로 등록, 굽기 결과 생성 확인 |
| 하늘 텍스처·HDRI | sky="procedural", hdri=경로 | 완료 | 단색 하늘과 픽셀이 다름. 없는 HDRI 경로는 한 줄 오류 |
| 바닥 재질 | set_ground 6종 | 완료 | 아스팔트(어두운 회색)와 잔디(초록) 실제 그림 확인, 픽셀 다름 |
| 영어 메시지 | BLENDER_FX_LANG=en | 완료 | 서버·연결 오류·레시피 오류 모두 영어로 나옴(테스트 4개) |
3. 중간에 잡은 문제
- 낙하 높이가 항상 0이었습니다. 마지막 프레임에서 재야 하는데 프레임을 1로 되돌린 뒤에 재고 있었습니다. 접착 비교 테스트가 이걸 잡아냈습니다.
- 하늘이 두 번 비췄습니다. 하늘 텍스처와 태양이 같이 비춰 바닥이 하얗게 날아갔습니다. 하늘 조명이 켜지면 태양을 45%로 낮췄습니다.
- 접착이 있으면 조각이 잠들면 안 됩니다. 기본은 맞기 전까지 조각을 재워 두는데, 접착은 힘을 전달해야 해서 접착이 있을 때만 깨워 둡니다.
4. 검증 요약
| 검사 | 결과 |
|---|---|
| pytest 전체 (서버 9 + 헤드리스 15) | 24개 통과, 19.3초 |
| 실제 블렌더 창 소켓 경로 (doctor → 창문건물 → 잔디 → 카메라 → 스냅샷 → 파괴 → 되돌리기) | 11단계 전부 성공, 되돌린 뒤 조각 0개 |
| 실제 픽셀 | 창문 건물, 아스팔트 바닥, 잔디 바닥 |
5. 남은 것
- 첫 커밋 — 상위 폴더 규칙이 "요청 없는 commit 금지"라 하지 않았습니다.
- GitHub 공개 — 외부 게시라 승인이 필요합니다. 계정 이름을 주시면 README와
server.json.example의<계정>자리를 채웁니다. - 클로드 코드 등록 — 설정 파일 수정이라 직접 실행해 주세요.
v1.0 후보로 남긴 것: 프리셋을 JSON 파일로 분리, 자체 수신기 애드온 동봉, 모션블러 프리셋, 도로·차량 같은 소품 프리셋, 도구 설명 영어화.