はじめに
- Fidgetは、主に陰関数サーフェスのバックエンド向けに設計された、大規模な数学式を表現・コンパイル・評価するライブラリです。
- 様々な用途に柔軟に利用できるライブラリです。
陰関数サーフェスとは?
- 陰関数サーフェスは、f(x, y, z)→d の形式の式で、d が正ならモデルの外部、負なら内部に位置することを示します。
- たとえば、半径1の球は f(x,y,z)=x²+y²+z²−1 で表現できます。
- Fidgetは、基本的な算術演算で式を構成する閉形式の陰関数サーフェスに重点を置いています。
陰関数サーフェスの利点
- 陰関数サーフェスは簡潔で、大規模な並列評価に適しています。
- CSG演算(和集合、交差など)をシンプルに処理できます。
- 閉形式の方程式は最適化に有利で、評価時にどの分岐が選択されるかを追跡できます。
起源
- 過去10年間、陰関数サーフェスのレンダリングと評価に関する研究を行ってきました。
- Fidgetは個人の研究プロジェクトであり、libfiveのような既存のカーネルの代わりにRustで実装されているため使いやすくなっています。
ライブラリ構造
- Fidgetは、主に3つの分離されたレイヤーとデモアプリケーションで構成されています。
フロントエンド:数式構築
- FidgetはRhaiスクリプティング言語を使って数学式を構築します。
- 数学木は有向非巡回グラフとして重複排除されます。
- SSAテープは、グラフを線形コードとしてフラット化します。
バックエンド:高速で柔軟な評価
- Fidgetバックエンドはフロントエンドとは分離されており、多様な評価モードをサポートしています。
- JITコンパイラはバイトコードを機械命令に変換し、性能を最大化します。
アルゴリズム
- Fidgetは高速評価を基盤に、様々なレンダリングやメッシングアルゴリズムを実装します。
- メッシングはManifold Dual Contouringを使用して、水密性、マニフォールド性、鋭い特徴の保持を保証します。
デモ
- Fidgetには複数のデモが含まれており、Web GUIが最も興味深い部分です。
- Web開発の最新技術を探求する機会として活用されています。
将来性
- GPUバックエンドの追加、メッシングの改善、標準ライブラリの構築、上位言語バインディングなどが検討されています。
結論
- Fidgetは現在、公開されており、Rustプロジェクトに簡単に追加できます。
- オープンソースおよび商用利用に適したライセンスで提供されています。
1件のコメント
Hacker Newsのコメント
このプロジェクトは、データ構造、アルゴリズム、低レベル性能最適化、コンパイラ、レンダリング/コンピュータグラフィックス、UI/UXデザインツール、GPGPUプログラミングなど、幅広いコンピュータサイエンス分野を扱っている
他の優れた投稿を読んでいた
自分のインプリシットサーフェス・ドロワーを作成していた時、このプロジェクトはかなり役立っただろうと思う
libfiveはほぼC++で書かれた4万行規模で、作者にとってもハッキングしづらい
最高のコードベースCADソフトを探しており、cad queryを試したがいくつか問題があった
大学時代、原子核物理シミュレータでインプリシットサーフェスベースの作業をしていた
表面生成用の抽象構文木をSDFで扱いたい
インプリシットサーフェスに関する論文とデモを見たことがあり、想像力を働かせてモデルを作れる
Ian Henryのプロジェクトを思い出させる
グラフィック作業の経験がない者として、このプロジェクトはかなり面白い