【シェーダーグラフ】SmoothStepノードとその応用の詳細説明

目次

1.スムーズステップ機能

2. 基本イメージ

ケース 1: t1 > t2 

ケース 2: t1 < t2 

3. 2 つの SmoothStep 関数の減算のイメージ

1)スムーズステップ(t1,t2,x) - スムーズステップ(t2,t3,x)

2)スムーズステップ(t1,t2,x) - スムーズステップ(t3,t4,x)

4. SmoothStep ノードの適用

1) <edge2 において、独立変数としてのedge1

2) エッジ 2 < In、独立変数としてのエッジ 1

3) < エッジ 1、独立変数としてのエッジ 2 の場合

4) エッジ 1 < In、独立変数としてのエッジ 2

5. SmoothStep を使用して、エッジのあるモデルのカット効果を作成します


1.スムーズステップ機能

float SmoothStep(float t1, float t2, float x)
{
    x = clamp((x-t1)/(t2-t1),0.0,1.0);
    return x*x*(3-2*x);
}

2. 基本イメージ

ケース 1: t1 > t2 

t1 = 3、t2 = -2 を例にとると、SmoothStep(3, -2, x) のイメージは次のようになります。

画像から、x <= -2 の場合は 1 を返し、x >= 3 の場合は 0 を返し、-2 < x < 3 の場合は戻り値が 1 から 0 まで徐々に減少していることがわかります。 

つまり、SmoothStep(t1, t2, x) (t1>t2) の場合、x <= t2 の場合は 1 を返し、x >= t1 の場合は 0 を返し、t2 < x < t1 の場合は戻り値が徐々に増加します。 x の増加とともに 1 から 0 に減少します。

マテリアル ボールを使用して表現し、モデル空間の y 座標を x 変数に渡します。得られるマテリアル効果は次のとおりです。

上から下は黒から白へのグラデーションであり、グラデーション領域の幅は t1 - t2 のサイズに依存します。

ケース 2: t1 < t2 

t1 = -2、t2 = 3 を例にとると、SmoothStep(-2, 3, x) のイメージは次のようになります。

画像から、x <= -2 の場合は 0 を返し、x >= 3 の場合は 1 を返し、-2 < x < 3 の場合は戻り値が 0 から 1 まで徐々に増加することがわかります。 

つまり、SmoothStep(t1, t2, x) (t1<t2) の場合、x <= t1 の場合は 0 を返し、x >= t2 の場合は 1 を返し、t1 < x < t2 の場合は戻り値が徐々に増加します。 x は 0 から 1 まで増加します。

マテリアル ボールを使用して表現し、モデル空間の y 座標を x 変数に渡します。得られるマテリアル効果は次のとおりです。

 上から下は白から黒へのグラデーションであり、グラデーション領域の幅は t2 - t1 のサイズに依存します。

3. 2 つの SmoothStep 関数の減算のイメージ

1)スムーズステップ(t1,t2,x) - スムーズステップ(t2,t3,x)

t1 = -2、t2 = 0、t3 = 2 を例にとると、SmoothStep(-2, 0, x) - SmoothStep(0, 2, x) のイメージは次のようになります。

画像から、x <= -2 または x >= 2 の場合は 0 を返し、x = 0 の場合は 1 を返し、-2 < x < 2 の場合、戻り値は の範囲にあることがわかります。 [0,1]。

マテリアル ボールを使用して表現し、モデル空間の y 座標を x 変数に渡します。得られるマテリアル効果は次のとおりです。

2)スムーズステップ(t1,t2,x) - スムーズステップ(t3,t4,x)

t1 = -2、t2 = -1、t3 = 1、t4 = 2 を例にとると、SmoothStep(-2, -1, x) - SmoothStep(1, 2, x) のイメージは次のようになります。

画像から、x <= -2 または x >= 2 の場合は 0 を返し、-1 <= x <= 1 の場合は 1 を返し、-2 < x < -1 または 1 < x の場合は 1 を返すことがわかります。 < 2 の場合、戻り値は [0,1] の範囲になります。

マテリアル ボールを使用して表現し、モデル空間の y 座標を x 変数に渡します。得られるマテリアル効果は次のとおりです。

2 つの SmoothStep 関数を減算すると、リング効果を作成できます。

4. SmoothStep ノードの適用

SmoothStep(edge1,edge2,In)の場合

1) <edge2 において、独立変数としてのedge1

基本イメージから次のことがわかります。

In <edge2< edge1の場合、1 を返します

In < edge1  <  edge2の場合、0 を返します

edge1  < In <  edge2の場合、[0,1] を返し、edge1 が減少するにつれて、戻り値は 0 から 1 に増加します。

上記 3 つの関係式において、edge1 は徐々に減少しますが、 < egde2 の 2 つの定数を固定し、edge1 を独立変数とし、モデル座標の y 成分を渡すと、材料は図のようになります。

2) エッジ 2 < In、独立変数としてのエッジ 1

基本イメージから次のことがわかります。

エッジ 1 < エッジ 2 < Inの場合、1 を返します

エッジ 2 <エッジ 1 < Inの場合、0 を返します

edge2 < In <  edge1 の場合、[0,1] を返し、edge1 が増加するにつれて、戻り値は 0 から 1 に増加します。

上記の 3 つの関係式では、edge1 は徐々に増加します。2 つの定数 egde2 < In を固定し、edge1 を独立変数とし、モデル座標の y 成分を渡します。マテリアルは図に示すとおりです。

3) < エッジ 1、独立変数としてのエッジ 2 の場合

基本イメージから次のことがわかります。

In <  edge1 < edge2 の場合、0 を返します

In <  edge2  < edge1の場合 、1 を返します

edge2  < In < edge1の場合 [0,1] を返し、edge2 が減少するにつれて、戻り値は 1 から 0 に減少します。

上記 3 つの関係式において、edge2 は徐々に減少しますが、<edge1 の 2 つの定数を固定し、edge2 を独立変数として、モデル座標の y 成分を渡します。材質は図のとおりです。

4) エッジ 1 < In、独立変数としてのエッジ 2

基本イメージから次のことがわかります。

エッジ2  < エッジ1 < 場合、  0を返します

エッジ1 < エッジ2 <の場合、  1 を返します

エッジ 1 < エッジ 2  場合、[0,1] を返し、エッジ 2 が増加するにつれて、戻り値は 1 から 0 に減少します。

上記 3 つの関係式では、edge2 が徐々に増加するため、edge1 < In の 2 つの定数を固定し、edge2 を独立変数として、モデル座標の y 成分を渡します。マテリアルは図に示すとおりです。

5. SmoothStep を使用して、エッジのあるモデルのカット効果を作成します

アイデア: Step ノードを使用してモデルのカット効果を実行し、SmoothStep ノードを使用してエッジ効果を追加します

4 つの新しいプロパティを追加します。

このうち、Edge はカット高さの制御に使用され、Width はエッジの幅の制御に使用され、EdgeColor はエッジの色、MainColor はモデル全体の色です。

 

 効果:

(関数のイメージは Excel で直接使用されています。Excel にはクランプ関数はありません。Median 関数で実装できます。Median 関数は一連の数値の中央値を返します。Median(0, x, 1 の場合) )、x < 0 の場合は 0 を返し、x > 1 の場合は 1 を返し、x が [0,1] にある場合は x 自体を返します。)

おすすめ

転載: blog.csdn.net/weixin_61427881/article/details/127839417