CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender 3.3】数式ノードのいろんな使い方を紹介!
![](https://cgbox.jp/wp-content/uploads/2023/08/17-4-1.jpg)
こんにちは!
コチラの記事では、フリーの3DCGソフト「Blender」を使った作品製作に役立つ知識・ノウハウを紹介しています。
今回は、マテリアルノードやジオメトリーノードで数式を使った編集操作を加えることができる、「数式ノード」について紹介します。
実際の作品製作に役立つ、数式ノードのいろんな活用方法を紹介していきたいと思います。
数式ノードとは?
数式ノードとは、その名の通り「数式を使って計算を行うノード」です。
インプットした値に対して、関数や比較等を行って、値を出力します。
コチラのように、シェーダーエディターなどで「Shift+A」→「コンバーター」→「数式(Math)」を選択して追加します。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_006.gif)
数式の種類
数式ノードでは、コチラのように非常に多くの数式の中から選択できるようになっています。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ005-1024x574.png)
数式の一覧と説明はこんな感じです。
(チュートリアル動画では英語表記されているものが多いので、日本語と英語を併記しています。)
「Functions(関数)」「Comparison(比較)」「Rounding(丸め)」「Trigonometric(三角関数)」「Conversion(変換)」の5つのグループに分けられます。
表の中で色を付けたものは、比較的よく使うものです(あとで紹介する使用例でもちょくちょく出てきます)。
グループ | 日本語名 | 英語名 | 説明 |
Functions (関数) | 加算 | Add | 2つの値の合計(足し算, +) |
減算 | Subtract | 2つの値の差(引き算, -) | |
乗算 | Multiply | 2つの値の積(掛け算, ×) | |
除算 | Divide | 2つの値の商(割り算, ÷) | |
積和算 | Multiply | Aを掛けたあとにBを足す(AX+B) | |
累乗 | Add | 入力値をべき乗するX^A | |
Log | Power Logarithm | 入力値の, Aを底としたLogをとる(Log_A (X)) | |
平方根 | Square Root | 入力値の平方根(√X) | |
逆平方根 | Inverse Square Root | 入力値の平方根の逆数(1÷√X) | |
絶対数 | Absolute | 絶対値(|X|) | |
指数 | Exponent | 入力値をネイピア数eのべき乗に(e^X) | |
Comparison (比較) | 最小 | Minimum | 入力値の最小値を出力 |
最大 | Maximum | 入力値の最大値を出力 | |
小さい | Less Than | 最初の値が2番目の値より小さい場合は1, それ以外は0を出力 | |
大きい | Greater Than | 最初の値が2番目の値より大きい場合は1, それ以外は0を出力 | |
符号 | Sign | 正の入力値は1、負の入力値は-1、0の入力には0を出力 | |
比較 | Compare | 2つの入力値の差がε以下の場合、1を出力、それ以外は0を出力 | |
Smooth Minimum | Smooth Minimum | Smooth Minimum(値の変化をなだらかにつないだときの最小値) | |
Smooth Maximum | Smooth Maximum | Smooth Maximum(値の変化をなだらかにつないだときの最大値) | |
Rounding (丸め) | 丸め | Round | 入力値を最も近い整数に丸める |
床 | Floor | 入力値を最も近い整数に切り捨て | |
天井 | Ceil | 入力値を最も近い整数に切り上げ | |
切り捨て | Truncate | 入力値の小数点を切り捨て | |
小数部 | Fraction | 小数点以下を出力 | |
剰余 | Modulo | 最初の値を2番目の値で割り算した余りを出力 | |
Wrap | Wrap | 入力値と、その値より小さい Max の整数倍に最も近い値との絶対差に基づき、Min と Max 間の値を出力 | |
スナップ | Snap | 入力値を、増分の値の最も近い整数倍に切り捨て | |
ピンポン | Ping-Pong | 入力値に基づいて、0と Scale の間で移動する値を出力 | |
Trigonometric (三角関数) | サイン | Sine | 入力値の正弦(サイン)を出力 |
コサイン | Cosine | 入力値の余弦(コサイン)を出力 | |
タンジェント | Tangent | 入力値の正接(タンジェント)を出力 | |
アークサイン | Arcsine | 入力値の逆正弦(アークサイン)を出力 | |
アークコサイン | Arccosine | 入力値の逆余弦(アークコサイン)を出力 | |
アークタンジェント | Arctangent | 入力値の逆正接(アークタンジェント)を出力 | |
アークタンジェント2 | Arctan2 | 最初の値を2番目の値で割った値の逆正接(アークタンジェント)を出力 | |
双曲線サイン | Hyperbolic Sine | 入力値の双曲線正弦(sinh, (e^X-e^(-X))/2)を出力 | |
双曲線コサイン | Hyperbolic Cosine | 入力値の双曲線余弦(cosh, (e^X+e^(-X))/2)を出力 | |
双曲線タンジェント | Hyperbolic Tangent | 入力値の双曲線正接(tanh, sinh(X)÷cosh(X))を出力 | |
Conversion (変換) | ラジアンへ | To Radians | ラジアン角度を度に変換 |
度へ | To Degrees | 度をラジアン角度に変換 |
数式ノードのそれぞれの数式の説明については、コチラの記事がわかりやすいので参考にしてみてください。
![](https://wiki3.jp/assets/image/favicon/apple-icon-120x120.png)
上の表を見て、「いろんな数式があるのはわかったけど、具体的なイメージがわからない」という方も多いと思います。
コチラのように、平面メッシュにマテリアルを追加してコチラのようなノードを組むことで、それぞれの数式からどんなアウトプットが出るかを理解することができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ009.jpg)
- 使用したノード
- 入力>テクスチャ座標
- ベクトル>マッピング
- コンバーター>XYZ分離
- コンバーター>数式
- コンバーター>数式>「大きい」(Greater Than)
コチラのように、数式を変えることで表示される図形が変わり、上の表の説明が理解できるようになると思うので、試してみてください!
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_007.gif)
使い方
Blenderの数式ノードではさまざまなノード操作ができるようになりますが、例えば以下のようなことができます。
それぞれについて、以降のセクションで具体的な使用方法・使用例について紹介していきます!
- マテリアルを作成する
- マテリアル・コンポジットの色を調整する
- ジオメトリーノードを操作する
- 図形を描く
数式ノードを使ってマテリアルのクオリティをアップしよう!
数式ノードをマテリアルに使用することで、クオリティをアップすることができます。
具体例を紹介します。
傷・汚れを作る
数式ノードを使ってテクスチャを重ね合わせることで、リアルな金属の傷・汚れを作ることができます。
以下のように、シェーダーエディターで「テクスチャ」→「ノイズ」と「コンバーター」→「数式」を追加し、「数式」は「乗算」に変更してください。
ノイズテクスチャは複製し、片方のスケールを3000、もう片方のスケールを700に設定します。
コチラのように、「乗算」で2つのノイズテクスチャを混ぜ合わせることができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/16-2.jpg)
さらに、「カラーランプ」の左側のコントローラーを右に持っていくと粗さのムラを調整できます。
![](https://cgbox.jp/wp-content/uploads/2022/09/03-3-1024x606.gif)
金属マテリアルの作成方法について、詳しくはコチラの記事を参考にしてみてください。
![](https://cgbox.jp/wp-content/uploads/2023/08/2-8.jpg)
フローリングのマテリアルの作り方
数式ノードを使って、コチラのようなリアルなフローリングのマテリアルを作ることができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/flooring_001-1024x576.jpg)
マテリアルノードはコチラです。
オレンジ色で印をつけたのが数式ノードですが、非常に多く使われています。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ010.jpg)
コチラのように、数式ノードを組み合わせることで、フローリングらしい板の並び方を表現することができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_008.gif)
上記のマテリアルノードの作成方法と、詳しい説明については、コチラのチュートリアル動画を参考にしてみてください。
マテリアル・コンポジットの色を調整する
数式ノードを使って、マテリアルやコンポジットの色を調整することができます。
具体的なやり方について紹介します。
マテリアルのRGBカラーを調整する
コチラのように、RGBを分離し、単一カラーチャンネルを数式ノードで調節したあとにRGB合成で合体させることで、色調を変化させることができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220528_rgb_007.gif)
数式ノードを含めた、「RGBカラーを調整できるノード」についてコチラの記事でいろいろと紹介しているので、あわせて参考にしてみてください。
![](https://cgbox.jp/wp-content/uploads/2023/08/15-4-1.jpg)
コンポジットでRGBカラーを調整する
レンダリング結果にさまざまな効果を加えることができる「コンポジット」でも、数式ノードを使ってレンダリング結果の色を調整することができます。
まずは、レンダリング後に「Compositing」のワークスペースで「ノードを使用」にチェックを入れてコンポジットノードを表示させます。
コチラのように、「コンバーター」→「カラー分離」と「カラー合成」を追加して、R,G,B,アルファをそれぞれ接続します。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_009.gif)
「コンバーター」→「数式」ノードを赤チャンネルに追加して、数式を「乗算」に設定して、値を動かすと、コチラのように色が緑から赤に変わります。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_010.gif)
Blenderの「コンポジット」の機能の基本的な使用方法については、コチラの記事で紹介しているので、あわせて参考にしてみてください。
![](https://cgbox.jp/wp-content/uploads/2023/08/14-1-2.jpg)
ジオメトリーノードでの使い方の例
ノードを使ってオブジェクトの形状などを操作することができる「ジオメトリーノード」の機能でも、数式ノードが使えます。
ジオメトリーノードで数式ノードを使った例を紹介します。
数式ノードでジオメトリーノードをアニメーションさせる
数式ノードを使ったジオメトリーノードによって、コチラのようにランダムに押し出した面に球を発生させるようなアニメーションを作成することができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_005.gif)
作成したジオメトリーノードはコチラです。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ008.jpg)
オレンジ色で示した数式ノードで、以下の操作を行っています。
- 「サイン(Sine)」で、往復運動を表現
- 「乗算(Multiply)」(3か所)で、押し出し量と球のスケールを表現
詳しい説明については、コチラの紹介記事と、記事から参照しているチュートリアル動画を参考にしてみてください。
![](https://cgbox.jp/wp-content/uploads/2022/05/220525_1.jpg)
チュートリアル動画は、初心者の方にも分かりやすいように丁寧に説明しているので、ジオメトリーノードを触ったことのない方でも十分に理解できると思います。
Blenderの「ジオメトリーノード」の基本的な使用方法については、コチラの記事でも紹介しているので、あわせて参考にしてみてください!
![](https://cgbox.jp/wp-content/uploads/2023/08/d4a73ef9862fd89accb35f2fc9e11903.jpg)
フレーム数とリンクしたタイマー
数式ノードを使って、コチラのようにフレーム数に合わせて時間を進めるタイマーを作ることができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_003.gif)
作成したジオメトリーノードはコチラです。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ006.jpg)
オレンジ色で表示した数式ノードは、コチラのような役割をしています。
- 「除算(Divide)」で、秒を60で割ることにより「分」を表現
- 「切り捨て(Truncate)」で、秒の小数点以下を切り捨て
- 「(Modulo)」で、60で割った余りを出力することでタイマーの「秒」を表現
また、上のノードの応用で、コチラのようにカウントダウンして時間になると文字列を表示するタイマーも作れます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220919_mathnode_004.gif)
コチラが作成したノードです。
青枠で囲ったのが、さっき紹介したノードから追加した箇所になります。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ007-1.jpg)
追加したノードのうち、オレンジ色で表示した数式ノードは、コチラのような役割をしています。
- 「減算(Subtract)」で、0から秒を引くことにより「カウントダウン」を表現
- 「乗算(Multiply)」と「加算(Add)」で、「分」×60と「秒」を足し合わせることで残り秒数を表現
ノードの作成方法について、詳しくはコチラの紹介記事と、記事から参照しているチュートリアル動画を参考にしてみてください。
![](https://cgbox.jp/wp-content/uploads/2022/07/スクリーンショット-2022-07-07-19.57.30.jpg)
数式ノードを使って図形を描いてみよう!
最後に、ちょっと変わった数式ノードの使い方として、図形を描く方法を紹介します!
実際の作品作りに使うかどうかはさておき、数式ノードの仕組みの理解に役立つので、試しに作ってみることをオススメします。
けっこう難しい数式が登場しますが、あまり気にせずにノードだけをまねすれば図形が描けるので、チャレンジしてみてください。
円
数式ノードを使って、コチラのような円を表現することができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/circle_0001.png)
コチラのWikipediaの記事にもあるように、XY座標上で円を表現する方程式「X^2+Y^2=1」を数式ノードで表現します。
コチラのように「X^2+Y^2=1」を数式ノードで表現することで、先ほど示した円を描くことができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ001-1.png)
数式ノードを使った円の描き方について、詳しくはコチラの記事を参考にしてみてください。
![](https://cdn.image.st-hatena.com/image/scale/8541b66ac02483ad1f51101d474e915cbcf159fb/backend=imagemagick;version=1;width=1300/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fl%2Flegendimposter%2F20201108%2F20201108223219.png)
ハート
数式ノードを使って、コチラのようなハートを表現することができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/heart_0001.png)
円の方程式と似ていますが、さらに複雑になった「X^2-(5/4Y-√|X|)^2=1」でハートの形状を表現することができます。
数式ノードで表現するとコチラのようになります。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ002-1.png)
Blenderの数式ノードを使ったハートの描き方について、詳しくはコチラのチュートリアル動画を参考にしてみてください。
カージオイド図形
カージオイド(円の外側を、別の円が接するように転がるときに描かれる曲線)も、Blenderの数式ノードで表現することができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/cardloid_0001.png)
「カージオイド」の方程式は「r=1+cos(nθ)」という極座標形式で表現されます。
コチラのように、数式ノードを使用してX,Yからrとθを計算することで、表現できます。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ003-1.png)
上の「乗算」ノードの、黄色で示されている値を1から順に大きくしてやることで、コチラのように花束のような図形を描くことができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220917_mathnode_001.gif)
「カージオイド」(Cardioid)の数学的な説明については、コチラの記事などを参考にしてみてください。
![](https://www.nansuka.jp/wp/wp-content/uploads/2021/02/a98b1120712ae2558c294773114e59b3-4.jpg)
星
図形を描く方法のラストとして、コチラのように星を作る方法を紹介します。
![](https://cgbox.jp/wp-content/uploads/2022/09/star_0001.jpg)
「カージオイド」と同じ極座標形式で、「r=1/cos{(Acos(sin nθ)-2π)/5}」で星を描くことができます。
かなり数式ノードが入り組んでいますね。
![](https://cgbox.jp/wp-content/uploads/2022/09/キャプチャ004.png)
nの値を大きくしてやることで、コチラのように星から出る光芒の数を増やすことができます。
![](https://cgbox.jp/wp-content/uploads/2022/09/20220918_mathnode_002.gif)
上で紹介した「星の作り方」については、コチラのチュートリアル動画で紹介しているので参考にしてみてください。
まとめ
Blenderの数式ノードについて、さまざまな使用例を紹介してみましたが、いかがだったでしょうか?
コチラの記事で紹介したのは数式ノードの活用例のほんの一部ですが、ぜひプロシージャルマテリアルや、コンポジット、ジオメトリーノード等で参考にしていただければと思います。
最後に、今回のまとめです。
- 数式ノードとは?:数式を使って計算を行うノード
- 数式の種類は以下の5つのグループ
- Functions(関数):加算、乗算、絶対値など
- Comparison(比較):小さい、大きいなど
- Rounding(丸め):切り捨て、天井など
- Trigonometric(三角関数):サイン、コサインなど
- Conversion(変換):ラジアンから度へ、など
- 数式の種類は以下の5つのグループ
- 数式ノードを使ってマテリアルのクオリティをアップしよう!
- 傷・汚れを作る:テクスチャを混ぜ合わせる
- フローリングのマテリアルの作り方:加算・乗算などを組み合わせて床板の配置を表現
- マテリアル・コンポジットの色を調整する
- マテリアルのRGBカラーを調整する:「RGB分離」「RGB合成」と組み合わせる
- コンポジットでRGBカラーを調整する:「カラー分離」「カラー合成」と組み合わせる
- ジオメトリーノードでの使い方の例
- 数式ノードでジオメトリーノードをアニメーションさせる:「サイン」「乗算」などを使用
- フレーム数とリンクしたタイマー:「除算」「剰余」などを使用
- 数式ノードを使って図形を描いてみよう!
- 円:X^2+Y^2=1
- ハート:X^2-(5/4Y-√|X|)^2=1
- カージオイド図形:r=1+cos(nθ)
- 星:r=1/cos{(Acos(sin nθ)-2π)/5}