関数表現のCAD
次にOpenSCADを紹介するが、これは関数幾何学ソルバだ。これを使えば、形状を記述するプログラムを書く事ができる。これはハードウェア記述言語だ。そして、これと同じようなものとして、僕がイチオシなのはAntimonyだ。
図. OpenSCAD
図. Antimony
繰り返しになるが、点として形状を表すことから始まり、僕たちは曲面を表現できるようになった。3次元の曲面は多項式で表現できる。問題は、もしCSG方式であった場合は、ある形状からある形状を除去するような操作を行うわけだが、ものすごく残念な形状になりがちだ。と言うのも、多項式のつぎはぎみたいになるからだ。そして、よく分からないエラーに悩まされることになる。
もっとパワフルな形状表現はモノの形状を関数として表現することだ。そうすれば、球体はx^2+y^2+z^2-R^2で表すことができる。負の数も二乗される。境界面は0で、形状の内部は負になり、形状の外部は正になる。そして大きさは距離を表す。こうやって形状は関数として表現できるようになるんだ。これは、幾何形状を表現する方法として、はるかに強力な方法だ。しかし、この方法を使うには、ソルバに関数を読み込ませないといけない。つまり、ソルバを使って形状を表現している関数を可視化してやらないといけないんだ。 FabModuleの開発にあたっては、僕が作ったソルバを、学生のMattew Keeterがもっと良いソルバに作り直してくれた。この講座のページには彼の論文にリンクを貼り付けてある。これはすごく良い論文だ。各表現方法の違いを説明してくれているし、どのように関数表現を使って幾何形状を記述するかについてもよく分かる。 Kokopelliは彼が書いたプログラムで、FabModuleからフォーク(派生)したスタンドアローンバージョンだ。そして、その最近のバージョンがAntimonyってわけだ。Antimonyは無料で使用可能なクロスプラットフォームのソフトウェアだ。 受講者:FabModuleって何ですか? ああ、そうだね。そりゃ良い質問だ。FabModuleってのは、最先端のツールだ。僕たちFabLabではもともと、全ての機械を設計してきた。その時、僕はちょっとしたプログラムを書いた。なぜかと言うと、機械ごとにそれぞれプリンタドライバをインストールしなくても良いようにしたかったからだ。全ての機器をマッピングして、異なるプロセスでも動かせるようにしたんだ。 そして、それがCADに成長したんだ。何故か?僕たちがそのプログラムに幾何学的エンジンを搭載した時、それはひとつのプログラムだった。しかし、ワークフローに適用しようと試行錯誤し続け、FabModuleに成長したんだ。これは一連の流れコンパイルを行うプログラムで、ワークフローの組み立てを行なってくれる。そして、FabModuleはWebに移植され、fabmodules.orgで今も健在だ。これがFiore Basileがやったことの一部だ。 これらは多くのフォーマットを読み込み、色んなオペレーションに対応し、様々な機械と通信する。そして、これがFiore Basileが管理しているGitHubプロジェクトだ。そして、その最新版は僕が彼に出した課題の成果物でもある。今学期は最先端のプロジェクトに取り組んでいる。これは全てのモジュールをWebプログラム環境に変換する。そして、これはFabLabのために統合された、第5世代のCADであり、CAMであるだけでなく、全てのワークフローを一括で管理できる。次回の講義でレーザーカットについて話すときに、もっと詳しく見ていくよ。
これは良い質問だったね。
(つづく)
講義の目次は【和訳版】FabAcademy 2016からご覧ください。
※この記事はFabAcademy 2016 におけるニール・ガーシェンフェルド教授(MIT)による講義動画をもとに作成しました。正確な訳ではないので間違っていたら指摘いただけるとありがたいです。