
2026/10/01 4:44
距離場によるソリッドモデル링向けの実験用ハーフスペースIDE
RSS: https://news.ycombinator.com/rss
要約▶
Japanese 翻訳:
Halfspace は、CAD、CAM、および 3D プリンティングに特化して設計された実験的な IDE で、滑らかな表面を確保するために C0 の連続性を持つ物理的に実現可能なソリッドモデルの作成を最優先しています。ソフトウェアの核心には、パラメータ付きプリミティブ(例:球体、ボックス)の手書きスクリプトを通じて先進的なソリッドモデリングを可能にする距離フィールドの利用があります。重要な技術的進歩として、
fidget-wgpu モジュールがあり、これはネイティブターゲットおよび Web ターゲットの両方でラスター化とポストプロセス処理のための純粋な GPU 実行を促進します。このアーキテクチャは遅い CPU のラウンドトリップを排除し、不連続性によるシェーディングエラーなどの問題を診断しながらパフォーマンスを劇的に改善します。均一な勾配はアルゴリズムの動作およびメッシュ品質の改善のために利用されていますが、正しさのための絶対的な要件ではありません。
開発は正式に 2025 年 4 月に開始され、そのルーツは 2022 年に遡りますが、カジュアルな「vibe コーディング」ではなく論理的な設計に焦点を当てています。Web とネイティブの両環境でクロスプラットフォーム動作し、Halfspace は Rust ベースのスタックを活用しており、これにはインターフェース用の egui/Dock、レンダリング/GPU コンピューティング用の wgpu、スクリプト用の Rhai、並列処理用の Rayon/wasm-bindgen-rayon が含まれます。MPLv2 ライセンスの下でオープンソースですが、ユーザーはソフトウェアが現在実験的なものであること、および API の反復中に開発者が大幅な互換性の破壊を伴う変更を導入する権利を留保していることを注意する必要があります。したがって、このツールは安定性を即時に必要とする重要なアプリケーションよりも、急速なソリッドモデリングを探求しているデザイナーやエンジニア向けの用途として最も適しています。また、これは Fidget カーネルのデモとしても機能し、特に WebAssembly における低速な CPU ベースのラスター化に対処するための改善を促進するものです。
本文
Halfspace:距離場を用いたソリッドモデリング実験用 IDE
Halfspace は、距離場(distance fields) を基盤としたソリッドモデリング向けの実験的開発環境(IDE)です。
デモを体験することを強くお勧めします。ただし、最適な環境は以下の通りです:
- 推奨プラットフォーム: コンピュータ(デスクトップ/ノートPC)
- モバイル Safari の制限:
- WebGPU に関する既知の問題が発生する可能性があります。
- パン・ティルト・ズーム操作のマルチタッチ対応は未実装です。
本 IDE は、描画およびメッシュ化を行う Fidget カーネル を活用したデモアプリケーションとして機能します:
- GUI 内で画像をほぼリアルタイムで描画可能
- モデルを以下の形式でエクスポートできます:
- 画像データ
- 三角形メッシュ
注記: 2026 年時点での情報です。 このプロジェクトは「vibe coding(雰囲気優先のコーディング)」ではなく、著者が 2025 年 4 月より本格的に取り組んでいる人工知能(人間の脳力)を活用した開発によるものです。Fidget の歴史は 2022 年にさかのぼります。
なぜこのプロジェクトなのか
著者はインプlicit なカーネルの開発に多くの時間を費やし、GUI 開発や実際のモデル作成の時間が相対的に少なくなっていました。多くの作品が特定のカーネルを用いたデモであるため、インプlicit な曲面を扱う際の特有の緊張感を感じていました:
- 低レベルな表現: アセンブリ言語に類似した感覚を持ちつつも強力です。
- 複雑さ: 変数
のみを与えられ、それらを組み合わせて形状を表現する必要があり、扱いにくい状況を引き起こします。x, y, z
これに対処するためのアプローチとして、Halfspace は以下の二つの道筋の両方を採用しています:
-
抽象化アプローチ
- 形状と変換の標準ライブラリ(球体、ボックス、移動、スケールなど)を提供。
- 低レベルな表現へコンパイルされる高レベルな言語・ライブラリの上に構築する。
-
アセンブリ簡素化アプローチ
- アセンブリ自体を書きやすくする手法を採用(Kartik Agaram 氏の Mu など)。
- モデルを段階的に構築する仕組みを整備。
- 複雑なモデルを複数の小さな部分に分け、それぞれをパラメータ化して個別に可視化可能。
ソリッドモデリングについて
「ソリッドモデリング」とは、明確な**「内部」と「外部」を持つオブジェクト**を扱うことを意味します:
- 空間内の任意の点について、「モデルの内部か外部か」を判定できる必要があります。
境界表現(Boundary Representation)の課題
一般的な CAD ソフトウェアでは、個々の面をつなぎ合わせて一体の立体ボディを作成しますが、この問題解決は非常に困難です:
- NURBS 曲面の交差解が閉じた形で表せない場合があります。
- 無限に薄いテクスチャ付き壁面が単一の三角形扇形で構築される例が多く見られます(物理的不実現可能性)。
インプlicit な曲面アプローチ
著者は CAD/CAM(3D プリンティング重点)のバックグラウンドから、物理的に実現可能なモデルを求めることを重視し、インプlicit な曲面に基づくジオメトリカーネルの開発に取り組んでいます。
- 利点: 単独の個人や小規模チームで記述・理解が容易。
- Halfspace の方針: Fidget ジオメトリカーネルの周りに GUI をラップし、事前定義されたプリミティブと手書きスクリプトを併用して設計可能。
距離場を用いた IDE
Fidget カーネルは CSG(コンストラクティブソリッドジオメトリ)層のみを使用することも可能ですが、Halfspace は距離場そのものを前面に据えることを選択しました。
なぜ重要なのか?
鋸歯状波に対する 2 つの距離場の比較から重要性がわかります:
- 符号: 内部/外部を定義(青:内部、オレンジ:外部)。
- 値: 境界(値
の部分)を示す。0 - 等高線: 場そのものの値を示す一定間隔の線。
問題点:ジャンプ不連続性(C⁰)
最初の場では、鋸歯状波の垂直端において内部から外部への遷移で値が
を通らない状態が発生します:0
- 法線ベクトルの誤算: Fidget で自動微分を使って法線を計算するため、境界を跨ぐと法線の方向が正しくありません。
- 視覚的欠陥: 3D シェーディングにおいて屋根葺きのような形状に不正確な陰影が生じます。
[比較イメージ] 不良:鋸歯状の端で値が跳躍(0 を通らず) 原因:自動微分による法線計算の誤り 結果:シェーディングの不整合
解決策:一様な勾配を持つ距離場
距離場を前面に出すことで、診断が容易になります。さらなる改良として以下が可能になります:
- 勾配を一様に
に調整。1 - 対角線上に集約させず、均一に分布させる。
「変更前/変更後」の比較効果:
- アルゴリズム全体の振る舞いが向上。
- メッシュ品質向上などの副次的な効果も期待可能(Fidget は正しさのために必須ではありませんが)。
Halfspace:実験的かつクロスプラットフォーム対応
現時点での Halfspace 利用は、冒険心のある決断と言えます。プロジェクトの目標である「インプlicit カーネルに適した『正しい』API の見出し」を追求する中で、大規模な互換性の破断も含めて進めています。
開発スタック(Halfspace スタック)
最小限の苦痛でネイティブ+Web を統合し、サプライチェーン攻撃懸念下でもコードを共有可能な環境を目指しています:
- 言語: Rust(アプリケーションおよびすべての依存ライブラリ)
- Web ビルド:
を手動で利用wasm-bindgen - GUI:
egui - タブ抽象化:
(ウィンドウ・タブの中核)egui_dock - 描画・GPU 計算:
(UI 描画と GPU コンピュート双方で使用)wgpu - スクリプト処理:
Rhai - 並列処理:
とRayonwasm-bindgen-rayon- 多数ワーカーによる並列アルゴリズム高速化
- Web 環境向け短命タスク用のスレッドプール実装
- その他ライブラリ:
:クロスプラットフォーム時間のサポートweb-time- 自作オフスレッドワーカープール:非同期 GPU レンダリング用
各層に不満があっても、全体として"Just Works™"となっていることが驚異的です。
Fidget の改良を牽引する
Halfspace のもう一つの目的は、非自明なアプリケーションとしての Fidget カーネル活用を通じてその改良を促すことです。特に以下の成果があります:
fidget-wgpu の継続的開発
Web 上でのパフォーマンス向上が動機となりました:
- 以前: ネイティブは快適だが、WebAssembly(CPU)では非常に遅くインタラクティブ نبود함。
- 現在: レンダリングおよびポストプロセッシングをGPU だけで完結。CPU との往復なし。
アーキテクチャ面の成果
- ネイティブなレンダリング速度の実現
- ネイティブおよび Web の両ターゲットで達成可能。
- レンダリングロジックの統合と効率化
- Fidget(CPU 上):標準的なレンダリングロジックの実装。
- Halfspace(CPU + GPU):薄いシェーダーのみで RGBA テクスチャを描画。
注: 2D レンダリングパイプラインも完全に GPU 加速化されていますが、Halfspace の独自の複雑なシェーダー存在により、この点は別要因です。
おわりに
Halfspace は実際に動作するソフトウェアです:
- ぜひお試しください(重要用途での使用はお勧めしません)。
- GitHub で Issue を登録するかディスカッションを開いてください。
- 開発は継続中であり、他の仕事と同様に MPLv2 ライセンスの下でオープンソースとして公開されています。
新しい知見があれば開発を進めますので、ご活用ください。