STL 파일을 올리면 3D 프린팅 시간·재료·비용을 계산하는 브라우저 도구를 만들었다
슬라이서 전에 빠르게 확인할 수 있는 견적이 필요했다
STL 파일을 받았을 때 가장 먼저 궁금한 것은 보통 세 가지다.
- 이 프린터 베드에 들어가는가
- 필라멘트가 얼마나 필요한가
- 몇 시간이나 걸리고 비용은 얼마인가
정확한 답은 결국 슬라이서가 만든 G-code에 있다. 하지만 단순 견적을 보려고 매번 프로필을 열고 슬라이싱하는 과정은 조금 무겁다. 그래서 STL 파일을 브라우저에서만 읽어 빠르게 감을 잡는 STL 3D 프린팅 시간·재료량 계산기를 만들었다.

이 도구는 웹 슬라이서가 아니다. G-code를 다운로드하거나 프린터로 전송하지 않는다. 대신 실제 슬라이서에 넣기 전에 모델 크기, 출력 위험, 예상 재료량과 비용을 확인하는 빠른 견적 도구에 가깝다.
STL은 서버로 전송하지 않는다
가장 중요한 원칙은 로컬 처리다.
STL 파일은 사용자의 브라우저에서 읽고 Web Worker가 파싱한다. 서버에는 파일을 업로드하지 않는다. 집 안 배치용 모델, 제작 중인 부품처럼 외부에 보내고 싶지 않은 파일도 비교적 부담 없이 확인할 수 있다.

파일을 선택하면 다음 정보를 확인한다.
- Binary STL과 ASCII STL 파싱
- 삼각형 수, 바운딩 박스, X/Y/Z 크기
- 표면적과 폐쇄 메시 체적
- 베드 접촉 예상 면적과 오버행 비율
- 프린터 빌드 볼륨 적합 여부
- 모델 높이 대비 접지 영역, 워핑·브림 위험
STL에는 단위 정보가 없어서 크기가 이상하게 보일 때는 모델링 프로그램에서 mm 단위로 내보냈는지도 함께 확인해야 한다.
프린터와 재료 조건을 분리했다
견적에 필요한 프린터 수치는 단순히 “최대 속도” 하나가 아니다. 제조사가 공개하는 최대 속도는 벤치마크 조건일 수 있고, 일반 출력의 시간 견적에 그대로 쓰면 지나치게 낙관적인 값이 나온다.
그래서 계산기에서는 프린터 프로필에 다음을 분리해 둔다.
- 빌드 볼륨과 밀폐형 여부
- 공식 최대 속도와 일반 출력 기준 속도
- 최대 가속도와 체적 유량 상한
- 평균 출력 소비전력과 정격 전력
- 기본 노즐, 노즐·베드 최대 온도
- PLA, PETG, ABS의 권장 여부
재료는 PLA, PETG, ABS를 제공한다. 필라멘트 가격과 전기요금은 직접 바꿀 수 있으므로, 스풀 가격이나 가정용 전기요금 조건에 맞춰 볼 수 있다.
예상 시간은 무엇을 반영하나
처음에는 체적을 단순 체적 유량으로 나누는 근사식에서 시작했다. 지금은 조금 더 나눠서 추정한다.
- 외벽, 인필, 서포트, 퍼지 타워의 압출 시간
- 재료별 체적 유량 제한
- 프린터 일반 출력 속도와 가속도 보정
- 레이어 전환과 첫 레이어 감속
- 비압출 이동 거리
그래도 실제 슬라이서와 같은 결과는 아니다. 벽 순서, 인필 패턴, 가속도 설정, 서포트 형태, 냉각 대기, 프린터 상태에 따라 실제 시간은 달라질 수 있다. 그래서 결과는 기준값과 범위를 함께 보여주고, 항상 참고용 추정치임을 표시한다.
레이어 경로를 브라우저에서 분석하는 중이다
형상 기반 추정을 보완하기 위해, 별도 Worker에서 STL과 각 레이어 평면의 교차 선분을 분석한다. 이 과정은 대형 STL에서 오래 걸릴 수 있으므로 진행률과 현재 레이어 번호를 표시한다.
경로 분석 중 · 248/1,236 레이어 처리 · 20%
교차 선분은 0.01mm 격자로 스냅한 뒤 연결한다. 그 결과로 외곽 루프, 내부 구멍, 열린 체인을 구분한다. 지금은 외벽 경로 길이와 이동 거리 보정에 사용하고 있다.
열린 체인이 많이 나온다면 손상된 메시나 비매니폴드 구조일 가능성도 있으므로, 차후에는 메시 품질 경고로 더 적극적으로 보여줄 계획이다.
서포트와 첫 레이어는 규칙 기반으로 안내한다
완전한 서포트 생성은 사실상 작은 슬라이서를 만드는 일이다. 이 도구에서는 오버행 비율, 접지 면적, 세장비, 재료 수축성을 조합해 서포트와 브림을 추천한다.
예를 들어 다음과 같은 안내를 볼 수 있다.
- 하향 오버행이 많아 서포트 사용 권장
- 모델 높이에 비해 접지 면적이 작아 브림 5mm 권장
- ABS와 넓은 바닥면 조합이라 워핑 주의
- 현재 프린터가 밀폐형이 아니라 ABS 출력 주의
H2D를 듀얼 노즐 모드로 선택하면 서포트 재료, 툴 전환 시간, 퍼지 타워의 재료량도 근사치에 포함한다. 다만 실제 멀티 재료 출력의 퍼지량은 슬라이서 설정이 우선이다.
다음에 더 해볼 것
도구가 완전한 슬라이서가 되는 것은 피하고 싶다. 대신 출력 전에 실패 가능성을 줄이는 정보를 더 잘 보여주는 방향으로 발전시키려 한다.
- 현재 방향과 90도 회전 후보를 비교하는 방향 추천
- 얇은 벽, 작은 구멍, 열린 메시 경고
- 외곽 루프 길이를 이용한 브림 재료량 보정
- 인접 레이어 차이로 브리지와 오버행을 더 정확히 구분
- 작은 모델의 냉각 대기 시간 보정
가장 중요한 기준은 그대로다. 파일을 올리고 잠깐 기다리면, 실제 슬라이서 전에 “이 모델을 지금 출력해도 될지” 판단할 수 있는 정보를 보여주는 것.
사용해보기
관련 태그 글
GA4 조회수를 사이트에 그대로 보여주지 않기로 한 이유
GitHub Pages 블로그는 그대로 두고, 공개 조회수만 Cloudflare Worker와 D1으로 분리하기로 했다. GA4 baseline을 안전하게 이어 붙이고 익명 중복을 제한하는 기준을 정리한다.
astro + tailwind로 이전 했습니다.
Next.js 기반 정적 블로그를 Astro + Tailwind로 이주하면서 얻은 것들(속도, 단순함, 디자인 시스템).
달리는 것만으로는 타임어택이 되지 않았다 - Apex Seoul에 결승선을 만드는 법
Apex Seoul에 checkpoint split, best record, 가로등과 Π형 gate를 더하고, 고정 카메라에서도 차량이 도로 위를 계속 달려 사라지는 finish 연출을 만든 과정을 정리합니다.
코너에서 핸들을 놓았는데 차가 도로를 따라갔다 - 자동 추종을 걷어낸 기록
Apex Seoul의 무입력 차량이 코너를 따라가던 원인을 road-relative 좌표와 passive yaw에서 찾고, world heading 기반 횡이동, 조향 sprite 분리, 가드레일 contact lifecycle과 코너 출구 회전 제한으로 조향이 필요한 코너를 다시 만들었습니다.