地形で栓抜きを作れと言われたら

:::note info
これは [MIERUNE AdventCalendar 2023](https://qiita.com/advent-calendar/2023/mierune) 8日目の記事です。
昨日は @moritoru さんによる [地図のレンダリングを実現するまでの流れはどうなっているのか？](https://qiita.com/moritoru/items/d1b3c3efcd0474cd98ce) でした。
:::

## はじめに
「地形で栓抜きを作れ」と言われた方向けに、地形で栓抜きを作る方法について説明していきます。
必要なのは3Dプリンタとテスト用のビールだけ！

今回は、弊社メンバーで行なった #30DayMapChallengeで投稿した「南極大陸を模した栓抜き」を例に説明していきます。

#30DayMapChallengeについては、こちらにまとめておりますので、興味のある方は是非ご一読ください。

https://note.com/mierune/n/n247ccda48a45?sub_rt=share_pb


今回の発案にあたり同僚の@soramiさん、「みんな重力のせい」様、「デイリーポータルZ」様の下記記事を参考にさせていただきました。
いつも楽しませていただいております。

https://log.mkuriki.com/hokkaido_opener_3d_model/

https://dailyportalz.jp/kiji/151028194923

## 画像の用意

まずは何より、どこを栓抜きにするかを決めましょう。

地図を眺めながら、王冠を引っ掛ける点（以下、作用点）・王冠を上から抑える点（以下、支点）が作れそうな地形を探しましょう。

有名どころで言えば、函館周辺の亀田半島と襟裳岬
![スクリーンショット 2023-12-06 7.42.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/b82103f4-4aa8-4107-0514-36814f0672d4.png)

そして能登半島
![スクリーンショット 2023-12-06 7.44.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/8e196687-9184-f052-a0ed-086c8de234ef.png)

また世界規模で言えば、フロリダ半島とユカタン半島でしょうか。
![スクリーンショット 2023-12-07 7.26.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/779071ee-94e8-b93b-8e29-273740352876.png)



今回私は #30DayMapChallengeで「南極大陸」担当することになったので、南極大陸で探してみます。

一般的にwebマッピングで使用されている「[EPSG:3857](https://epsg.io/3857)」という投影法では、現実に即していないどころか（グリーンランドめちゃくちゃデカい問題的な）、このまま栓抜きとして印刷しても南極として認識することが難しいので、南極向けの投影法「[EPSG:3031](https://epsg.io/3031)」を適用します。
![スクリーンショット 2023-12-05 21.10.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/5d4d5ac2-aa14-a1b3-1f44-528cf2419cf2.png)


なお今回の地図の描画にはQGISを使用しています。
また、ここで使用した背景地図などの著作権表示は
© MIERUNE | © MapTiler © OpenStreetMap contributors
となります。

「EPSG:3031」を適用すると、南極大陸はより現実に即した形状になります。
![スクリーンショット 2023-12-05 22.26.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/1318b1e7-6e8a-2846-01c1-38dd4b1f6d6c.png)

ここで描画されているのは、氷河を含めた南極大陸の形状。せっかくですので？氷河を含めない南極大陸を見てみましょう。

そこで登場するのがNatural Earth。GeoSpecialなデータを提供してくれています。

南極大陸のデータは[こちら](https://www.naturalearthdata.com/downloads/110m-physical-vectors/110m-glaciated-areas/)から。

こちらで取得したgeojsonファイルをQGISに配置してみると…
![スクリーンショット 2023-12-05 22.27.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/4c2f3b2a-cda1-1038-28c3-baf95af85286.png)

いい感じですね！

（こう見ると改めて氷河広大ですね）

栓抜きに出来そうな地形（作用点・支点）がありました！

問題なさそうです！
![スクリーンショット 2023-12-05 22.27.19のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/594a1397-8bd3-e739-1cb5-c8e52e7624c2.png)

残念ながら画像から直接3Dモデルを作成するのは、かなり辛いところがあるので、一旦パス（輪郭）に変換します。

特にこだわらないので、スクショを取得。この時邪魔なものは映らなくするのがベター。（今回はgeojsonのみを表示してスクショ）
![スクリーンショット 2023-12-05 22.27.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/0c03a1e4-b44b-e9c0-31d9-96fc5a24bd62.png)

## パスへ変換

パスへの変換にはフリーの画像処理ソフトGIMPを使用します。

https://www.gimp.org/

画像を読み込んで、ファジー選択/色域選択して
![スクリーンショット 2023-12-05 22.28.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/98e95484-1f22-6856-4809-3203200c14a8.png)


パスを取得！
![スクリーンショット 2023-12-05 22.29.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/be46a400-81a5-12dc-733e-f998b9e0e222.png)


レイヤー/パスメニューから、今回作成したパスのみを表示するといい感じに抽出できていますね！
![スクリーンショット 2023-12-05 22.30.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/9232ecf1-0c8a-8090-32ab-a0e9e7d73262.png)

そしたら、SVGファイルでエクスポートして、事前準備は完了です。
![スクリーンショット 2023-12-05 22.31.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/2207381a-9cc8-a454-3510-9ca4f73899a0.png)

## 3Dモデルの作成

3DモデリングソフトにはFusion360を使用します。

個人かつ非商用利用であれば無料で利用できる3DCADソフトです。

https://www.autodesk.co.jp/products/fusion-360/overview?term=1-YEAR&tab=subscription

クラウドベースでプロジェクト管理や同期が楽な上、操作もめちゃ楽でお世話になっております！

※負荷の高い処理を行うと強制終了することがあるので、最初にプロジェクト作成して、こまめに保存するのがマスト！運が良ければ自動的に復帰してくれるけど過度な期待はNG！

パスが定義されたSVGを元に3Dモデルを構築するには、まず「スケッチ」を選択して、X-Yの平面を選択する。
![スクリーンショット 2023-12-05 22.43.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/d8bc4a4a-8c41-fd58-9c7f-e63da9e74132.png)

スケッチでSVGを取り込むには「挿入>SVGを挿入>マイコンピュータから挿入」を行う。
![スクリーンショット 2023-12-05 22.44.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/cb038025-f66c-d948-870f-502eabe892dd.png)

取り込めると、移動や拡大/縮小が設定できるので適宜設定して、「OK」を押す。
この時、支点と作用点が同一グリッド線常にあり、間隔が1.5-1.7mmにしておくと後が楽になる。今回はここで位置・サイズを調整していることを前提に進めます。
![スクリーンショット 2023-12-05 22.50.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/e2fea6b2-aa46-8988-c66f-bb11921a8d3e.png)

画像からパスに変換したときに、不要なパスが生成されることがあります。また今回の南極は元のgeojsonを投影法に則して描画させたことで、本初子午線（赤道の緯度バージョン）に空白が発生しています。これらを修正します。
![スクリーンショット 2023-12-05 22.55.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/e36944b1-9cc1-6616-eaa3-5f263d5c278c.png)

問題なく修正できたら、いよいよ立体的にしていきます。

「スケッチを終了」し、先ほど作成したスケッチを選択して、「押し出し」を行います。押し出し後のモデルを定義する「操作」は「新規ボディ」です。

栓抜きとして頑丈にするために厚さは1.3cmほどにしてみましょうか。
![スクリーンショット 2023-12-05 22.59.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/8ff9134e-47e4-475b-0b17-4239941f6637.png)

もちろんこれでも問題ないのですが、せっかくなので投稿したようにロゴを入れてみましょう。

ちなみに個人的には表面にロゴを入れるときには、z軸マイナス方向に押し出しています。

先ほどの距離を「-13mm」にするだけです。

同じく「スケッチ」を押して、今回スケッチする面は先ほど押し出したモデルの表面を選択します。
![スクリーンショット 2023-12-05 23.01.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/959ab430-b93a-2983-fbf2-c8de177d32f2.png)

スケッチの画面で「パスへ変換」と同じ手順で作成したり、ディベロッパーツー(ry でｺﾞﾆｮｺﾞﾆｮして作ったSVGを読み込みます。

もちろんそのままでもいいですが、せっかくなのでオリジナリティを入れてみましょう
※社内ロゴ担当さんにはやんわりOKもらいました

というわけでできたのがこちら
（座標が変わっていますが、他意はありません）
![スクリーンショット 2023-12-06 8.10.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/8df5871a-a7c2-eeda-2148-134c8fcb0a09.png)

「MIERUNE + 開ける = AKERUNE」というわけですな。

「スケッチを終了」して、先ほど作成したロゴを凹ませてみましょう。

今度は「押し出し」で操作に「切り取る」を選択して凹ませます。色を塗って目立たせればいいので距離は-1,2mmで十分でしょう。
範囲選択すると凹ませない部分まで選択されるので注意！（AとかRの囲まれた箇所）
![スクリーンショット 2023-12-06 8.17.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/f5ba2955-373f-7161-629c-568bb6675682.png)

問題なく3Dモデルが完成したので、3Dプリンタで造形できるファイル形式のSTLにエクスポートしましょう。
![スクリーンショット 2023-12-06 8.01.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/4bc8b9c0-a507-835b-7f3a-ff1ba7388278.png)


MACであればプレビューからSTLを見ることができます。（windowsは分からないです…）
![画面収録 2023-12-06 8.51.19.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/357b3534-094c-62f1-c1ac-d5129081df16.gif)

## 印刷！印刷！印刷！

ついに印刷です。

いざ印刷の前に、3Dプリンタを制御するために3Dモデルをgcodeと呼ばれるファイルに変換に変換する必要があります。

「ココからココまではこの温度・速度で、冷却はこのくらいで〜」みたいな、モデルを印刷するための命令文みたいなものですね。

特にフィラメントや用途に適したパラメータをチューニングする必要があります。

私は普段Curaを使用しています。

https://ultimaker.com/software/ultimaker-cura/

今回の材料は、BlackFridayで安くなっていたPLAを使用します。今回の用途は栓抜きですので、支点と作用点にはそれなりの負荷がかかることが予想されます。（比較検証していませんが…）

そこで今回は外壁を厚くして、かつ周辺の充填率（インフィル密度）を最大値にしてみます。

デフォルトだと、外壁は3層、充填率も20-40%と言ったところでしょうか。

ドラック&ドロップして配置した3Dモデルを選択した状態で「Support Blocker」で充填率を100%に設定したい範囲をオブジェクトで指定、適宜移動・拡大して調節する。
![スクリーンショット 2023-12-06 9.20.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/34371b5e-0267-ca11-259c-f0b75205b45d.png)

範囲を指定したオブジェクト選択し、設定から充填率を100%に設定する。

このときデフォルトでは、充填率の設定がないので追加する。
![スクリーンショット 2023-12-06 9.25.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/c42c3046-2a89-0560-e4ce-375b62c82650.png)

追加された充填率に「100」を入力して完了！
![スクリーンショット 2023-12-06 9.26.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/973b1bdc-e4a3-bacd-174a-1e3c0aa768ca.png)

充填率より外壁を厚くした方が強度が出るって話もあるので、そこら辺はよしなにいきましょう。

とりあえず外壁は10層に。
![スクリーンショット 2023-12-06 9.28.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/4072c47a-67e3-5a25-36d3-7c9186796631.png)

その他は設定を自由に設定して（こだわりが無ければ「standard」とかを選べばOK!）、「スライス(変換)」するだけ！
![スクリーンショット 2023-12-06 9.30.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/7b8fdca8-d171-7d06-687b-b8da35930539.png)
今回は3時間ほどで終わるようですね。早い！！

「プレビュー」から指定した範囲の充填率が100%になっているか確認してみましょう。
![スクリーンショット 2023-12-06 9.31.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/3f8aac4d-bda5-1183-0930-d9b5bc10cd38.png)

いい感じに詰まってますね。

あとはそこら辺に転がってる3Dプリンタにデータを移して印刷するだけ！
私は定番のEnder3を使用しています。
![1000006514.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/f60b1543-bae7-8ad6-3e85-9c9cbd7ffd23.jpeg)

あとはロゴを塗装して完成！！
![PXL_20231124_081645009.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/aa8b82cd-f7c8-c7ce-449d-7a05af7653de.jpeg)

## 乾杯！！！
栓を抜いて乾杯！
![PXL_20231124_082324077~2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3336887/6d97dcbc-3311-fe35-5943-30f6560d3050.gif)

:::note info
明日は@KEI_YAMAさんによる、「Mergin Maps」に関する記事です！お楽しみに!
:::