適当に引いたカーブが道路になる~みたいな、すこしジェネレーター的な物はジオメトリノードの醍醐味の一つだと思うので、シンプルなものとして挑戦してみましょう。

カーブをメッシュ化する際に断面カーブとしてラインを接続すれば、シンプルな道路になります。
カーブは進行方向に対して-0.1~+0.1で配置(つまり道路の幅は0.2ということ)
したがってここの部分にグループ入力などで入力させる仕組みを入れれば、道路幅を簡単に変えられるようになります。

先程の道路に中央ラインを追加しています。
プリミティブのcubeを薄い板状に変形させ、元のカーブにカーブリサンプルで分割数(=ポイントの位置)を設定。そこにポイントにインスタンスを生成で配置させています。
ただそれだけだとプリミティブcubeで設定した形のままでカーブ上に並ぶため、カーブの流れに沿ってcubeを回転させてやる必要があります。
下部の
この部分でそれを実現しています。カーブの向きに合わせて回転を揃えるという機能は今後もあちこちで使うと思うので、覚えておきましょう。


少し複雑になってしまいました。
を目安に、
上1/3で道路の生成、中1/3で中央ラインの生成、下1/3でポールの生成をやっています。
道路の生成では今まで単なるカーブラインで板上の道路を生成してたのを、画面中央左にあるような鍵状のラインを作りそれを左右にミラー状態で配置し立体的な道路を生成しています。
ただミラーの際、ジオメトリトランスフォームでスケールを-1倍しているのでそのままでは面(ノーマル)が反転してしまいます。ゆえにカーブ反転ノードを使いノーマルを揃えています。
ポールの生成はシンプルに円柱を変形させているだけです。 実際には別オブジェクトにしてインスタンスとして配置してやったほうがそれっぽくなるでしょうね。
カーブ進行方向に両側2つのポールを設定しその幅を値で手動で調整。 ポールの間隔はその上のカーブリサンプル(数:17)にてポイント数を設定しています。ここの数字を増減させればポールの間隔を変えられます。

適当にカーブを描いて、各種間隔を調整したらすぐにこんなものになります。
カーブを設置しそれに対してインスタンス(オブジェクト)を設置するのは汎用性と応用性が高いので、なるべく早めに使い慣れておくと色々と理解が早くなると思います。


インスタンスとしてcubeを設置しています。サイズを小さくして見やすくしています。

ランダムノードをベクトルにして位置ノードのオフセットに繋いでいます。

ジオメトリ統合をこう繋ぐと、インスタンスとカーブを同時に見れます。
見て分かりますが、X,Y,Z方向に0~0.25の幅でランダムに移動させているのでカーブに対して右上方向にズレて配置されます。これを-0.25~+0.25などにするとほぼカーブ上に配置されるように見えます。

Z軸を基準に0~360度(2*pi)各インスタンスを回転させています。
cubeだと回転しているのが分かりにくいため、スザンヌを配置しオブジェクト情報(スザンヌ)→ジオメトリトランスフォーム(サイズ縮小)でインスタンス生成に繋いでいます。

インスタンス拡大縮小ノードに置き換えて、そこにFloatで0.03~1.7の数値を”拡大率”として代入しています。インスタンスはカーブ上でそれぞれランダムの大きさとして配置されます。
例えばランダム値ノードを”ベクトル”にして、x,y,zそれぞれにランダムの範囲を設定すると、縦横高さ方向にランダムなスザンヌが配置されます。

これまでのインスタンスはカーブに対して等距離で指定数(or長さ)でインスタンスを配置しています。(例:↑#インスタンスを配置)
これをランダムに配置(したように見せる)方法として、ランダムにインスタンスを間引くという方法があります。
・ジオメトリ削除(インスタンスを選択。選択コネクタにブーリアン値でon/off)
・ランダム値(ブーリアン。確率50%)
上記で、配置されたインスタンスをランダムに半分の数に出来ます。 配置が気に入らなければシード値を適当に変更すればOK

これまでに大きさや角度、回転や配置そのものをランダムにいじるノードを上げてきましたが、Blender 5.0以降は『Randomize Transformsノード』というものが追加されました。
簡単に言えば上記のあれこれを全部一つのノードで出来てしまう~というものです。
こちらも使ってみるととてもシンプルで楽なので、試してみると良いと思います。

オブジェクトとして配置したスザンヌを、ジオメトリノード上で生成したカーブ円状に配置しています。数は26。ご覧の通り、全部のスザンヌがこちら(同じ方向)を向いています。
これを期待した方向に調整したいと思います。

突然複雑なノードが増えて混乱したかもしれませんが、”ポイントにインスタンスを作成”の『回転ソケット』にカーブタンジェント→ベクトル回転→オイラーをベクトルに整列を接続します。
オイラーをベクトルに整列の係数を1に、ベクトル回転の座標軸Z(?)の数値を1に。
これですべてのスザンヌが外側に向きました。 ベクトル回転の『角度』を変更するとスザンヌが向く方向が変わります。

スザンヌを内側に向けるには、180度回転。
つまりベクトル回転の角度に180を設定してください。

反時計回りで配置したい場合は、ベクトル回転の角度を270に設定。

反時計回りで配置したい場合は、ベクトル回転の角度を90に設定。
他にもオイラーをベクトルに整列のXYZ、係数、などをいじってみると色々と揃える方向などを調整できると思います。(項目により、かなりクセはありますが)
]]>まずはカーブを生成。

このカーブを利用したジオメトリノードを組んでみます。
一番最初に『グループ入力』のジオメトリ(ソケット)から始まっている事が”自分の生成した物を利用して~”という事になります。 こんな感じ。

実行結果はこうなります。

この状態でカーブの位置を編集すると、編集されたカーブの形に合わせてICO球の位置が変わります。
(数は変更してないのでICO球間の距離は必然的に広がる。)

例えば道路などモデリングした際にカーブに添わせて電柱を配置し、距離感などを操作するときなどに使い勝手がありそう…?

ついでですので、ランダムに配置したい時のノードなども併記しておきます。
上記のように”ポイントにインスタンスを作成”の『選択』欄にランダム値ノードを接続すると実現出来ます。設定は「ブーリアン」にしてください。
上記は確率0.5(50%)なので半分がランダムに消去されていますね。シード値で位置が変わります。

選択ソケットにインデックスからの値を入れてやるとランダム以外の操作ができます。
Bの値を変えてやると、”Bの値”番目のものだけ表示されていると思います。
※余談ですが、ジオメトリ統合ノードを使ってこのように接続してやると、カーブとICO球双方が見えるようになります。(2つの出力を合成するという用途のノードです)

上記では数式→比較より「小さい」を選択し、Aのソケットにはインデックスを繋ぐことにより、Bの欄の値を変化させるとICO球の発現が変化します。
上記ではBの値が23なので、23個のICO球が表示され24個目以降のICO球は消えています。

少々複雑になりますが、n個おきにICO球を表示させたい場合は、剰余(あまり)を使います。
そのまま繋ぐとn個おきにICO球が”消える”という実行結果となります。そこで、その後に『否定』のブーリアンを繋いで、正誤結果を逆転させています。
数値を入力してみると分かりますが、値は”整数の場合”に期待通りの表示をしてくれます。
先程の縦に伸びた10箇所のポイント上に、今度は横に伸びるラインを配置してみます。
考え方としてはシンプルに、その1ではICO球を設定した”インスタンス”という部分に、横方向のラインを設定してやる~というイメージです。

こんなイメージ。そしてノードは”インスタンス”に入る部分にメッシュライン~ポイントにインスタンスを配置の構造をそのまま入れてやるだけです。 そうするとノードはこうなります。

メッシュラインはその1同様に10個に分割されそこにICO球を配置する~という設定になっていますので、実行画面はこんな感じに。
ポイントは、下段のメッシュラインはオフセットの部分がY軸に1mと設定してあることです。

縦に10等分したラインのそれぞれのポイントから横方向にラインを伸ばし、10等分したところにポイントを設定してICO球を置く~という事をやっています。
いかがでしょう?この形が想像できましたか?
さてこうなったら次にやることは…想像できますね?

今度は先程伸ばした横方向のラインから同様に奥行き方向に向けてラインを配置しようと思います。
ノードは更に同じものを設定させてやるだけです(一種の入れ子状態)
※オフセットの値が今度はXが1mになっている点に注意。

そうすると結果は…

ちょっと分かりにくいかもしれませんが、x,y,z方向にそれぞれ10個ずつICO球を配置された計1000個の球がCube状になったものが出来ました。
いかがでしたか?どんな案外簡単な考え方(どんな形で)配置するかを組み合わせるだけで、複雑な物ができる事が分かってもらえたかと思います。
最後にもうひとつ。 ノードをこんな感じに…各x,y,z軸方向の『数』をグループインプットにつなげてみましょう。 こうすると簡単に外部から数値をいじれるようになります。

モディファイヤープロパティのところに繋いだインプット欄(3つの”数”)が発生し、これらを増減させることで簡単に配置を操作できるようになります。
この『グループ入力につなぐ』というものも今後とても重要になってくるので覚えておきましょう。

ジオメトリノードは大きく分けて、
及び、これらの組み合わせになるかと思います。
今回は最も簡単な”配置系”を扱ってみます。
基本は、
配置するか?というシンプルな流れをまず覚えるのが最初の一歩です。
簡単な例をあげます。

縦(Z軸上)に線を引き、その上に10個の物を配置する。
こんなノードを組んでみます。
これは最もシンプルな形だと思うので基本形として覚えておいてください。

メッシュライン
これは、今回配置したいと思っている場所(1.どんな形に)に相当します。
ラインの開始位置とオフセット、及び数があります。 開始が0,0,0 オフセット(終了位置と言い換えると分かりやすい)は0,0,1なのでZ軸上に1単位分だけ上に伸びたラインが引けます。
そこを数(10)で分割しなさいという見方でいいかと。
ICO球
これは(2.何を)に相当します。わかりやすく半径を少し小さくして細分化をかけ、少し球っぽくしています。
ポイントにインスタンス作成
おそらくジオメトリノードで最も重要なノードの一つ。上記メッシュラインで10個に区切った場所にポイントを設定し、そこにインスタンス(2.何を)を配置するためのノードです。
回転やスケールの項目があります。数値を変えるとそれぞれ変化します。
以上を設定してやるとこうなります。

この上なくシンプルですが、狙った通りにライン上を10分割した位置に、ICO球(インスタンス)を配置することが出来ました。
さて、次はこれをそのまま発展させてみましょう。
]]>Blenderを触っている身としてはクロス辺りをチョチョイと使えばそれっぽいもの作れるかなと試しツイートしたところ思いがけず反応が良かったのですが、リプで「どうやったんだろう?」的な内容が散見されたのでせっかくならと作り方を記事にしてみました。
多分想像されているよりずっと簡単です。
前提として「Blenderが多少使える」上での説明です。
おおまかな流れとしては

まずは円を配置し、掃引(e)と縮小(s)で円盤状を作る。
これをループカット(ctr+r)で同心円状に細かく割る。
これでスカートは完了。
※細かく割るとふわっとしたシルクやオーガンジーぽいへにょっとした感じ。 粗目に割るとプリーツ的な筋張ったスカートにもなります。
※確か最終的には、もう1段サブディビジョンサーフェスを掛けた気がする…

腰に当たる部分を固定させたかった(ずり落ちないように)ので、一番内側の一周分の頂点を選択し頂点グループを作成。

次にクロスの設定。 オブジェクトを選んでクロスを設定
プリセットから「シルク」を選ぶ。
デフォルトではすこし軽すぎたり、しわしわになったりもしたので何度も再生と調整を繰り返しつつ数値を設定。
今回設定した数値は画像の通り(ほぼデフォルトのまま)
布同士が貫通しないようにセルフコリジョンも設定。
腰の部分が止まるように先ほど設定した頂点グループを「シェイプ→固定グループ」に設定。
腰と足の作成
超シンプルに球と円筒を配置。コリジョン(衝突判定)を設定する。
腰の上辺りにEmptyを配置し、親子づけしておく。(Emptyが親)
スカートのオブジェクトもEmptyに親子づけ(同上)

スカートのひらひらが見えるようにEmptyのアニメーションを設定(親子付いているので腰足とスカートも一緒についてくる)
左右に動き、クルッと一周回りながら左。
※早く回転しすぎるとスカートがうまく広がらないので適当に調整。
床を配置し、ライト、カメラを調整してレンダリング。
こんな感じです。
今回は簡単に作れるので全円スカートの形状を作りましたが、半円とかもう少し割合の小さなスカートを作りたい場合は円盤ではなく円錐に加工してから同じように作業すればいけるかと思います。
裾にフリル付けたり、スカートに穴を開けたり、スリットを作ったりしてどう動くのか…試してみるのも面白いですね。
]]>blenderで、漫画の背景をコマごとにモデリングをしていて、出力時にノードの『ファイル出力』を使用しようとして、うまくいかなかったので検証&考察と共に、もしどなたか対処法を知っておられましたらご教示頂けたらと思いこの記事を書きました。

まずはシーンで1,2,3,および元々のsceneの計4つを作成します。
それぞれ
(シーン)1

ボーダー(ctrl+b)でトリミングの枠を作成し、ボーダーとトリムにチェックをしておきます。
1は横長に。
(シーン)2

2は下部に横長に。
(シーン)3

3は中央に縦にトリミングする設定です。
デフォルトのsceneはトリミング無しです。

この状態でそれぞれのシーンのコンポジットノードにノードを設定します。

レンダリングした画像をファイル1,2,3に出力する実にシンプルなノード。
これで出力した画像はこちら(シーン1)

同様にシーン2、シーン3はこうなります。

シーン2ノード↑と出力画像↓

シーン3ノード↑と出力画像↓
そしてデフォルトのscene(トリミング無し)


上記比較出力を見て頂けると一目瞭然なのですが、前準備でトリミング枠を設定したものがファイル出力時に3枚同様の設定として出てきます。
つまりボーダ&トリミングのサイズや位置はノードの書かれたシーン(のボーダー枠)自体に依存しています。
デフォルトのsceneでは全くトリミングされない3枚の画像が出力されている事からもわかります。
この事自体はそもそもblenderは3Dアニメーション制作ソフトであり、シーンをどんどん作成しビデオシーケンスエディタでフィルムストリップ(シーン)を配置していく~という使い方に置いて全く問題はない・至極当たり前かと思います。
自分は漫画の背景をコマごとにこの「シーン」に作って、出来たらノードのファイル出力で一括で画像化出来たら楽だなぁと思っていました。 そこでは上記のボーダー&トリミングがコマに合わせて設定したくて、それをノードの各ファイル出力で反映してほしい~と思いました。
希望画像としては…(↓画像は合成です)

こんな感じのファイル出力ノードをどこかのノードに記述すると(トリミング枠は各シーンごとに設定済み)

こんな感じにそれぞれの指定トリミング位置&サイズで一括にファイル出力をしてくれる~という手段がないかなぁと思いまして。
これらを反映する手段、やり方はあるのでしょうか?
もしやり方などご存知の方は教えて頂けると嬉しく思います。
もしも「そもそもアプローチの方法自体」が間違っているのかもしれません。想定する「シーン」の取り扱い自体がこんなやり方を想定していなくてこんな事をすべきでないのかもしれません。
こんな方法を使ったら希望するいろんなファイルを自在に出力できるよ~などのテクニックなど教えて頂けたら本当にありがたいです。
以上、ファイル出力ノードとボーダー&トリミングの検証と自分の期待する挙動など~でした。
上記まとめが、他のblender使いの方の参考に少しでもなれば幸いです。
]]>建物の作る消失点が、水平線上にはなくて少しズレる
という話題がありました。 カメラの仰角や、建物の水平垂直、レンズの歪み…等々
正直、個人的には「写真からは消失線を(厳密には)取れない」と思っています。
写真トレス(特に街風景)をした事ある人にはわかると思いますが、消失点は1点に収束せず誤差が出ます。(そこからあえて1点を選んでトレスに利用します)
これは最近のカメラのレンズが、複数枚のレンズが組み合わされかなり複雑な補正がされている為、画角の中央部と周辺部でもそれぞれ歪みが補正されていたり、安いレンズでは逆に補正されずに糸巻き変形・樽型変形などを起こしている。
超広角レンズと魚眼レンズとの違い。その他色々…
撮影してみるとわかりますが、水平線の位置がカメラの中心から少しでも上下にズレると直線が歪んでしまいます。
そもそもカメラを完全に水平にして、歪みない水平を撮って各種比較するのはなかなか手間がかかる…ということで3DCGにてどんな感じか試してみたくなりました。
見るとたしかに左の方の消失点が、右の球体の(見かけ上の)水平線の上にきます。…ある意味当たり前ですが。
もちろんこの球体は地球の1/12で、直径が大きくなればなるほど左の水平面に近づきます。
この差を…絵を描く際に考慮するかどうかは結構「好み」でしかないのかなぁと自分は思いました。
これくらいのズレなら、地表の平坦度やカメラ&建物の水平・垂直ゆがみで簡単にかき消されてしまうものでしょうから。
皆さまの参考になりましたら幸いです。
最後に正面からの絵ではスケール感がわかりにくいので、全体がわかるものを何枚か…。
ほんと見えているのはごく一部でしかないのが分かっていただけるかと思います。
カメラから人&箱の並び。 床のマスはあくまで目安でサイズは決めていません(スミマセン)
上の写真の床のマスを比較してもらうと、この時点でもう人間は判別つきませんね。
そして左の平面も大きな球体(直径1000km)に比べる極狭い範囲でしかないと…。
真横から見るとこんな感じ。かなり曲面からずれていってるように見えますが、そもそも地上ではこんな差が認識出来るほど視認は出来ません。
言い換えれば10km四方まっ平らな平原の中心点にたつと、360度地平線になる~ということですね。(山や高地がないことが前提)
これで1/12。地球はほんと大きいですね…。
簡単にちゃちゃっと机のモデルなぞ作る。
うむ、実にシンプル(苦笑)
ロングだとまぁこれでいいけど、アップだと流石にこれでは味気ない。
なんで角を面取りして、そこにマテリアル設定。マテリアルの境にfreestyle(細線)を設定させると…
こんな感じ。うん、この位線があるとハッタリが効く。
ただ前景と後景では線の質を変えたほうが良いかもね…(苦笑)
]]>