무료 에셋, 정말 제대로 부서지나
2026-09-20 · v0.6.1 · github.com/choisam4u-creator/blender-fx-mcp
지금은 됩니다. 그런데 물어보시기 전까지는 안 됐습니다. 흔한 결함을 그대로 심은 시험용 GLB 7개로 재 봤더니 조각이 통째로 사라지고 있었습니다. 원인 네 가지를 찾아 고쳤고, 지금은 7개 모두 요청한 40조각 그대로, 부피 보존 1.00, 깨진 조각 0개입니다. 조각 500개까지 유지됩니다.
다만 karchive 사이트의 실제 파일은 한 개도 내려받지 않았습니다. 파일 다운로드는 허락을 받아야 해서입니다. 아래 7번을 봐 주세요.
1. 먼저, 처음엔 실패했습니다
무료 에셋을 흉내 낸 모델 7개를 만들어 도구에 그대로 넣었더니 이렇게 나왔습니다. 부피 보존은 조각 부피의 합을 원본 부피로 나눈 값이고, 1.00 이어야 물질이 사라지지도 불어나지도 않은 것입니다.
| 시험 모델 | 처음 | 무엇이 잘못됐나 |
|---|---|---|
| 면 20,480개짜리 무거운 모델 | 15.24 | 부피가 15배로 부풀었다. 조각끼리 서로 겹쳤다. |
| 벽 5cm 통 + 바닥에 붙은 내용물 | 0.69 | 물질의 31%가 사라졌다. |
| 부품 6개가 서로 박힌 수레 | 0.93 | 바퀴와 손잡이 쪽 조각이 안 생겼다. |
| 5cm 짜리 아주 작은 물건 | 오류 | 조각을 하나도 못 만들었다. |
화면으로 보면 그냥 "부서졌네" 싶지만, 무게가 틀리면 낙하와 튕김이 전부 틀립니다. 그래서 부피를 숫자로 재는 것입니다.
2. 원인 네 가지
- GLB 는 꼭짓점을 쪼개 놓습니다. 이 형식은 저장할 때 면마다 꼭짓점을 따로 복사합니다. 그대로 가져오면 모든 면이 서로 떨어져 있어 "닫히지 않은 자루"가 되고, 부피 계산과 조각내기가 동시에 망가집니다. → 가져올 때 겹친 꼭짓점을 다시 붙입니다. 또 수리를 먼저 하고 면 줄이기를 나중에 하도록 순서를 바꿨습니다(반대로 하면 수리할 대상이 이미 뭉개져 있습니다).
- 덩어리끼리 겹치거나 맞닿아 있습니다. 무료 모델은 바퀴가 몸통에 박혀 있고, 내용물이 통 바닥에 딱 붙어 있습니다. 이런 모델에 조각 칼을 대면 불리언 계산이 아무것도 못 만들고 빈 결과를 냅니다. → 조각내기 전에 한 번, 겹친 덩어리들을 하나의 깨끗한 덩어리로 정리합니다. 이 한 단계로 0.69 → 1.00, 0.93 → 1.00 이 됐습니다.
- 씨앗 좌표를 두 번 변환하고 있었습니다. 조각의 씨앗 점이 물체 안에 있는지 판정할 때 좌표를 한 번 더 변환해서, 물체가 원점에서 떨어져 있으면 거의 전부 "바깥"으로 판정됐습니다. 40개를 요청해도 3~4개만 놓였습니다. 가져온 모델은 항상 바닥에 세우느라 위치가 0이 아니므로 전부 이 버그를 맞고 있었습니다.
- 셀 자르는 횟수에 상한이 있었습니다. 조각이 많아지면 셀이 덜 잘려 서로 겹치고 부피가 1.17까지 부풀었습니다. 언제 멈춰도 되는지는 이미 정확히 계산하고 있었으므로, 상한을 없앴습니다. 쓸모없어진
neighbors인자도 지웠습니다.
3. 고친 뒤 측정
| 시험 모델 | 조각 수 | 부피 보존 | 깨진 조각 |
|---|---|---|---|
| 부품 6개가 서로 박힌 수레 | 40 / 40 | 1.00 | 0 |
| 뚜껑 없는 그릇 (껍데기뿐) | 40 / 40 | 1.00 | 0 |
| 법선이 뒤집힌 모델 | 40 / 40 | 1.00 | 0 |
| 벽 5cm 통 + 바닥에 붙은 내용물 | 40 / 40 | 1.00 | 0 |
| 5cm 짜리 아주 작은 물건 | 40 / 40 | 1.00 | 0 |
| 면 20,480개짜리 무거운 모델 | 40 / 40 | 1.00 | 0 |
| 재질 3개가 섞인 모델 | 40 / 40 | 1.00 | 0 |
조각 수를 올려도 유지됩니다.
| 모델 | 요청 조각 | 나온 조각 | 부피 보존 | 걸린 시간 |
|---|---|---|---|---|
| 벽 5cm 통 | 120 | 120 | 1.00 | 2초 |
| 벽 5cm 통 | 300 | 300 | 1.00 | 7초 |
| 벽 5cm 통 | 500 | 500 | 1.00 | 15초 |
| 면 20,480개 모델 | 300 | 300 | 1.00 | 12초 |
시간은 가져오기 + 조각내기 + 짧은 물리 굽기를 합친 값입니다.
4. 원래 있던 건물도 그대로
고치면서 기존 기능이 망가지지 않았는지 확인했습니다. 데모 건물 80조각·200조각 모두 부피 보존 1.00, 깨진 조각 0개입니다. 자동 테스트는 32개에서 36개로 늘렸고 전부 통과합니다. 새로 넣은 4개는 이번에 발견한 결함(겹침·맞닿음·분리·조각 과다)을 그대로 재현해, 같은 버그가 되살아나면 즉시 걸립니다.
5. 쓰는 법
블렌더를 몰라도 되게 만든 것이니, 말로 시키면 됩니다.
karchive에서 받은 barrel.glb 가져와서 3미터 크기로 세워줘 어떤 상태인지 먼저 봐줘 나무 재질로 오른쪽에서 세게 때려서 80조각으로 부숴줘 먼지도 조금 날리고, 카메라는 낮게
도구는 순서대로 import_model → inspect_mesh → destroy → camera 가 불립니다. inspect_mesh 는 부수기 전에 한 번 보는 습관으로 추천합니다. 닫히지 않은 껍데기면 두께를 주라고 알려 줍니다.
6. 아직 안 되는 것
- 뼈대 애니메이션이 든 모델은 시험하지 않았습니다. 캐릭터처럼 리깅된 것은 어떻게 나올지 모릅니다.
- 면 20,000개가 넘으면 자동으로 줄입니다. 그래야 계산이 끝나지만, 아주 가는 장식은 이때 뭉개질 수 있습니다.
decimate_to=0으로 끌 수 있고 대신 느려집니다. - 텍스처는 조각 단면에 안 붙습니다. 겉면은 원래 재질을 쓰지만 새로 생긴 단면은 단색입니다.
- 조각 500개면 15초입니다. 조각마다 계산을 한 번씩 하기 때문에 조각 수에 비례해 느려집니다.
- 한 파일에 여러 물건이 들어 있으면 하나로 합쳐서 부숩니다. 따로 부수려면 지금은 파일을 나눠야 합니다.
7. 확인 못 한 것 — 실제 파일
보내주신 사이트의 진짜 GLB 는 한 개도 내려받지 않았습니다. 파일 다운로드는 먼저 허락을 받게 되어 있어서입니다. 위 숫자는 전부 제가 결함을 일부러 심어 만든 모델로 잰 값입니다.
해도 된다고 말씀해 주시면, 그 사이트에서 몇 개(예: 3~5개, 각 수 MB)를 내려받아 똑같이 재서 표를 채우겠습니다. 파일 이름과 용량을 먼저 알려 드리고 진행합니다.
8. 반영 위치
깃허브 main 에 올렸습니다. 커밋 da4b5d9, 버전 0.6.1. 깃허브에서 바로 설치해 실행되는 것까지 확인했습니다. 이미 등록해 두신 MCP 설정은 그대로 두면 다음 실행 때 새 버전을 받습니다.