【Blender】BlenderをNodeBaseで動かすアドオンSverchokのご紹介

こんにちは。AMDlabの森山です。少し涼しくなってまいりました。

さて、今回はBlenderAddonのSverchokのご紹介です。

そもそもこのブログは建築系に向けたTechブログなので、Blenderのことを知らないという方も多いのではないでしょうか。Blenderとは3DCGを作るためのオープンソースソフトウェアです。誰でも無料でダウンロードすることができます。RhinocerosやSketchUpからCGに入られた方は操作に戸惑うかもしれませんが一般的なポリゴンモデリングソフトウェアですので、操作に慣れるとあらゆるものを簡単に作ることができます。

本記事ではLTSであるBlender2.83を使用していきたいと思います。操作感やUIに違いが出るため、必ず2.8以上のインストールをお勧めします。

準備

Sverchokをzip形式でダウンロードしてきます。下の方までスクロールしてください。リンクからgithubに飛びます。
Installationからarchive(zip)from githubを選択。この時解凍する必要はありません。

まずはBlenderを起動します。Edit > Preference > Add-onsを開いてください。

通常のAddonですと、名前を検索して、チェックマークを入れれば有効化されますが、ここで出てこないアドオンを入れる場合はZipファイルをInstallする必要があります。Installを押して先ほどダウンロードしてきたZipを選択してください。そして戻って有効化します。

一応Blenderを再起動しておきましょう。
Shift+F3、もしくは左上からSverchok Nodesを選択します。

ここまで起動確認したら準備完了です。

実際に使ってみる

カーソルを右下に持っていき、十字マークになった状態でドラッグするとBlenderの画面を分割することができます。そのうちの片方を3DViewportに、片方をSverchokNodesにしておきます。以下の画面のような感じにしておくと操作がしやすいでしょう。

まずは簡単な基本操作からです。
Sverchok側でNewをクリックします。もとからあるCubeは消しておきます
Shift+AでNodeを追加できます。まずはGeneratorからBoxを追加してきます。その後、VizからViewerDrawを選択します。
ドラッグすることでNodeをつなぐことできます。以下のようにして設定しましょう。BoxのMatrixをクリックすると、Matrix in Nodeが追加されます。
Matrix in Nodesのパラメーターを調整するとParametricに動かすことができます。

BAKEを押せばBlender側にBAKEできます。これはGrasshopperと同じですね。適用されないときはパラメーターを動かしたりしてみてください。よく適用されないことがあります。
基本的な操作は以上となります。
では、サンプルファイルを見ながら、Sverchokを理解していきましょう。

Exampleファイルを見る

Example > Architecture > ProfileBuildingを選択します。

少々分かりにくいので、前半のProfileでグループになっているところを削除し、以下のように差し替えます。
さて、内部で何が起こっているのかを見ていきましょう。

まずは全体の流れと、完成物を見てどのような操作がされているかを簡単に書いておきます

  1. 基準図形の作成
  2. 基準図形をZ軸方向に複製
  3. 側面のみをインセットして窓面の作成
  4. マテリアルの適用

この際、3番目の側面のみをインセットして窓面を作成するために、工夫が必要そうです。
ざっと大まかな流れを理解してから作成物のとりかかるとイメージができているので、どのような操作が必要か理解ができてスムーズに作ることができます

まずはBaseFormの部分を見ていきます。
ここにViwerDrawをつなげてみてみると以下のようになります

NumberRangeの数字をいじって変化を見てみると、Countが階数、Stopが階高荷影響を及ぼしていることが分かります。NumberRangeはどのようなデータを持っているのでしょうか。
Text > Stethoscopeをつなげてみてみましょう。これからDataの中身を見ていくときはこのNodeを使っていきます。

これは、Grasshopperの中ではSeriesに似た挙動をしています。Countに指定された数だけStopまで等間隔に値をリストにするNodeのようです。
ここでわかるのは、Sverchokはリストという概念を持っていることです。このことを意識しながら次に進みます。それがVectorのZにつながっているというのはどういうことでしょうか。


単純に指定された部分にその分だけのベクトルのリストを作っています。リストの深さも特に変わっていません
ここから、さらにViz > Viewer Indexにつなぎ、Vertexの様子を見てみましょう。

ここからわかるように、平行移動行列のような挙動をしていることが分かります。
また、Listの情報を見てみると、それらも保たれているため、これをUVConnectionでつなぐことで同じリスト番号をつないでいます。
せっかくなので、慣れるために少しだけカスタマイズして、UVConnectionをEdgeにしたものをもう一つ作り、そこにPipeをつなげてあげましょう

いわゆる柱を作るようなものはこうすることで作成できそうです。今回は最終完成系が微妙になるため使いませんが覚えておくと便利なテクニックになりそうです。
先ほど追加したものは削除して次のステップに進みます。

このMaskTop & Bottomの役割は、複製されたものの上下の面を選択するためのものです。
先ほど大まかな流れとして側面のみをインセットして~の前準備で、側面ではなくて底面と上面を選択し、それをMaskする方針のようです。

Select mesh elements by locationを使用してその判定を行っています。詳しい説明は後述する公式のドキュメントを見ていただけるとわかりますが、今回のBy Side Modeではメッシュの側面にある頂点を選択するモードとなっています。その側面をDirectionによって決めているため、頂上であれば(0, 0, 1)底面であれば(0, 0, -1)となります。
こうすることで最後のリストと最後から2番目のリスト。つまり上面と底面がそれぞれTrueになっているリストが作成できました。
ここから、OR演算をし、Notを取ることで、側面のみがTrueとなったリストを作成することができます。この演算はNORでひとまとめにすることもできますね。

さて、さいごはInsetです。2回行うことで窓面っぽくしていることが分かります。Maskに先ほどのリストをつなげることで、Falseの部分はスキップされて、側面のみに窓面を作成することができています。
Insetした窓面をもう一度Insetすることで窓枠らしいものを付けて「っぽく」仕上げています。
これは通常のBlenderの操作でもよく行うテクニックかなと思います

最後にマテリアルを適用して完成です。Switchを使用して窓面とコンクリートの面を分けて適用させています。

いかがでしょうか。Blenderはある程度後編集が可能ですが、最初に作ったオブジェクトの状態をさかのぼって編集することはできません。GrasshopperやHoudiniが恋しくなる時も多々あります。
Sverchokを使用することでHoudiniライクに編集ができるので、よく使うものだったり、自動化したい作業は作っておけば楽することができます。完全無料、商用利用可能でここまでできるのはかなりすごいことだと個人的には思います。1事務所にひとついかがでしょうか
今回紹介した機能以外にも数多くのノードが存在します。是非使ってみてください。Sverchokの公式ドキュメントはこちらです。

次回はこのSverchokを使用したLadybugのご紹介です。Blenderで日照解析も行える時代がやってきました。お楽しみに!

ARTICLES