[2.8]スイッチで切り替える
さて、こちらの話題が皆さんの注目を集めているようですね。
ほうほうなるほど、Blenderで作られたんですね。好きなものに情熱を傾けられるというものは良いですね。
…あら、奇遇ですね、今書いている記事もBlenderについてなんですよ、モデリング一切しないですけど。
という茶番は置いておくとして、今回は「スイッチ」。先日公開しているプロシージャルマテリアルでも使っている、数値を変えることでテクスチャのON/OFFを切り替える仕組み(?)ですね。
実際のファイルで
えーと先日こういうものを出しました。
ただ、上記の記事でダウンロード出来るファイルのマテリアルだとちょっと込み入りすぎている(?)ので、ほんの少しだけ単純な構成のマテリアルで、ちょっとだけ説明してみたいと思います。2.82用.blendファイルです。
ダウンロードして開くとこのような感じ。「誰だよ単純っていったのは?」って文句言われそうですね。
上のノード、インプットノードのRGBの下、数値の入力欄がありますが、これを変えると瞳の模様がそれぞれ変化します。同じマテリアルなのにね。
左から0,1,2,3で設定できる模様です。(模様については以前和柄の話題あたりで作ったものを流用しているだけなのであまり気にしないでください。)
ノードを見ていきましょう
ではノード全体を。
そして個々の模様を作っているところはそれぞれ以下のように。これらはそれぞれひとかたまりとして考えます。
どの部分がスイッチ?雑に斜線が入っているあたりです。
数値から「ゼロイチ」にする
斜線左側部分の領域のお話。
ノードの情報の流れは左から右に、です。
入力は Input >Value ノードですね。ここの値を変更します。
次、 Floor と書いてあるノード。これは「小数点以下切り捨て」、すなわち INT( Value ) みたいな奴です。これで 0,1,2,3 と離散的な数値になります。これは便宜上置いているものなのでそこまで気にしなくて良いです。
次、Less Than と Greater Than というノードが縦に並んでいますね。ここは「条件によって数値を変えるノード」です。
・ Less Than - Input1 < Input 2 の時 に 1.0 、 それ以外は 0.0
・ Greater Than - Input1 > Input 2 の時 に 1.0 、 それ以外は 0.0
さて、このLess Than、Greater Thanの2種類のノードと Multiply を組み合わせます。以下のように構成すると、「0.9 より大きい かつ 1.2 より小さい 場合に 1.0」という、AND条件として動作します。
この組みを、条件の範囲の設定をずらしてあげると、各出力から条件に合致した時のみ1.0、それ以外は0.0を得ることができるわけですね。
これで入力した数値から「ゼロイチ」にする、スイッチのノブ部分は作れた感じです。次は実際に切り替わる回路に相当する部分について。
2種類の回路切り替え機
今回のノードでは4種類の模様(+無地)を切り替えるようにしています。大きく分けると、「単色でアルファのみを抜く」、「レイヤーを一つ重ねる」というものです。
Mix RGB ノード、 Facに 1.0 が入力されると Color2の色が出力されます。
2Dのグラフィックソフトだと Color2 が「上のレイヤー」、Color1が「下のレイヤー」、Fac が「アルファ」に相当するというとわかってもらえるかもしれません。
ではこちらのノード。それぞれの模様の情報を①②③④で表しています。MixRGBノードBのFac に 0.0 が入力された時には MixRGBノードAの出力が 出力となります。
MixRGBノードBのFac に繋がっているAddとかMultiplyのノードは作成したノードをアルファマスクとして切り替えているというのがわかると思います。
「ということは、④の入力のところの ADD ノードに模様ツッコめばマスクとして機能させられるんじゃね?」と思ったあなたは鋭いです。ぜひ作ってみてください。
さてと、
いまいちわかんなかった方はファイルを開いてこちらの数値を動かして模様が切り替わる様をご自身の環境で楽しんでくださいませ。
ではー
お読みいただきありがとうございます。サポートいただいた分はおやつのグレードアップに使おうかと思います。スキ、SNSにシェアもよろしくお願いします!