ストレンジアトラクターを現界させる

# ストレンジアトラクターとは？

ストレンジアトラクターとは、カオス理論の研究の中で発見された奇妙な挙動を示す微分方程式の状態の総称です。
これを平易な言葉で端的に表すことが難しいのですが、ある力学系を表す微分方程式にあるパラメーターを設定した時に、多くの場合では一点に収束するか、無限に発散します。
しかし、一部に収束も発散もせず不思議な図形を描く系が存在します。
これらをストレンジアトラクターと言います。

ストレンジアトラクターが最初に科学の表舞台に出てきたのが、大気のモデルを研究していた気象学者のローレンツ氏が提示したローレンツアトラクターです。その後もさまざまなアトラクターが「発見」されています。

以下のサイトに、さまざまなストレンジアトラクターのとても美しい画像がありますので、興味のある人はご覧ください。
[Strange Attractors on Behance](https://www.behance.net/gallery/7618879/MathRules-Strange-Attractors)

本稿では、このストレンジアトラクターを、リアルな物体として現実に作り出してみます。

# Blenderでモデリングする

モデリングはBlenderで行います。
ここでは、2.90.0のバージョンを使います。また、筆者の環境はWindows 10です。

[こちらのGithubのリポジトリ(mtyka/attractor)](https://github.com/mtyka/attractor)に、各種のストレンジアトラクターをCurveで作成するBlender用のPythonプログラムがありましたので、これを使わせていただきます。
attractor_blender_2_8.pyをダウンロードして適当なフォルダーに置いておきます。

リポジトリのREADME.mdにしたがって、Blenderのメニューから、「Edit」→「Preferences」→「Add-ons」を開いて、「Install」で先ほどダウンロードしたPythonファイルを選択してインストールします。
うまくインストールできたらチェックボックスにチェックを入れて有効にしておきましょう。

使い方は、Shift＋Aで「Add」メニューを開き、「Curve」の中の「Strange Attractors」から好きなアトラクターを選びます。これで、アトラクターのカーブが作成されました。

![プラグインの使用](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30257/870a92b5-afc2-e5a6-a6a0-41275991e8bb.png)

ここまでだと中心のカーブだけなので、断面の形状を作成します。

四角形のエッジを少し加工したデザインにしてみます。
Shift＋Aの「Add」メニューから、「Mesh」→「Grid」を選択します。
Layout画面で作成したGridを選択し、Tabをおして編集画面にします。
四辺の中央付近のの頂点を各辺4つ、Shiftキーを押しながら選択し、Delキーで「Vertices」を選んで消すことで、次のような図形を作ります。

![断面のオブジェクト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30257/571d8e04-661a-eb0c-4aeb-2c972dd51ef5.png)

この断面のためのオブジェクトを作ったら、これをCurveに変換します。まだ編集モードだった場合はTabキーを押してオブジェクトモードにしましょう。
オブジェクトを選択した状態で「Object」メニューから、「Convert to」→「Curve from Mesh/Text」を選びます。

次に、もとのアトラクターのCurveに戻ります。アトラクターのCurveを選択し、「Curve」ツールボックスの「Geometry」→「Bevel」を開き、「Object」に先ほど作成した断面のCurveを指定します。
これで、アトラクターに沿って断面形状が形成されます。

もとの断面オブジェクトのサイズを変えると、アトラクターの断面形状の大きさを変えることができます。うまく調整しましょう。

![作成したオブジェクト](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30257/23ad10c8-4c44-d47a-92e0-c2be479ca2f0.png)

# 3Dプリンター用のデータにする

いい感じに調整できたら、CurveをMeshに変換します。オブジェクトを選んで、右クリックメニューから「Convert to Mesh」を選びます。
そして、最後に「File」メニューの「Export」から、「STL」形式で出力します。

しかし、このままでは3Dプリンター用のデータとしては不十分です。立体として造形できる正しい構造になっていないのです。
ここでは、Windowsストアから無料でインストールできるMicrosoft謹製の「3D Builder」にモデルファイルの修正をお任せしてしまいましょう。
先ほどBlenderでエクスポートしたSTLファイルを（3D Builderが正しくインストールされて関連付けられていれば）ダブルクリックで開きます。
そうすると、モデルが表示され、「1つ以上のオブジェクトの定義が正しくありません。修復するには、ここをクリックしてください。」というメッセージが出てきますので、すかさずクリックして修復してもらいます。

![修復ダイアログ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30257/9d7f9e62-872f-6129-aadf-9be31cfd2381.png)

こうすると、ポリゴンの重複などが取り除かれて、3Dプリンターで出力可能なデータになってくれるようです。

できたらセーブします。

# 3Dプリントする

さて、ようやくデータができたので、出力します。

私は手元に適当な3Dプリンターがなかったので、DMM.makeのプリントサービスを利用しました。
プラスチックを熱で溶かして重ねていくFDM型のプリンターでは、サイズの小さなプリントだとこのような形状は細かすぎてうまくいかないのではないかとも思いますので、光造形やインクジェット方式など、細かい造形が可能なプリンターを利用すると良いのではないかと思います。

DMM.makeのサイトでアカウント登録などをして、3Dデータをアップロードして、発注します。
さまざまな素材を選べますが、今回は「アクリル（Ultra Mode）ナチュラル」を選びました。
込み具合にもよりますが、数日～数週間待つとでき上がって送られてきます。

次の写真が、私が最初に製作したものです。

![実際のモデル](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30257/6f25f6b8-f735-f628-8604-970b219cb3f1.jpeg)

細く作りすぎてふにゃふにゃになっています。

値段は大きさや材料の使用量によって変わります。
写真のものは3500円ほどでしたが、本稿執筆のために太目大き目に作り直したものは、16000円ほどになりました。
お財布と相談してちょうどいい大きさを探しましょう。

# さいごに

この不思議な形状を実際に現実のものとして見ると、ますます不思議に思えてきますね。
ストレンジアトラクターは、さまざまなものが知られているので、自分の気に入ったアトラクターを作ってみてもいいかもしれません。

2021/01/14追記

少し大きさ太さと材質を変えて作ってみました。
材質はナイロン（ナチュラル）を使っています。

![ErqueKYUYAEO7BT.jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30257/97d6a679-fcf1-af7a-45ca-d9f7a5c76dc8.jpeg)