見出し画像

blender 4.4 - アスキーアートメーカーを作ってみた

ここでは、ジオメトリノードを使い、アスキーアート風の表現を試みてみました。


環境 Blender 4.4.1 , Mac Mini M1 OS 14.4


ジオメトリノードは情報は英語からのものが多いため、この記事では英語バージョンを使用し、日本語訳はできるかぎり併記します。

HalfTone


下準備として、基本のハーフトーンパターンを作成する。

あらかじめ、下の画像を入手した。入手元 : pinterest
  • マテリアルプロパティで、黒のマテリアルを作成

マテリアル名は black とした
  • 平面オブジェクトを追加し、Geometry Nodesワークスペースに切り替え、New をクリック

  • 以下のジオメトリノードを組む

グリッド メッシュ円 ポイントにインスタンス作成 マテリアル設定
Set Material には、作成した black マテリアルを指定する
マテリアルプレビュー。わかりやすいように背後に別途、平面オブジェクトを設置
  • ノードを追加し、下のように接続

画像テクスチャ(最初に入手した画像を指定)
カラーランプ 下矢印ボタンで、Flip Color ramp(カラーランプを反転)を実行
結果。

デフォルトでは、画像の明るいエリアにある円インスタンスが大きく、暗いエリアは小さくなるため、カラーランプで逆に反転させている。

  • Position および、Vector Math(Multiply Add)ノードを追加し、スケールと位置を合わせる。

位置 ベクトル演算(積和算)

Multiplier(乗算)で拡大縮小、Append(加算)で位置の調整を行う。

ハーフトーンの完成。一般的な印刷物は基本的にこれでできている。


ASCII 01


アスキーアートなので、円の代わりに、文字(キャラクター)で埋めてみる。

  • Mesh Circle の代わりに、String to Curve ノードを接続

文字列のカーブ化 a の一文字を表示
  •  a だけではすこしさみしいので、文字列を chaplin に変更。

文字列は「chaplin」。Character Spacing は 0.0 に。

文字間隔がゼロなので、chaplin のすべての文字が同じ位置に重なって表示される。

  • Random Value ノードで、chaplin のいずれかの文字をランダムに表示させる。

ランダム値 タイプはInteger(整数)Pick Instance にチェック
Random Value からの値が 0 ならば c を、6 ならば n など、無作為にピックアップされる
レンダリングも可能なように、やや変更したノード全体


ベースの画像や文字列を変更した試作バージョン

どちらも、ベースはシルエット画像



ASCII 02


これでも工夫しだいではわるくないが、ベース画像の明るさによって、文字の大きさでなく、異なる文字列を割り当ててみたい。

そこで、これまでのノードを組み直し、下のように変更した。

下の 5 ノードは、これまではインスタンスの大きさを変化させるために使っていたが、Instance Index に接続し、文字列の インデックス番号に値を渡している。

Map Range(範囲マッピング)を追加。
今回の文字列。インデックス番号は左から 0 … 12

Color Ramp ノードからは、画像の明るいエリアはゼロに近く、暗いエリアは 1 に近い値を出力するので、Map Range で ゼロから 12 までに範囲を拡大、明るいエリアはより左の文字列を、暗いエリアはより右の文字列をピックアップするよう設定した。

結果。明るいエリアは、. : など、暗いエリアは V W などが割り当てられる。


やや文字列等を調整したパターン。
香港のアクションスター
イギリスのミスターコメディアン

設定する文字列や、Color Ramp、Map Range の値の調整でかなり幅広いバリエーションも得られます。お試しください。


まとめ


君、けっして残り多いとはいえない人生の貴重なひとときを、いったいなにに費やしているのだね、といわれてもしかたありませんが、こんなことを比較的真剣にやっていると、ジオメトリノードの知識もいやおうなく積み重なります。参考まで。


参考

アスキーアートをタイプライターで作る方法&作品をまとめた1939年の書籍が公開に(GigaZine)

そのころはタイプライターでやっていたんですね。



いいなと思ったら応援しよう!