- 3Dプリンティングとプロシージャル生成を組み合わせ、複雑な構造のアート作品を制作したプロジェクト
- ランダムに配置した点をスプラインでつなぎ、勾配と回転半径を制御する経路生成アルゴリズムで構成
- 速度制御と摩擦の問題を解決するため、最小回転半径と強めのバンキングを適用し、トラックの安定性を確保
- 支持体は粒子システムベースで生成され、美的形態と構造的安定性の両方を考慮
- プロジェクトはOpenSCADの限界を超えており、今後はSDFベースの書き直しと速度モデリングの改善を計画
プロジェクト概要
- Marble Fountainは、プロシージャル生成手法を用いて3Dプリンターで出力した複雑なアート構造物
- Formlabs入社後に高性能プリンターを使えるようになり、大型のアルゴリズム構造物の制作を試みた
- 「最も複雑なアート作品」を目標に設計された構造物
- 3Dプリンティングでは複雑さがコストに影響せず、設計の限界はCAD作業時間によって決まる
トラック(Tracks)
- 初期システムはランダムな点配置 → スプライン接続 → 一定勾配付与という方式で構成
- 最初のバージョンは単純にソリッド構造からチューブを差し引く形だったが、機能拡張のため**経路解決アルゴリズム(path solver)**を追加
- 経路解決器は、上部と下部を結ぶランダムな線分シリーズから開始
- 初期条件が構造形態に大きく影響し、さまざまなアルゴリズム変形を実験
- 経路点は次の規則に従う
- 境界ボックス内を維持
- 等間隔を維持
- 一定の高さへ引き寄せて固定勾配を維持
- 最小・最大回転半径を制限
- 他のトラックおよび自分のトラックの離れた区間と相互反発
- 勾配変化を緩和し、勾配増加を防止
- 速度制御の問題は予想以上に複雑
- 玉は点質量のようには動かず、トラックのバンキング変化が回転慣性と摩擦に影響する
- 直線区間では速度が過度に増加し、急旋回では減速によって停止する危険が生じる
- 解決策として、最小回転半径の設定と強めのバンキング適用によって速度の消耗を促した
- リフト構造は**ボールスクリュー(ball screw)**のように動作
- 玉がねじ軸を四方から拘束し、上部ベアリングなしでも回転可能
- 片側にしか玉がない場合、激しい振動ですべての玉がトラックから外れる失敗モードが発生
支持体(Supports)
- 支持体生成は粒子システムベースのトップダウン反復処理として実装
- 構造的衝突よりも美的形態の調整に多くの時間を投入
- プリンターのオーバーハング許容範囲を積極的に活用
- 各支持体の動作規則
- 距離とサイズの類似度に応じて他の支持体へ引力
- 他の支持体との反発
- 境界ボックス内を維持
- 構造中心から一定半径を維持
- 支持体は慣性(inertia)を持ち、その結果アーチ状の曲線構造が形成される
今後の計画(Looking forward)
- 最終モデルの書き出し時間は5〜20分
- OpenSCADの限界により最適化の余地がある
- 今後はSDFライブラリベースの書き直しを検討
- 現在のシステムには速度推定機能がなく、単純なヒューリスティックに依存
- カメラベースの速度測定で加速度モデルを構築できれば時間を節約できる可能性
- 一定勾配の維持は衝突防止には不利だが、速度制御には必須
- 表面が滑り始める**臨界点(response curve)**を探る計画
回顧(Looking back)
- 2024年2月から9月まで約7か月にわたり進められた最大の個人プロジェクト
- 展示会(New Alliance Gallery, Somerville)への出品準備で終盤に集中的な作業
- 展示中は1時間あたり2〜3個の玉を失い、モーター過熱のため数時間しか稼働できなかった
- 過労でプロジェクトを中断し、1年後に公開
- 同僚Alexの助言とフィードバック、そして数多くの玉の実験への感謝に言及
技術要約
- 使用技術: Procedural Generation, 3D Printing, Python, OpenSCAD
- 構造的特徴: 経路解決アルゴリズム + 粒子ベース支持体システム
- 芸術的目標: 機械的複雑性と美しい曲線の結合
- 原文に追加情報なし
1件のコメント
Hacker Newsのコメント
粒子シミュレーションを使って有機的な樹木状の支持構造を作ったアプローチが本当に創造的だと思う
私の理解では、物理法則を定義し、「時間」軸を z 軸にマッピングしてシミュレーションを回したように見える
これが既知の手法なのか、それとも自分で考案したのか気になる。いずれにせよ、出来上がった作品の美的完成度が素晴らしくて、自分でも実験してみたくなる
マーブルランの設計者がコンピューターを使わない場合、しばしばビー玉の脱線問題に悩まされる
ビー玉がトラックから飛び出したり詰まったりする様子を観察しながら原因を推測し、手作業で調整しなければならない
でもこの作品は、何時間もビー玉が飛び出さないという点が印象的だ
トラックが2本のレールで構成されているため、ビー玉は常に2点で接触する
完璧な**バンク角(傾き)**を維持して、重力と遠心力のバランスを取ることが鍵のようだ
トラックはかなり大胆に傾けられていて、ビー玉が速度を出しすぎたり飛び出したりしないようになっている
そのため、すべてのビー玉がほぼ同じ速度で滑らかに下ってくる
ただし30分ごとに1個くらいは脱線する。私は動画を撮って問題の区間を見つけ出し、手動調整する代わりにジェネレーターのコードを修正して再出力するやり方で改善した
カメラによるフィードバックループを組み込むことも考えているが、それはまた別のプロジェクトになりそうだ
この作品は本当に美しい。トラックを使ってオーディオをエンコード/デコードできたら面白そうだ
ビー玉の動きで異なる周波数を生み出すような形で
もう少し柔らかい素材や大きいベアリングを使えば可能かもしれないが、ひとまずは通常版を完成させることに集中した
YouTubeリンク
3Dプリンターの理想的な活用例を示す好例だと思う
これほど滑らかに動くビー玉トラックや有機的な形状を別の方法で作ろうとしたら、とてつもない手間がかかったはずだ
動画が本当によく作られている。シンプルなボイスオーバーと音楽のシンクロ、そして作品そのものがすべてを語っている。素晴らしい
この作品がとても気に入った。**「妙に満足感がある」**要素が詰まっている
私も子どもたちに確率を説明するためにビー玉トラックを使っていたので、これを HN で見たときはまるで自分の考えを読まれたような気がした
シンプルでありながら催眠的で美しい動きが印象的だ
燃える炎、波、川の流れ、テレビ画面など、どれも同じ理由で長く見入ってしまう
このビー玉トラックは実際には予測可能なシステムなのに、つい見続けてしまうのが不思議だ
白や透明な素材にLEDを組み込んだバージョンも見てみたい。まるで虹色の道路のようになりそうだ
私も似たようなプロジェクトを進めている
Python と Build123D、3Dプリンターを使って、手続き型生成ベースのビー玉トラックを作っている
この技術が拡張されたら、どんなスケールの創造性が可能になるのか気になる
ブロック単位で組み立てられる建物、現実版 Minecraft のような世界のことだ
また映画 Fracture にも見事なビー玉装置が登場する
YouTubeリンク