【Blender】立体アンビグラムの作り方 【ジオメトリーノードもあるよ 】

### こういうのをつくりました
![3D0001-0059.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/255c09aa-e3ef-6e3b-c194-f8bee249de32.gif)
***
##### 環境
Blender 3.3.12
***
#### アンビグラムとは
別の方向から見ても文字に見えるやつ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/f5fe5da0-6574-b553-9906-98690ba259fe.png)
https://ambigram-lab.tumblr.com/image/666196835292069888
画像：アンビグラム研究室( https://ambigram-lab.tumblr.com/ )

立体アンビグラムというものもジャンルとしてはあるみたいです(wikipediaより）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/425e374d-a96b-8c3f-1b4a-167a315287d7.png)
https://ja.m.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:3d-ambigram.jpg


# ブーリアンモディファイアを使った作り方
テキストをメッシュ化、面を押し出して、こんなふう↓に重ねます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/f3ad33c4-ee4d-c390-e0b8-7475ddf6077a.png)

どちらかの文字にブーリアンモディファイアをかけ、intersect（交差）にします
”Object”に、使わなかったほうの文字を指定します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/f30d7501-a4c0-2e73-9f81-e958f0d13d3b.png)

ブーリアンを適用して、使わなかったほうの文字を削除します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/3e408721-3440-7cde-4c7a-aaffbd85385f.png)

カメラのタイプをOrthographic（平行投影）にしてください
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/23e371cd-461b-1ea7-fb54-f27aca216a89.png)
（普通のカメラだと重ならないですよね・・・考えてなかった）

## 完成
![0001-0050.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/1a7eaf89-93a5-3287-8e07-aa068070f9c4.gif)


## 作例
後述するジオメトリーノードによって量産できるようになりました

###### Hello World
![0001-0065.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/0f57642b-7aa8-481f-bcf8-36aba2a583f1.gif)
複数文字
###### うえ
![0001-0065 (1).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/42df7e03-1444-e8c7-efeb-a7fdd258e9da.gif)
フォントや回転の向きも変えられます
オブジェクトから適用(apply)を行うと、手作業での加工もできます

###### 晴曇雨
![0001-0071.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/33aaa0de-e13a-a216-2d72-c700f53dac53.gif)
頑張れば三方向もできます

# おまけ（本編）　ジオメトリーノードを用いた自動化
こんなかんじのノードを組んだら、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/5ee86c64-a5d1-d6dd-1257-e21d2a50f7d0.png)
文字を動的に変更できるようになりました
![Blender_ [C__Users_omi_Desktop_blenders_items_blend_geo_ambigram.blend] 2023-12-07 21-30-36.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/28323d11-0526-954a-37eb-121f56f6aa2c.gif)
***
### ノード解説
左から順に見ていきます
###### オブジェクトからString属性を取り出し、1文字ずつ分割する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/ffcad861-f96c-28ba-f3fb-cf90025fe2f8.png)
オブジェクトはなんでもいいです

どちらの文字もほぼ同じ事をするので、片方だけ解説します

###### String to Curveでテキストをカーブに変換し、Fill Curveで閉路に面貼りする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/2d39ffa3-2c9d-7396-9eb2-20a94afacf5f.png)
String to Cruveのプロパティで文字の位置を調整します
Fill CurveはTrianglesが無難です

###### 面の押し出し
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/78f2d1ec-5bb2-b9e2-a24c-368a1ce7531e.png)
いちばん苦戦した部分です　試行錯誤の跡が見えるかと思います

さっき貼った面を押し出して立体化したいのですが、問題はExtrude Meshの仕様です
普通にモデリングするときのExtrudeは、元の面を維持しながら、それに接続された面を新たに作成する操作です。
しかし、Exturde Meshノードはこれに対応せず、なぜか元の面を消去してしまいます。
なので、Extrude Meshノードで作成した面と元の面を接続する必要があります。

面の向きが逆になっているのでFlip facesを挟み、Mesh BooleanのUnionでつなぎます。
このとき、Flip FacesとExtrude MeshをただJoin Geometryでつなぐだけだと、両者の間に隙間が生まれてしまいます。
ただオブジェクトを表示するだけならそれでも良いのですが、Mesh Booleanをするとき（２文字の共通部分をとるとき）不都合が生じます。

両者の接続方法としてMerge by Distanceなども試したのですがうまくいかず、結果として写真のようになりました。

https://blender.stackexchange.com/questions/256600/geometry-node-extrude-mesh-is-not-solid
この部分ではこのコミュがめちゃ役に立ちました。ありがて～
Merge by Distanceがうまくいかない理由や、もっとスマートにやる方法をご存じの方がいらっしゃいましたら教えていただけると嬉しいです

###### 位置の調整
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/0f2f1b38-9f95-370c-5379-32bcdf7f68d3.png)
うまいこと原点に動かします。
Translate InstancesのTranslationにExtrude MeshのOffset Scaleに応じた値を入れることで、厚みを変えても原点から動かないようにできます。

###### もう片方の文字と交差をとる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/9ea46cf3-2904-97b8-6f13-e5788bda7baf.png)
モデリングによる作り方と一緒です。
オブジェクトに隙間ができていたり、面の向きがそろっていなかったりするとここで困ります。

マテリアルを適当に設定して、完成！
![0001-0020.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2985624/719caaad-2dcf-7644-7cda-87b08894185b.gif)

Blenderでつくったものをあげるアカウント：https://twitter.com/Blend_r_you
よろしければよろしくおねがいします