본문으로 건너뛰기

© 2026 Molayo

HN요약2026. 05. 20. 13:23

Show HN: Vibe Code로 3D 모델 제작하기

요약

SynapsCAD는 OpenSCAD 코드 에디터, 실시간 3D 뷰포트, AI 어시스턴트를 결합한 AI 기반 3D CAD IDE입니다. 사용자는 코드를 편집하거나 자연어를 통해 3D 모델을 설계하고 수정할 수 있으며, Anthropic API 또는 Ollama를 통한 로컬 모델을 지원합니다.

핵심 포인트

  • OpenSCAD 코드를 기반으로 하는 AI 지원 3D CAD 데스크톱 애플리케이션
  • 자연어 명령을 통한 디자인 재구성 및 3D 클릭 상호작용 문맥 활용 가능
  • Anthropic과 같은 클라우드 API 및 Ollama를 통한 로컬 AI 모델 지원
  • Linux, macOS, Windows 환경을 지원하는 Rust 기반 프로젝트

SynapsCAD

<br> <p align="center"> <img src="assets/splash@2x.png" alt="SynapsCAD" width="260" /> </p> <p align="center"> AI 기반 3D CAD IDE — 코드를 편집하고, 3D로 시각화하며, 자연어(Natural Language)로 디자인을 재구성하세요. </p> <p align="center"> Vibe Code로 3D 모델을 제작하세요! </p> <br>

⚠️ 초기 프로토타입 (Early Prototype) — 아직 모든 OpenSCAD 코드가 올바르게 컴파일되지 않을 수 있습니다. 간단한 모델부터 시작하시고, 미흡한 부분이 있을 수 있음을 인지해 주세요. 문제를 일으키는 코드 스니펫(Code Snippet)이 포함된 버그 리포트는 언제나 환영합니다!

SynapsCAD 작동 모습 보기

<p align="center"> <a href="assets/Screenshot-2026-02-28.png"> <img src="assets/Screenshot-2026-02-28.png" alt="SynapsCAD Screenshot" width="100%" /> </a> </p> <p align="center"> <a href="assets/2026-03-01_slideshow.webp"> <em>▶ 작동 모습 보기</em> </a> </p>

개요 (Overview)

OpenSCAD 코드 에디터, 실시간 3D 뷰포트(Viewport), 그리고 AI 어시스턴트를 결합한 데스크톱 3D CAD 애플리케이션입니다. OpenSCAD 코드를 작성하고, 이를 3D 모델로 컴파일하며, 대화형으로 시각화하고, 3D 클릭 상호작용의 문맥(Context)을 포함하여 자연어로 디자인을 수정하는 데 AI를 사용하세요.

다운로드 (Download)

Linux, macOS (Apple Silicon 및 Intel), Windows용 사전 빌드된 바이너리는 Releases 페이지에서 확인할 수 있습니다.

macOS 사용자: SynapsCAD는 Apple 개발자 인증서로 서명되지 않았기 때문에, macOS에서 첫 실행 시 앱을 차단할 것입니다. 이를 해결하려면 다음 명령어를 실행하세요:

sudo xattr -rd com.apple.quarantine /path/to/SynapsCAD.app

현재 단계에서는 Apple 개발자 계정 비용을 지불하지 않고 있습니다. 원하신다면 언제든지 소스에서 빌드할 수 있습니다.

소스에서 빌드하기 (Building from Source)

필수 요구 사항 (Prerequisites)

  • Rust (stable toolchain)
  • 채팅 어시스턴트를 위한 AI 제공업체 API 키 (예: ANTHROPIC_API_KEY)

빠른 시작 (Quick Start)

cargo run

AI 제공업체 설정 (AI Provider Setup)

SynapsCAD는 genai crate를 사용하여 AI 제공업체에 연결합니다. 여기에는 완전한 오프라인 및 프라이빗 사용을 위한 **Ollama를 통한 로컬 모델 (Local Models)**도 포함됩니다 (API 키가 필요하지 않음). 선택한 클라우드 제공업체의 API 키를 환경 변수 (Environment Variable)로 설정하세요:

제공업체 (Provider)환경 변수 (Environment Variable)
AnthropicANTHROPIC_API_KEY
...
export ANTHROPIC_API_KEY="sk-..."
cargo run

환경 변수가 설정되면 UI에 활성화된 상태로 표시됩니다. 또한 앱 내의 ⚙ AI Settings에서 키를 입력하거나 재설정(Override)할 수 있습니다.

이 기능은 오른쪽에 3D 뷰포트 (Viewport)가 있고, 왼쪽에 코드 에디터 (Code Editor)와 AI 채팅이 포함된 사이드 패널이 있는 창을 엽니다.

기본 워크플로우 (Basic Workflow)

  1. 에디터 패널에서 OpenSCAD 코드를 작성하거나 수정합니다.
  2. Compile을 클릭합니다. — SynapsCAD는 scad-rs를 사용하여 코드를 파싱(Parse) 및 평가(Evaluate)하고, csgrs를 통해 CSG 기하 구조 (CSG Geometry)를 렌더링(Render)합니다.
  3. AI 어시스턴트에게 모델 수정을 요청합니다. — AI는 현재 코드와 부품 라벨 (Part Labels)을 확인하여 코드를 자동으로 업데이트할 수 있습니다.

아키텍처 개요 (Architecture Overview)

SynapsCAD는 세 가지 주요 기둥을 기반으로 구축된 단일 바이너리 (Single-binary) Rust 애플리케이션입니다:

런타임 스택 (Runtime Stack)

레이어 (Layer)기술 (Technology)역할 (Role)
Rendering & ECSBevy 0.153D 뷰포트, 엔티티 관리 (Entity Management), 프레임 루프 (Frame Loop)
...

주요 설계 결정 (Key Design Decisions)

  • Bevy가 메인 스레드 (Main Thread)를 소유합니다. Bevy 앱 루프가 렌더링과 ECS 시스템을 구동합니다. 별도의 Tokio 런타임 (Runtime)은 Bevy Resource로 저장되며, 비동기 (Async) AI 작업을 생성하는 용도로만 사용됩니다.

  • std::sync::mpsc가 비동기 (Async)를 동기 (Sync)로 연결합니다. 백그라운드 작업 (컴파일, AI 스트리밍)은 채널 (Channels)을 통해 결과를 전송합니다. Bevy 시스템은 매 프레임마다 논블로킹 (Non-blocking) 방식인 try_recv()로 이를 폴링 (Poll)하여 뷰포트 (Viewport)의 반응성을 유지합니다.

  • 순수 Rust 컴파일 파이프라인 (Pure-Rust compilation pipeline). OpenSCAD 코드는 scad-syntax에 의해 파싱 (Parsing)되고, 내장된 AST 워커 (AST walker)에 의해 평가되며, csgrs를 통해 삼각형 메쉬 (Triangle meshes)로 렌더링됩니다. 외부 도구나 WASM이 필요하지 않습니다.

  • 내장된 메쉬 피킹 (Built-in mesh picking). Bevy 0.15의 MeshPickingPlugin은 옵저버 패턴 (Observer pattern)을 통한 레이캐스트 (Ray-cast) 피킹을 제공하며, 별도의 외부 피킹 크레이트 (Crate)가 필요하지 않습니다.

시스템 파이프라인 (System Pipeline)

ui_layout_system          — egui 사이드 패널 렌더링 (에디터 + 채팅)
    ↓
trigger_compilation_system — 코드가 변경(dirty)된 경우, 스레드에서 컴파일 실행
...

키보드 단축키 (Keyboard Shortcuts)

동작 (Action)키 (Key)
기즈모 토글 (Toggle gizmos)G
...

3D 뷰포트 내비게이션 (3D Viewport Navigation)

SynapsCAD는 Blender 스타일의 카메라 컨트롤을 사용합니다:

동작 (Action)컨트롤 (Control)
궤도 회전 (Orbit)마우스 휠 클릭 드래그 또는 마우스 오른쪽 버튼 드래그
...

개발 (Development)

실행 (Running)

cargo run          # 앱 실행
cargo clippy       # 린트 (Lint)

테스트 (Tests)

cargo test                         # 모든 테스트 실행
cargo test test_text_              # 패턴과 일치하는 테스트 실행
cargo test -- --nocapture          # println/eprintln 출력 표시

연락처 (Contact)

@boerni@chaos.social

라이선스 (License)

GPL v3

AI 자동 생성 콘텐츠

본 콘텐츠는 HN Code Generation의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0