CNCKitchen/stlTexturizer

663
GitHub 스타
163
포크
JavaScript
언어
NOASSERTION
라이선스
2026.07.05
최근 푸시
2026.04.30
별표한 날

AI 분석

설치 난이도: 쉬움
큐레이터 노트
3D 프린팅용 STL 파일에 텍스처 변위를 적용해야 하는 사용자에게 매우 적합합니다. 설치 없이 웹에서 바로 사용할 수 있고, 다양한 투영 모드와 마스킹 기능을 제공하여 복잡한 표면 처리도 가능합니다.

강점

  • 설치 없이 브라우저에서 바로 사용 가능하며, 다양한 투영 모드와 24가지 내장 텍스처를 제공합니다.
  • 적응형 세분화와 QEM 데시메이션을 통해 고품질 변위 메시를 생성하고, 실시간 미리보기로 결과를 확인할 수 있습니다.
  • 면 페인팅 및 각도 마스킹 등 정교한 표면 제어 기능을 제공합니다.

약점

  • 내보내기 형식이 STL 바이너리로 제한되어 있어 OBJ나 3MF 등 다른 형식으로의 직접 내보내기를 지원하지 않습니다.
  • 브라우저 기반이므로 매우 큰 메시(예: 1천만 삼각형 이상) 처리 시 성능이나 메모리 제한이 발생할 수 있습니다.

주의사항

  • 로컬 실행 시 HTTP 서버가 필요하며, file:// URL에서는 작동하지 않습니다.
  • 변위 진폭이 모델 최소 치수의 10%를 초과하면 경고가 발생하지만, 사용자가 이를 무시할 경우 예상치 못한 결과가 나올 수 있습니다.
  • AGPL v3 라이선스이므로 상업적 사용이나 폐쇄 소스 통합 시 주의가 필요합니다.

시작 가이드

  • 저장소를 클론하고 로컬 HTTP 서버로 실행하여 기본 기능을 테스트합니다.
  • 내장 텍스처와 투영 모드를 실험하며 원하는 결과를 얻는 방법을 익힙니다.
  • 면 페인팅 및 각도 마스킹 기능을 활용하여 특정 영역만 변위를 적용하는 방법을 학습합니다.

README 한국어 번역

이 번역은 AI가 원문 README를 옮긴 것입니다. 원문이 항상 우선합니다.

CNCKitchen의 BumpMesh

라이브: https://bumpmesh.com GitHub: https://github.com/CNCKitchen/stlTexturizer 저자: Stefan Hermann

설치가 필요 없는 브라우저 기반 도구로, 3D 메시에 표면 변위 텍스처를 적용할 수 있습니다.

STL, OBJ 또는 3MF 파일을 불러오고, 텍스처를 선택하고, 매개변수를 조정한 후, 변위가 적용된 새로운 STL을 내보내 슬라이싱할 수 있습니다.

최근 업데이트

  • 프로젝트 파일 저장/불러오기 (.bumpmesh)
  • 실행 취소/재실행 기록
  • 부품 회전 기즈모
  • 메시 진단
  • 부드러운 마스킹 경계
  • 새로운 언어: 이탈리아어, 스페인어, 포르투갈어, 일본어, 프랑스어
  • 2~3배 속도 향상
  • 3MF 내보내기
  • 마우스 휠로 값 미세 조정
  • 사용성 개선

기능

텍스처

  • 24가지 내장 시임리스 텍스처 — 바구니, 벽돌, 버블, 탄소 섬유, 크리스탈, 점, 그리드, 그립 표면, 육각형, 헥사곤, 아이소그리드, 뜨개질, 널링, 가죽 2, 노이즈, 줄무늬(×2 변형), 보로노이, 직조(×3 변형), 나무(×3 변형)
  • 사용자 정의 텍스처 — 자신의 이미지를 변위 맵으로 업로드
  • 텍스처 부드럽게 하기 — 변위 맵을 적용하기 전에 흐리게 하는 정도를 설정 가능

투영 모드

  • Triplanar (기본값) — 표면 법선에 따라 세 개의 평면 투영을 혼합; 복잡한 형상에 가장 적합
  • Cubic (Box) — 6개의 상자 면에서 투영하며 가장자리 이음새 혼합 및 스마트 축 우선 적용
  • Cylindrical — 원통 축을 중심으로 텍스처를 감싸며 캡 각도 설정 가능
  • Spherical — 객체 주위에 구형으로 텍스처 매핑
  • Planar XY / XZ / YZ — 평면 축 정렬 투영

UV 및 변환 제어

  • Scale U/V — 독립 또는 잠금 스케일링 (0.05–10×, 로그 스케일)
  • Offset U/V — 각 축에서 텍스처 위치 지정
  • Rotation — 투영 전 텍스처 회전
  • Seam Blend Strength — Cubic/Cylindrical 투영 면이 만나는 곳의 딱딱한 가장자리를 부드럽게 함
  • Seam Band Width — 이음새 가장자리에서 혼합 영역 너비 제어
  • Cap Angle (Cylindrical) — 상단/하단 캡 투영으로 전환하는 임계값

변위

  • Amplitude — 변위 깊이를 0%에서 100%까지 조정
  • 대칭 변위 — 50% 회색은 중립, 흰색은 돌출, 검은색은 함몰 (부피 유지)
  • 3D 변위 미리보기 — 실시간 GPU 가속 미리보기로 실제 정점 변위 표시
  • 진폭 중복 경고 — 깊이가 모델 최소 치수의 10%를 초과하면 경고

표면 마스킹

  • 각도 마스킹 — 거의 수평인 상단 및/또는 하단 면에서 텍스처 억제 (각각 0°–90° 임계값)
  • 면 제외/포함 페인팅 — 개별 면을 제외(주황색)하거나 독점 포함(녹색)하도록 페인팅
  • 브러시 도구 — 단일 삼각형 클릭 또는 반경 조절 가능한 원형 브러시
  • 버킷 채우기 — 설정 가능한 2면각 임계값까지 인접 면을 채움
  • 지우기 — Shift를 누르고 있으면 페인팅된 면 취소
  • 모두 지우기 — 마스킹 초기화

메시 처리

  • 적응형 세분화 — 가장자리가 목표 길이 이하가 될 때까지 세분화; 날카로운 모서리(>30° 2면각) 유지
  • QEM 데시메이션 — Quadric Error Metrics를 사용하여 결과를 목표 삼각형 수로 단순화; 경계 보호, 링크 조건 검사, 법선 뒤집힘 거부, 모서리 보존 포함
  • 메시 진단 — 열린 가장자리 및 쉘 수 자동 검사, 고급 진단 및 문제 영역 오버레이 강조
  • 안전 캡 — 세분화 중 메모리 부족을 방지하기 위해 1천만 삼각형 하드 제한

3D 뷰어

  • 궤도/이동/확대/축소 제어
  • 와이어프레임 토글 — 메시 토폴로지 시각화
  • 메시 정보 — 실시간 삼각형 수, 파일 크기, 경계 상자 치수
  • 그리드 및 축 표시기 — X = 빨강, Y = 초록, Z = 파랑
  • Place on Face — 면을 클릭하여 프린트 베드 쪽으로 방향 지정

파일 지원

  • .STL — 바이너리 및 ASCII
  • .OBJ — Three.js OBJLoader를 통해
  • .3MF — ZIP 기반 형식 (fflate 압축 해제 사용)

내보내기

  • 변위가 적용된 바이너리 STL 다운로드
  • 세분화 → 변위 → 데시메이션 → 쓰기 단계를 통한 진행 보고
  • 설정 가능한 가장자리 길이 임계값 및 출력 삼각형 제한

기타

  • 라이트/다크 테마 — OS 설정을 따르며 브라우저별로 유지
  • 다국어 — 영어 및 독일어 UI, 자동 감지

사용법

  1. 최신 브라우저(Chrome, Edge, Firefox, Safari)에서 index.html을 엽니다.
  2. 뷰포트에 모델을 드롭하거나 Load STL…을 클릭합니다 (STL, OBJ, 3MF 지원).
  3. 사이드바에서 텍스처 프리셋을 선택하거나 (또는 사용자 정의 이미지 업로드).
  4. 투영 모드를 선택하고 UV 스케일, 오프셋, 회전 및 진폭을 조정합니다.
  5. 선택적으로 각도 슬라이더나 페인트 도구로 표면을 마스킹하거나 제외합니다.
  6. Export STL을 클릭하여 변위된 메시를 다운로드합니다.

참고: 모든 처리는 브라우저 내에서만 실행됩니다 — 어떤 데이터도 서버에 업로드되지 않습니다.

프로젝트 구조

index.html            # 메인 진입점
style.css             # 스타일 (라이트/다크 테마)
logo.png              # 파비콘 및 헤더 로고
CNAME                 # 사용자 정의 도메인 (bumpmesh.com)
textures/             # 내장 JPG/PNG 변위 맵 이미지 (24개 텍스처)
js/
  main.js             # 앱 부트스트랩 및 UI 연결
  viewer.js           # Three.js 장면/카메라/컨트롤
  stlLoader.js        # 바이너리 및 ASCII STL 파서
  presetTextures.js   # 내장 텍스처 프리셋 + 사용자 정의 업로드
  previewMaterial.js  # 라이브 및 변위 미리보기를 위한 Three.js 재질
  mapping.js          # UV 투영 로직 (7가지 모드)
  displacement.js     # 정점 변위 베이킹
  subdivision.js      # 적응형 메시 세분화
  decimation.js       # QEM 메시 데시메이션
  exclusion.js        # 면 제외/포함 페인팅
  exporter.js         # 바이너리 STL 내보내기
  i18n.js             # 번역 (EN / DE)

로컬에서 실행

모든 처리는 브라우저 내에서만 실행되며 백엔드나 빌드 단계가 필요 없습니다. 브라우저가 file:// URL에서 ES 모듈 가져오기와 텍스처 로딩을 차단하므로 로컬 HTTP 서버만 있으면 됩니다.

# 저장소 복제
git clone https://github.com/CNCKitchen/stlTexturizer.git
cd stlTexturizer

그런 다음 프로젝트 루트에서 정적 파일 서버를 시작합니다. 설치된 것을 선택하세요:

Python (3.x)

python -m http.server 8000

Python (2.x)

python -m SimpleHTTPServer 8000

Node.js (npx, 설치 불필요)

npx serve.

PHP

php -S localhost:8000

브라우저에서 http://localhost:8000을 열면 준비 완료입니다.

팁: 모든 정적 서버가 작동합니다 — 앱에는 서버 측 종속성이 없습니다.

종속성

CDN(jsDelivr)을 통해 로드되며 빌드 단계나 npm 설치가 필요 없습니다:

라이브러리 버전 라이선스 용도
Three.js 0.170.0 MIT 3D 렌더링, 장면 관리, 재질
OrbitControls 0.170.0 MIT 카메라 궤도/이동/확대/축소
STLLoader 0.170.0 MIT 바이너리 및 ASCII STL 가져오기
OBJLoader 0.170.0 MIT OBJ 메시 가져오기
LineSegments2 / LineSegmentsGeometry / LineMaterial 0.170.0 MIT 넓은 선 와이어프레임 오버레이
fflate 0.8.2 MIT 3MF 가져오기/내보내기를 위한 ZIP 압축 및 압축 해제

모든 종속성은 MIT 라이선스입니다.

라이선스

GNU AGPL v3.0 — LICENSE 참조.

원본 저장소: CNCKitchen/stlTexturizer

라이선스: NOASSERTION

게재 제외를 원하시면 삭제 요청을 보내주세요.