3 ポイント 投稿者 GN⁺ 2025-01-09 | 1件のコメント | WhatsAppで共有

はじめに

  • 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件のコメント

 
GN⁺ 2025-01-09
Hacker Newsのコメント
  • このプロジェクトは、データ構造、アルゴリズム、低レベル性能最適化、コンパイラ、レンダリング/コンピュータグラフィックス、UI/UXデザインツール、GPGPUプログラミングなど、幅広いコンピュータサイエンス分野を扱っている

    • ソーシャルメディアやブログのRSSフィードで追加アップデートを受け取ることができる
  • 他の優れた投稿を読んでいた

  • 自分のインプリシットサーフェス・ドロワーを作成していた時、このプロジェクトはかなり役立っただろうと思う

    • 自分のアプローチは一部似ているが、最適化は十分ではなく、GLSLを直接生成している
    • このプロジェクトに置き換えたくなる衝動を感じている
  • libfiveはほぼC++で書かれた4万行規模で、作者にとってもハッキングしづらい

    • 数か月コンパイルしていないとビルドが壊れることが多く、CMakeを修正する必要がある
    • ビルドの問題がそれほど深刻だったことに驚いた
  • 最高のコードベースCADソフトを探しており、cad queryを試したがいくつか問題があった

    • 3Dプリンティング向けの推奨ソフトを探している
  • 大学時代、原子核物理シミュレータでインプリシットサーフェスベースの作業をしていた

    • R-関数はどこでも微分可能な性質を持つ
    • 今も多くのレガシーFortranコードが使われているだろうと推測している
  • 表面生成用の抽象構文木をSDFで扱いたい

    • 目標メッシュ/ポイントクラウドを使って、欲しい形状に合うツリーを見つけるというアイデア
  • インプリシットサーフェスに関する論文とデモを見たことがあり、想像力を働かせてモデルを作れる

    • b-repカーネルでどこまでできるのか知りたい
    • 高速でオープンソース、かつ並列処理可能なカーネルを見たい
  • Ian Henryのプロジェクトを思い出させる

  • グラフィック作業の経験がない者として、このプロジェクトはかなり面白い

    • もっとデモがあるといい
    • Webエディタに、さまざまなプログラムを試せるドロップダウンメニューがあるといいと提案する