このチュートリアルでは、マテリアルの絶対的な ワールド位置 ではなく、ローカル空間値を使用してスライスの位置を決定します。
最初にエミッシブ ノード グラフを設定してソリッド マテリアルを作成してから、次にメッシュ ローカル空間とマテリアル関数を使ってメッシュをスライスする場所を決定して、スライス エフェクトを作成します。
エミッシブ ノード グラフを作成する
-
マテリアルのルート ノードを選択し、[Details (詳細)] パネルの [Two Sided (両面)] オプションをオンにします。
-
[Blend Mode (ブレンド モード)] のドロップダウン メニューを開き、[Masked (マスク)] を選択します。
-
ノード グラフ内で右クリックして指定した名前を検索し、コピーしたマテリアルに次のノードを追加します。
-
Constant ノード × 3
-
Constant 3Vector Expression ノード × 2
-
Clamp ノード × 2
-
Append3Vector ノード
-
WorldPosition ノード
-
Subtract ノード
-
Dot Product ノード
-
Multiply ノード
-
Linear Interpolate ノード
-
TwoSidedSign ノード
-
-
1 番目の Constant3Vector ノードをダブルクリックし、マテリアルに外装カラーを追加します。
-
1 番目の Constant3Vector ノードの白のピンをドラッグし、マテリアルのルート ノードの Base Color 入力 に接続します。
-
1 番目の Constant ノードのピンをドラッグし、マテリアルのルート ノードの Roughness 入力 に接続して値を「0.75」に変更します。
このコンフィギュレーションにより、ベース カラーとマテリアルが割り当てられるオブジェクトのライトに対するマテリアル応答が作成されます。次のコンフィギュレーションでは、メッシュの内部が屋内でソリッドに見えるようにするエミッシブが作成されます。
-
TwoSidedSign ノードをドラッグして Clamp ノードに接続してから、Clamp ノードをドラッグして Lerp ノードの Alpha 入力 に接続します。
-
2 番目の Constant3Vector ノードをダブルクリックし、メッシュの内装のカラーを追加します。Constant3Vector ノードの白のピンをドラッグし、Lerp ノードの A 入力 に接続します。
-
Lerp ノードを選択し、B 入力 の値を「0.0」に設定します。
-
Lerp ノードをドラッグし、Multiply ノードの A 入力 に接続します。
-
Multiply ノードを選択し、B 入力 の値を「0.3」に変更します。
-
Multiply ノードをドラッグし、マテリアルのルート ノードの Emissive Color 入力 に接続します。
エミッシブ ノード グラフが完成しました。
位置グラフ
次に、メッシュの位置をターゲットとする位置グラフを作成して、プロジェクトからメッシュの部分を削除します。
すでにエミッシブ グラフを使用しているノードをコピーし、グラフの不要な部分を削除した後に、必要なノード構成を追加するとエフェクトを作成できます。
メッシュの位置データをターゲティングすることにより、マテリアルを使用してメッシュの部分を消すことができます。このエフェクトは、アニメーションの作成 にも使用できます。
マテリアル エディタで右クリックし、検索バーに「Functions」と入力してマテリアル関数ノードを作成します。MaterialFunctionCall オプションを選択します。Unspecified Function ノードがマテリアル エディタに表示されます。
マテリアル エディタでは特定のマテリアル関数を検索することができないため、代わりに未指定のマテリアル関数ノードを作成し、それに関数を割り当てる必要があります。

Unspecified Function ノードを選択し、[Details] パネルで [Material Function (マテリアル関数)] ドロップダウン メニューから Local Position マテリアル関数を割り当てます。LocalPosition マテリアル関数ノードがマテリアル エディタに自動的に表示されます。
2 番目の Unspecified Function ノードを作成し、ObjectLocalBounds 関数をこのノードに割り当てます。

-
新しい マテリアル インスタンス を作成して開きます。
-
Main Material ノード を選択し、[Blend Mode] 設定を [Masked] に設定します。
-
マテリアル エディタに次のノードを追加します。
-
Divide ノード
-
Constant3Vector ノード
-
ComponentMask ノード
-
Clamp ノード
-
Constant ノード × 2
-
Subtract ノード × 2
-
-
Constant3Vector ノードを選択してダブルクリックし、カラーを追加します。
-
Constant3Vector ノードの 白の出力 ピンをドラッグし、Main Material ノードの Base Color 入力 に接続します。
-
Constant ノードを選択し、値を「0.75」に設定します。
-
Constant ノードからドラッグし、Main Material ノードの Roughness 入力 に接続します。
-
Local Position ノードの Instance Local Position ピンをドラッグし、Divide ノードの A 入力 に接続します。
-
ObjectLocalBounds ノードの Local Bounds Size ピンをドラッグし、Divide ノードの B 入力 に接続します。
-
Divide ノードをドラッグし、1 番目の Subtract ノードの B 入力 に接続します。
-
Subtract ノードの A 入力 の値を「1.0」に変更します。
-
1 番目の Subtract ノードをドラッグして Mask ノードに接続します。
-
Mask ノードをドラッグし、2 番目の Subtract ノードの A 入力 に接続します。
-
2 番目の Constant ノードを選択し、値を「0.1」に変更します。
-
Constant ノードをドラッグし、2 番目の Subtract ノードの B 入力 に接続します。
-
2 番目の Subtract をドラッグし、Clamp ノードの 白の入力 に接続します。
-
Clamp ノードの Max の値を「1.0」に変更します。
-
マテリアルのルート ノードを選択し、[Details] パネルの [Blend Mode] の値を [Masked] に変更します。Opacity Mask オプションがメインのルート ノードで利用可能になります。
-
Clamp ノードをドラッグし、マテリアルのルート ノードの Opacity Mask に接続します。
これは、ノードが接続されるときに必要なコンフィギュレーションです。

1 番目の Subtract ノードの A 入力 の値を変更すると、メッシュの外観が変更されます。

これにより、オブジェクトのローカル位置が取得されます (X/Y/Z のグラディエントは、すべてがオブジェクトの中心より左/下/後ろの場合は負、すべてがオブジェクトの中心より右/上/前の場合は正)。これらの値は、オブジェクトのワールドのスケールによって決定されます。
値を正規化する (たとえば [0, 1] の範囲に収める) には、(オブジェクトの境界に従って) それらの値を最大範囲で割ります。1 - B 入力はグラディエントの方向を切り替えるため、右/上/前の値は左/下/後ろの値より低くなります。
ComponentMask ノードは青チャンネル DotProduct に代わるものであり、結果は同じになります。そのため、上記のように (0, 1 の範囲に収まる) パラメータに変換される定数の 1 つであるクリップ値を減算し、オパシティ スロットに書き込む前にすべての負の値をクランプできます。