目次
1)スムーズステップ(t1,t2,x) - スムーズステップ(t2,t3,x)
2)スムーズステップ(t1,t2,x) - スムーズステップ(t3,t4,x)
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 自体を返します。)