こういうのをつくりました
環境
Blender 3.3.12
アンビグラムとは
別の方向から見ても文字に見えるやつ
https://ambigram-lab.tumblr.com/image/666196835292069888
画像:アンビグラム研究室( https://ambigram-lab.tumblr.com/ )
立体アンビグラムというものもジャンルとしてはあるみたいです(wikipediaより)
https://ja.m.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:3d-ambigram.jpg
ブーリアンモディファイアを使った作り方
テキストをメッシュ化、面を押し出して、こんなふう↓に重ねます
どちらかの文字にブーリアンモディファイアをかけ、intersect(交差)にします
”Object”に、使わなかったほうの文字を指定します
カメラのタイプをOrthographic(平行投影)にしてください
(普通のカメラだと重ならないですよね・・・考えてなかった)
完成
作例
後述するジオメトリーノードによって量産できるようになりました
Hello World
うえ
フォントや回転の向きも変えられます
オブジェクトから適用(apply)を行うと、手作業での加工もできます
晴曇雨
おまけ(本編) ジオメトリーノードを用いた自動化
こんなかんじのノードを組んだら、
文字を動的に変更できるようになりました
ノード解説
左から順に見ていきます
オブジェクトからString属性を取り出し、1文字ずつ分割する
どちらの文字もほぼ同じ事をするので、片方だけ解説します
String to Curveでテキストをカーブに変換し、Fill Curveで閉路に面貼りする
String to Cruveのプロパティで文字の位置を調整します
Fill CurveはTrianglesが無難です
面の押し出し
さっき貼った面を押し出して立体化したいのですが、問題はExtrude Meshの仕様です
普通にモデリングするときのExtrudeは、元の面を維持しながら、それに接続された面を新たに作成する操作です。
しかし、Exturde Meshノードはこれに対応せず、なぜか元の面を消去してしまいます。
なので、Extrude Meshノードで作成した面と元の面を接続する必要があります。
面の向きが逆になっているのでFlip facesを挟み、Mesh BooleanのUnionでつなぎます。
このとき、Flip FacesとExtrude MeshをただJoin Geometryでつなぐだけだと、両者の間に隙間が生まれてしまいます。
ただオブジェクトを表示するだけならそれでも良いのですが、Mesh Booleanをするとき(2文字の共通部分をとるとき)不都合が生じます。
両者の接続方法としてMerge by Distanceなども試したのですがうまくいかず、結果として写真のようになりました。
https://blender.stackexchange.com/questions/256600/geometry-node-extrude-mesh-is-not-solid
この部分ではこのコミュがめちゃ役に立ちました。ありがて~
Merge by Distanceがうまくいかない理由や、もっとスマートにやる方法をご存じの方がいらっしゃいましたら教えていただけると嬉しいです
位置の調整
うまいこと原点に動かします。
Translate InstancesのTranslationにExtrude MeshのOffset Scaleに応じた値を入れることで、厚みを変えても原点から動かないようにできます。
もう片方の文字と交差をとる
モデリングによる作り方と一緒です。
オブジェクトに隙間ができていたり、面の向きがそろっていなかったりするとここで困ります。
Blenderでつくったものをあげるアカウント:https://twitter.com/Blend_r_you
よろしければよろしくおねがいします