GenCAD
(gencad.github.io)- GenCAD는 이미지 입력만으로 3D CAD와 전체 매개변수화된 CAD 명령 이력, CAD 프로그램을 생성하는 모델임
- B-rep은 AI 학습에 복잡하고, 메시·복셀·포인트 클라우드는 데이터 확보가 쉬운 대신 정확성과 수정 가능성을 희생함
- 이미지에서 매개변수 CAD 명령 시퀀스를 생성한 뒤, 지오메트리 커널을 통해 3D 솔리드 모델로 변환할 수 있음
- 자기회귀 Transformer, 대조 학습, 잠재 확산 모델, 디코더를 결합해 이미지와 CAD 명령의 잠재 표현을 생성·복원함
- 같은 이미지에서 여러 CAD 샘플을 만들 수 있고, 약 7,000개 CAD 프로그램 중 상위 3개를 찾는 이미지 조건부 검색도 지원함
개요
- GenCAD는 이미지 조건부 CAD 생성 모델로, 3D CAD뿐 아니라 전체 매개변수화된 CAD 명령 이력과 CAD 프로그램을 출력함
- B-rep 같은 CAD 데이터 구조는 복잡해 효율적인 AI 모델 학습이 어렵고, 메시·복셀·포인트 클라우드 같은 표현은 데이터 확보가 쉬운 대신 실제 CAD 모델의 정확성과 수정 가능성을 희생함
- GenCAD는 이미지에서 매개변수 CAD 명령 시퀀스를 생성하고, 이를 지오메트리 커널로 3D 솔리드 모델로 변환함
- 목표는 엔지니어링 작업, 제조, 설계 공간 탐색에 필요한 정밀하고 수정 가능한 3D 모델링을 이미지 기반으로 자동화하는 데 있음
모델 구성과 기능
-
아키텍처
- 자기회귀 Transformer 인코더가 CAD 명령 시퀀스의 잠재 표현을 학습함
- 대조 학습 기반 모델이 CAD 명령 시퀀스와 CAD 이미지 사이의 공동 잠재 표현을 학습함
- 잠재 확산 모델이 CAD 이미지를 조건으로 CAD 명령 시퀀스의 잠재 표현을 생성함
- 디코더 모델이 CAD 잠재 표현을 매개변수 CAD 명령 시퀀스로 변환함
-
CAD 생성
- GenCAD는 이미지 렌더링을 입력으로 CAD 모델을 생성할 수 있음
- 같은 이미지 입력에서도 여러 CAD 샘플을 생성해 샘플 다양성을 제공함
-
CAD 검색
- 이미지 조건부 CAD 검색을 지원하며, 약 7,000개 CAD 프로그램 모음에서 상위 3개 CAD 프로그램을 찾아냄
-
자료
댓글과 토론
Hacker News 의견들
-
몇 시간 동안 돌려봤지만, 학습 데이터가 아닌 입력에서는 아주 단순한 그림조차 쓸 만한 결과를 만들지 못했음
GitHub에는 자체 학습 데이터에서도 신뢰도가 약 60% 라고 되어 있는데, 첫 화면의 이미지는 꽤 오해를 부르는 느낌임
예시와 비슷한 복잡도의 이미지 10장을 만들고 각 이미지마다 50번쯤 실행했지만 제대로 동작한 경우가 하나도 없었고, 드물게 뭔가를 출력해도 완전히 틀렸음
현재 상태로는 상당히 misleading하고, 더 많은 작업이 필요해 보임- 예시들도 혼란스러움. 전부 3D 모델에서 완벽하게 렌더링/내보낸 이미지처럼 보이는데, 이런 용도에서는 가장 유용하다고 느껴지지 않음
손그림 스케치에서 매개변수화된 CAD 모델을 만드는 거라면 정말 좋겠음
- 예시들도 혼란스러움. 전부 3D 모델에서 완벽하게 렌더링/내보낸 이미지처럼 보이는데, 이런 용도에서는 가장 유용하다고 느껴지지 않음
-
흥미롭긴 하지만 실용성은 잘 모르겠음. CAD 도면에서 시간이 많이 드는 부분은 각 feature의 정확한 치수, 간격, 크기, 공차 등을 정하고, 나중에 쉽게 수정할 수 있도록 구속조건을 잡는 일인데 이건 그런 걸 전혀 해주지 않음
원하는 걸 2D 스케치로 그린 뒤 생성할 수는 있겠지만, 결국 어려운 부분은 여전히 직접 해야 함- CAD 도구를 잘 안다는 전제에서는 맞는 말이라고 봄. 최근 3D 프린터를 쓰면서 원하는 게 무엇인지 알고, 치수도 재고, 종이에 스케치도 할 수 있는데도 FreeCAD 같은 도구에서 제대로 된 3D 모델로 만드는 과정이 매우 번거로울 때가 많았음
OpenSCAD는 꽤 익숙하지만 조금만 복잡해지면 많이 막힘. 최근에는 아이를 위해 Lego Duplo 주방 싱크대용 수도꼭지를 만들었음
스케치와 매개변수를 넣으면 곡선을 따라 원을 돌출시키는 방법을 웹에서 찾고 튜토리얼을 보느라 보내는 시간을 줄여주는 좋은 AI/LLM 도구가 있다면 정말 고마울 것 같음
참고로 기존 AI 도구들은 OpenSCAD와는 꽤 잘 맞으니, 단순한 도형들로 만들 수 있는 매개변수화 모델이 필요하다면 이 흐름을 강력히 추천함 - 좋은 질문임
예전 직장에서 여기에 많은 시간을 쓴 이유는 꽤 논리적이었음. 품질이 나쁜 머리 장착 카메라에서 생성한 점군은 모델이 매우 복잡해짐
예를 들어 Ikea LACK의 점군을 보면 (https://www.ikea.com/gb/en/p/lack-nest-of-tables-set-of-2-wh...) 엄청나게 복잡할 것임. 그래서 상호작용을 조금이라도 하려면 계산 비용이 커짐 (https://www.researchgate.net/publication/221064696/figure/fi...)
그래서 점군을 단순화된 “CAD” 모델로 바꾸는 연구가 활발함. LACK 테이블이 40만 개 삼각형이 아니라 대략 40개 삼각형으로 표현되는 식임
한 방법은 “이 점군은 테이블처럼 보이니, 후보 테이블을 많이 생성해서 맞는지 보자”는 접근임. 이를 위해 매개변수형 CAD를 이해하고, 맞을 때까지 조정 가능한 매개변수로 여러 테이블을 만들 수 있는 모델이 필요함
더 쉬울 수 있는 방법은 점군을 가져와 CAD 모델로 학습된 이미지 모델이 2D 이미지로 모델을 그리게 한 뒤, 이런 도구로 실제 모델을 얻는 것임
효율적이지는 않지만 동작할 수도 있음. 자동 표절 같은 덜 바람직한 용도도 많음 - 생성형 AI 분야에서 자주 그렇듯, 이것도 존재하지 않는 문제에 대한 해법처럼 보임
- 연필로 가구를 그린 뒤 버튼을 눌러 어느 정도 괜찮은 CAD 도면을 얻고 수정할 수 있다면, 목수 같은 사람들에게는 엄청난 도구가 될 것임
- 오히려 명확한 라벨이 붙은 코드 형태의 CAD를 생성하면 더 잘 맞을 것 같음. 그러면 캘리퍼스를 들고 전부 올바른 크기인지 확인할 수 있음
- CAD 도구를 잘 안다는 전제에서는 맞는 말이라고 봄. 최근 3D 프린터를 쓰면서 원하는 게 무엇인지 알고, 치수도 재고, 종이에 스케치도 할 수 있는데도 FreeCAD 같은 도구에서 제대로 된 3D 모델로 만드는 과정이 매우 번거로울 때가 많았음
-
내 CAD AI를 개선하려고 살펴보는 과정에서 이것과 비슷한 시도들[0]을 봤음. 잠재력은 큰 해법들이지만, 현재 프로젝트나 가중치들은 임의의 모델에 잘 동작할 만큼 학습 데이터나 학습 시간이 충분하지 않다고 봄
MeshCoder는 사실상 학습 데이터 기반 모델에서만 동작함. GenCAD는 안 써봤지만 다른 댓글들이 내 의심을 확인해줬음
[0]: https://daibingquan.github.io/MeshCoder/
[1]: https://grandpacad.com -
이런 방식은 OpenSCAD로 오래전부터 쉽게 할 수 있었음. 나는 이 방식으로 멋지고 복잡한 모델을 많이 만들었고, LLM에게 어떻게 하게 할지 보여주는 프롬프트 저장소도 만들었으며 내가 만든 모델들도 많이 포함해뒀음
https://github.com/cjtrowbridge/vibe-modeling- OpenSCAD는 B-rep 모델링과는 거의 겹치지 않음. 여기서 말하는 건 아마 ‘진짜’ CAD에 가까운 쪽임
- 나도 비슷함. LLM과 OpenSCAD로 작업하는 건 완전히 수월했음
- 이 방식의 추론 오버헤드가 어느 정도인지 궁금함
- 미안하지만, 여기서 어떤 것들이 복잡하다는 건지 모르겠음. 출력 PNG 몇 개[1] [2] [3]를 보니 아주 단순해 보임. Blender에서 처음 만든 3D 모델 수준으로 단순함
비교하자면 내 최근 설계 중 하나는 이 정도인데, 나도 여전히 매우 단순한 사례라고 부를 것임[4]
나는 상업적으로 일하는 훈련된 기계공학자가 아니라, 프로그래머로서 여가 시간에 설계하는 정도임
[1] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[2] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[3] - https://github.com/cjtrowbridge/vibe-modeling/blob/main/outp...
[4] - https://object.ceph-eu.hswaw.net/q3k-personal/fe3e54e6df604a...
-
실제 부품 사진이나 손그림 도면에서 얼마나 잘 동작하는지 보고 싶었지만, Docker 이미지를 설정하려 하자마자 설치되지 않은 의존성이 온갖 방식으로 터졌음
예시들을 보면 애초에 CAD에서 생성된 이미지가 아니면 잘 동작하지 않을 것 같다는 의심이 듦- 아이러니하게도 Docker 이미지는 바로 그런 의존성 문제를 피하려고 만든 것임
-
이게 흥미로운 사람이라면 OpenSCAD도 좋아할 가능성이 큼. 코드로 3D CAD 모델을 생성할 수 있음
https://openscad.org/ -
작성자가 본다면, 자동 재생 영상은 없애줬으면 함. 휴대폰에서 다른 걸 듣고 있을 때 항상 소리를 가로채서 끊어버림
-
내 오픈소스 Rust BRep CAD 커널도 흥미로울 수 있음: https://github.com/ecto/vcad
호스팅 버전은 https://vcad.io에 있음
CAD 앱에 무엇이 들어가는지도 조금 써뒀음: https://campedersen.com/tessellation- 나도 Rust로 CAD 프로그램을 만들려는 중이라 호스팅 사이트를 확인해봤는데, 무엇이 동작해야 하고 무엇이 아직 안 되는지 잘 모르겠음
한 사람이 4개월 동안 Rust 크레이트만 약 11.5만 줄을 썼다는 점이 의심스럽고, 프런트엔드는 별도로 또 10만 줄이라 더 그렇음
왜 “즉시” 테셀레이션을 선택했는지도 궁금함. 원을 만들자마자 원처럼 보이는 여러 선분이 생기는데, 접선 구속조건에서는 금방 실패할 것 같음. 현재 한계인지, 아니면 커널 전략의 일부인지 궁금함 - 말하는 걸 깜빡했는데, Claude와 연결돼 있어서 원문처럼 몇 단계를 더 거쳐 vibe CAD를 할 수 있음. 곧 비슷한 모델도 학습해보고 싶음
첫 시도에 대해서도 썼음: https://campedersen.com/cad0
- 나도 Rust로 CAD 프로그램을 만들려는 중이라 호스팅 사이트를 확인해봤는데, 무엇이 동작해야 하고 무엇이 아직 안 되는지 잘 모르겠음
-
이런 종류는 잘 이해가 안 됨. 도면 작성과 모델링이 어려운 부분이 아니라 CAM 프로그래밍이 어려운 부분임
3D 모델을 불러와 UI에서 공구 경로를 설정할 수 있는 오픈소스 프로그램도 못 찾았는데, LLM이 모델에서 공구 경로를 생성하는 건 더 어려워 보임 -
뭔가 놓친 건지도 모르겠지만, 처음부터 이미지 렌더링이 있다면 이미 CAD도 가지고 있을 가능성이 큼. 멋진 데모이긴 한데 용도가 뭔지 모르겠음
- 스케치에서 생성하거나, 가지고 있지 않은 부품을 복제하는 데 쓸 수 있음