# 피젯 기술

> Clean Markdown view of GeekNews topic #18642. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18642](https://news.hada.io/topic?id=18642)
- GeekNews Markdown: [https://news.hada.io/topic/18642.md](https://news.hada.io/topic/18642.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-01-09T10:08:18+09:00
- Updated: 2025-01-09T10:08:18+09:00
- Original source: [mattkeeter.com](https://www.mattkeeter.com/projects/fidget/)
- Points: 3
- Comments: 1

## Topic Body

### 소개
- Fidget는 대규모 수학 표현식을 표현, 컴파일, 평가하는 라이브러리로, 주로 암묵적 표면의 백엔드로 설계되었음.
- 다양한 용도로 유연하게 사용할 수 있는 라이브러리임.

### 암묵적 표면이란?
- 암묵적 표면은 f(x,y,z)→d 형태의 표현식으로, d가 양수면 모델 외부, 음수면 내부에 위치함을 나타냄.
- 예를 들어, 반지름 1의 구는 f(x,y,z)=x²+y²+z²−1로 표현 가능함.
- Fidget는 기본 산술 연산으로 표현식을 구성하는 닫힌 형태의 암묵적 표면에 중점을 둠.

### 암묵적 표면의 장점
- 암묵적 표면은 간결하고 대규모 병렬 평가에 적합함.
- CSG 연산(합집합, 교집합 등)이 간단하게 처리 가능함.
- 닫힌 형태의 방정식은 최적화에 유리하며, 평가 중 어떤 분기가 선택되는지 추적 가능함.

### 기원
- 지난 10년간 암묵적 표면의 렌더링과 평가에 대해 연구해왔음.
- Fidget는 개인 연구 프로젝트로, libfive와 같은 기존 커널 대신 Rust로 작성되어 사용이 용이함.

### 라이브러리 구조
- Fidget는 세 개의 주로 분리된 계층과 데모 애플리케이션으로 구성됨.

### 프론트엔드: 수학 표현식 구축
- Fidget는 Rhai 스크립팅 언어를 사용하여 수학 표현식을 구축함.
- 수학 트리는 유향 비순환 그래프로 중복 제거됨.
- SSA 테이프는 그래프를 직선 코드로 평탄화함.

### 백엔드: 빠르고 유연한 평가
- Fidget 백엔드는 프론트엔드와 분리되어 있으며, 다양한 평가 모드를 지원함.
- JIT 컴파일러는 바이트코드를 기계 명령어로 변환하여 성능을 극대화함.

### 알고리즘
- Fidget는 빠른 평가를 기반으로 다양한 렌더링 및 메싱 알고리즘을 구현함.
- 메싱은 Manifold Dual Contouring을 사용하여 수밀성, 매니폴드성, 날카로운 특징 보존을 보장함.

### 데모
- Fidget는 다양한 데모를 포함하며, 웹 GUI는 가장 흥미로운 부분임.
- 웹 개발의 최신 기술을 탐구하는 기회로 활용됨.

### 미래 가능성
- GPU 백엔드 추가, 메싱 개선, 표준 라이브러리 구축, 상위 언어 바인딩 등이 고려되고 있음.

### 결론
- Fidget는 이제 공개적으로 사용 가능하며, Rust 프로젝트에 쉽게 추가할 수 있음.
- 오픈 소스 및 상업적 사용에 친화적인 라이선스로 제공됨.

## Comments



### Comment 33163

- Author: neo
- Created: 2025-01-09T10:08:18+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=42634624) 
- 이 프로젝트는 다양한 컴퓨터 과학 분야를 다루며, 데이터 구조, 알고리즘, 저수준 성능 작업, 컴파일러, 렌더링/컴퓨터 그래픽스, UI/UX 디자인 도구, GPGPU 프로그래밍 등을 포함함
  - 소셜 미디어나 블로그 RSS 피드를 통해 추가 업데이트를 받을 수 있음

- 저자는 다른 훌륭한 게시물을 읽고 있었음

- 자신의 암시적 표면 드로어를 작성할 때 이 프로젝트가 매우 유용했을 것이라고 생각함
  - 자신의 접근 방식은 일부 유사하지만 최적화가 덜 되어 있으며 GLSL을 직접 생성함
  - 이 프로젝트로 대체하고 싶다는 유혹을 느끼고 있음

- libfive는 대부분 C++로 작성된 40K 라인으로, 원작자에게도 해킹하기 어려움
  - 몇 달 동안 컴파일하지 않으면 빌드가 깨지는 경우가 많아 CMake를 수정해야 함
  - 빌드 문제가 그렇게 큰 문제인지 놀라움을 표함

- 최고의 코드 기반 CAD 소프트웨어를 찾고 있으며, cad query를 시도했으나 몇 가지 문제가 있었음
  - 3D 프린팅을 위한 추천 소프트웨어를 찾고 있음

- 대학 시절 원자력 물리학 시뮬레이터에서 암시적 표면을 기반으로 한 작업을 했음
  - R-함수는 모든 곳에서 미분 가능하다는 특성을 가짐
  - 여전히 많은 레거시 Fortran 코드를 사용하고 있을 것으로 추정함

- 표면 생성용 추상 트리 작업을 SDF를 사용하여 하고 싶어함
  - 목표 메쉬/포인트 클라우드를 사용하여 원하는 모양에 맞는 트리를 찾는 아이디어

- 암시적 표면에 대한 논문과 데모를 본 적이 있으며, 상상력을 발휘하여 모델을 구축할 수 있음
  - b-rep 커널에서 가능한 것들을 할 수 있는지 궁금해함
  - 빠르고 오픈 소스이며 병렬 처리가 가능한 커널을 보고 싶어함

- Ian Henry의 프로젝트를 떠올리게 함

- 그래픽 작업을 해본 적 없는 사람으로서 이 프로젝트가 매우 흥미로움
  - 더 많은 데모가 있었으면 좋겠다고 생각함
  - 웹 에디터에 다양한 프로그램을 시도할 수 있는 드롭다운 메뉴가 있었으면 좋겠다고 제안함
