CADFather: 비전-언어 어시스턴트가 도구를 조율해 메시에서 파라메트릭 CAD를 자율 재구성
CADFather는 추가 학습 없이 3D 메시에서 파라메트릭 CAD 프로그램을 복원하는 에이전트입니다. 비전-언어 어시스턴트가 학습형 제안, 기하 제안, 수치 최적화를 오가며 최선의 결과를 보존합니다. DeepCAD, Fusion360, MCB 전체 테스트에서 무효율 0, 평균 IoU 0.987, 0.976, 0.913입니다.
배경: 메시에서 편집 가능한 CAD 프로그램으로
메시는 형상을 기술하지만, 그 형상을 어떻게 만들었는지는 기록하지 않습니다. 부품이 스캔 데이터나 이력 없는 오래된 메시로만 남아 있으면, 엔지니어는 구멍 지름이나 벽 두께를 바꿀 수 없습니다. 구성 이력이 없기 때문입니다. CADFather는 이 역설계 문제를 다룹니다. 목표 메시를 입력으로 받아, 실행 가능하고 구조가 일관되며 편집할 수 있는 파라메트릭 CAD 프로그램을 복원합니다. 논문은 모스크바 국립대학, 이노폴리스 대학, FusionBrain Lab에서 나왔고, arXiv 2610.09127로 2026년 10월 6일에 제출되었습니다. 코드는 GitHub의 kulibinai/CADFather에 공개되어 있습니다.
기존 방법은 저마다 강점과 약점이 있습니다. CAD-Recode, cadrille, CADEvolve는 완전한 프로그램을 한 번에 생성합니다. CADReasoner는 차이에 대한 피드백으로 완전한 프로그램을 수정합니다. CADENA는 연산을 하나씩 추가합니다. CADFit은 기하 피팅과 최적화 탐색을 결합합니다. 논문의 핵심 관찰은 단순합니다. 모든 부품 형상과 모든 재구성 단계에서 똑같이 잘 작동하는 단일 연산 공급원은 없다는 것입니다. 학습 모델은 그럴듯한 연산을 내놓지만 특징을 놓치거나 치수를 틀릴 수 있습니다. 알고리즘 방식 구성은 목표 형상에서 직접 연산을 도출합니다. 수치 최적화는 이미 가까운 프로그램의 치수를 다듬습니다. 그래서 매 단계에서 어떤 후보를 키우고 어떤 도구를 쓸지가 진짜 질문이 됩니다.
핵심 구조: 비전-언어 어시스턴트와 세 가지 도구
CADFather는 추가 학습이 필요 없는 에이전트입니다. 어시스턴트는 FP8 가중치에 명시적 사고를 끈 Qwen3.8-27B입니다. 학습형 연산 생성기는 bfloat16으로 서빙하는 CADENA-RL 체크포인트입니다. 두 모델 모두 고정되어 있습니다. 모든 도구는 CADENA의 CadQuery 기반 DSL이라는 같은 표현으로 출력합니다. 그래서 한 도구가 만든 후보를 다른 도구가 확장하거나 다듬을 수 있습니다.
세 도구의 역할은 분명합니다. 첫째, 학습형 제안 생성입니다. 부모 프로그램에 대해 한 번의 요청으로 n개의 다음 연산 후보를 돌려줍니다. n은 어시스턴트가 정하며 호출당 최대 32입니다. 둘째, 알고리즘형 제안 생성입니다. 학습 모델 없이 목표 메시에 기하 피팅을 합니다. 빈 시작점에서는 먼저 회전체인지 확인합니다. 아니면 평면으로 목표를 자르고, 각 단면을 스케치로 보고, 그 스케치가 목표 표면을 따르는 압출 깊이를 찾습니다. 겹침에 기여가 적은 압출은 버립니다. 기존 후보에서는 후보와 목표를 비교해 부족한 재료와 남는 재료를 찾고, 부족한 곳에는 압출을, 남는 곳에는 절단을 만듭니다. 결과는 순위가 매겨진 목록이며 호출당 네 개의 제안을 돌려줍니다. 셋째, 파라미터 최적화입니다. 숫자만 바꾸고 연산 구조는 유지합니다. 자유 파라미터는 스케치 좌표, 반지름, 압출 깊이입니다.
의사결정 루프와 후보 풀
시스템은 부품마다 후보 풀을 유지합니다. 각 항목은 식별자, 부모, 생성 도구, 프로그램, 메시, 연산 수, 유효성, 측정값을 기록합니다. 후보를 확장하면 자식이 생기고 이력은 다시 쓰이지 않습니다. 코드 수준 중복 제거가 같은 프로그램의 이중 등록을 막습니다. 매 단계에서 어시스턴트는 크기가 제한된 표를 봅니다. 점수가 높은 후보 최대 12개에 보호된 최고 후보와 빈 루트를 더한 표입니다. 각 행에는 생성 도구, 연산 수, IoU와 GMS, 체인 첫 연산의 점수, 아직 쓸 수 있는 도구가 적힙니다. 목표와 최신 후보의 렌더링도 함께 받습니다. 어시스턴트는 의도를 한 문장으로 쓰고, 최대 네 개의 act 호출을 내거나 finish를 호출합니다. 이유는 shape(특징이 모두 갖춰짐) 또는 stalled(더 이상 진전 없음)입니다.
도구의 응답은 제안일 뿐입니다. 실행 구성요소가 빌드하고 검증하고 측정합니다. 그다음 어시스턴트가 렌더링을 보고 풀에 넣을지 판단합니다. 유효성 규칙은 엄격합니다. 프로그램이 빌드되어야 하고, 메시 전체가 양의 부피를 가진 수밀 솔리드여야 합니다. 목표와 후보는 같은 좌표계에 놓이며 후보를 자기 경계 상자로 다시 스케일하지 않으므로, 크기가 틀리면 감점됩니다. 점수는 IoU와 정규화된 GMS의 평균이고, 무효 후보는 0점입니다. 최종 출력은 어시스턴트가 마지막으로 만진 후보가 아니라 보호된 최고 결과입니다. 고정 예산이 종료를 보장합니다. 부품당 24단계, 최대 12개 연산, 1000초, 생성 샘플 80개, 알고리즘 호출 6회, 최적화 호출 10회, 프로그램 실행 120회입니다.
최적화기의 수학
최적화기는 부호 있는 거리를 씁니다. 한 점에서 솔리드 표면까지의 거리이며 내부는 음수입니다. 프로그램의 거리는 연산에서 직접 계산하고, 목표의 거리는 표본점에서 메시로부터 계산합니다. 불일치는 두 거리의 제곱 차이의 평균입니다. 기울기는 수치적으로 추정합니다. 각 파라미터를 작은 간격만큼 움직이고 불일치의 변화로 미분을 얻습니다. 먼저 부품 전체에 흩어진 점에 맞추고, 그다음 표면 가까운 점에 맞춥니다. 초기, 거친, 정밀 파라미터 중 표면 근처에서 가장 잘 맞는 것을 남기므로, 프로그램이 변하지 않은 채 돌아올 수도 있습니다. 압출, 구멍, 회전만 지원합니다. 저자들은 새로운 수치 최적화기를 제안하지 않는다고 분명히 밝힙니다.
벤치마크 결과
DeepCAD, Fusion360, MCB 전체 테스트 세트(8046, 1725, 5000개 부품)에서 CADFather의 무효율은 0입니다. 평균 IoU는 0.987, 0.976, 0.913으로, CADENA-RL 샘플링 버전의 0.966, 0.952, 0.895보다 높습니다. 평균 GMS는 0.983, 0.960, 0.766입니다. 30000점 기준 Chamfer 거리 중앙값(1000배)은 0.039, 0.034, 0.083이고 비교 대상은 0.042, 0.036, 0.089입니다. 학습형 도구는 같은 CADENA-RL 체크포인트이므로, 향상은 더 강한 생성기에서 오지 않았습니다. 주의할 점이 있습니다. 공개된 CADENA 행은 더 느슨한 유효성 규칙을 쓰므로 무효율을 직접 비교할 수 없습니다.
CADENA-Bench(3396개 부품)에서는 IoU 0.909, GMS 0.721로, CADENA-RL 탐욕 버전의 0.876과 0.670보다 높습니다. CADBench에서는 벤치마크 자체 평가 코드로 18000개 부품을 채점해 IoU 0.930, 표면 IoU 0.787, Chamfer 거리 0.029를 얻었고, CADFit은 0.859, 0.679, 0.038입니다. 다만 유효 형상 비율 0.968은 CADFit의 0.981보다 낮습니다. 576개 부품이 평가기의 30초 제한을 넘었기 때문입니다. BenchCAD에서는 복셀 IoU 0.968에 무효 프로그램이 없습니다.
절제 실험: 알고리즘형 제안이 가장 중요
데이터셋마다 1000개 부품의 부분집합에서 알고리즘형 제안을 빼면 평균 점수가 0.012에서 0.110 떨어집니다. MCB에서는 무효율이 0에서 0.124로 오릅니다. 이유는 구체적입니다. 어떤 부품에서는 생성기가 뽑은 첫 연산이 모두 열린 곡면이 되어, 수밀이 아닌 기반에서는 탐색을 이어갈 수 없습니다. 목표 단면의 압출은 닫힌 솔리드를 줍니다. 최적화기를 빼면 손실은 0.004에서 0.006에 그치고 무효율은 0으로 유지됩니다. 즉 이 시스템에서 도구의 다양성은 주로 견고성을 사고, 최적화기는 마지막의 작은 맞춤 향상을 더합니다. 저자들은 어시스턴트의 선택 정책 자체의 기여는 분리하지 못했다고 인정합니다.
비용과 지연
부품당 평균 어시스턴트 단계는 DeepCAD 6.37, Fusion360 8.41, MCB 12.25, CADENA-Bench 13.04입니다. 실제 소요 시간은 82.6, 119.9, 245.6, 306.7초입니다. 생성 샘플은 19.0에서 67.1까지입니다. 어시스턴트가 스스로 끝내는 비율은 DeepCAD에서 86.1%, CADENA-Bench에서는 25.0%여서, 복잡한 기계 부품은 예산에 의해 중단되는 경우가 많습니다. BenchCAD에서 Qwen3.8-27B의 OpenRouter 가격(입력 100만 토큰당 0.425달러, 출력 2.55달러)으로 추정하면, 네 단계 후 복셀 IoU 0.943에 부품당 약 0.016달러, 전체 예산에서는 0.968에 약 0.046달러입니다. 논문은 도구를 쓴 Claude Opus 5.5와 GPT-6 Astra가 0.962와 0.959이며 부품당 5.94달러와 1.75달러라고 인용합니다. 이 수치는 벤더의 자체 보고이고 입력과 부분집합이 다르며, 저자도 맥락적 비교라고 부릅니다. 추정에는 모델 토큰만 들어가고 기하 처리와 실행 시간은 빠져 있습니다.
개발자와 기업에 주는 의미
제조와 산업 소프트웨어 팀에게 이 방식은 오래된 스캔과 이력 없는 메시를 편집 가능한 파라메트릭 모델로 바꿔 줍니다. 전용 모델을 학습할 필요가 없습니다. 기존 생성기, 기하 알고리즘, 범용 비전-언어 모델을 조합하므로 오픈 가중치로 사내 환경에서도 돌릴 수 있습니다. 모듈식 설계이므로 어떤 도구든 교체할 수 있습니다. 더 강한 생성기나 더 빠른 피팅 알고리즘을 바로 연결할 수 있습니다. 더 넓은 교훈은, 기하처럼 검증 가능한 영역에서 에이전트의 가치는 단일 모델의 순수한 힘이 아니라 경로 배정과 예산 배분에서 나온다는 점입니다.
한계와 향후 과제
저자들은 몇 가지 한계를 듭니다. 시스템은 CAD 표현이 지원하는 연산과 도구가 낼 수 있는 제안에 묶입니다. 파라미터 최적화는 잘못된 연산 순서를 고치지 못하고, 좋은 대안이 한 번도 생성되지 않았다면 이전 후보를 보존해도 도움이 되지 않습니다. 탐색 한도가 성공했을 경로를 끊을 수도 있습니다. 어시스턴트는 불완전한 시각 및 수치 증거로 결정하므로 결과가 프롬프트와 모델 동작에 좌우될 수 있습니다. 대표적인 실패는 초기 위상 오류(솔리드 블록이 속이 빈 프레임으로 재구성됨), 부피는 맞지만 표면 세부(널링, 얕은 포켓)가 빠지는 경우, 나선 스프링이 관으로 재구성되는 경우입니다. 평가는 기하와 프로그램 유효성만 측정하며 설계 이력, 제조 의도, 공학적 제약은 측정하지 않습니다. 단일 부품만 다루고 조립체, 공차, 시뮬레이션은 다루지 않습니다. CAD-Assistant, IterCAD 같은 다른 CAD 에이전트와의 직접 비교, 그리고 어시스턴트의 도구 선택 정책에 대한 통제된 평가는 향후 과제로 남아 있습니다.
꼼꼼한 독자를 위한 한 가지 덧붙임이 있습니다. 최종 선택은 논문이 보고하는 것과 같은 IoU와 GMS 지표를 씁니다. 따라서 보고된 지표에 의한 best-of-N 선택입니다. 수치를 인용할 때 이 점을 기억해 두십시오.