スライス エフェクトを作成するには、最初に エミッシブ ノード グラフを作成してソリッド マテリアルを作成し、次にメッシュのワールド位置データと TransformPosition マテリアル ノードを使用してメッシュをカットする場所を決定します。
このマテリアルを使用すると、メッシュを壁の反対側に浸透させずに壁に面一に配置したい場合や、壁部分としてスタティックメッシュを使用してプレイヤー用の迷路のパスを作成する場合などで、メッシュを効率的に半分にできます。
エミッシブ ノード グラフを作成する
すでにエミッシブ グラフを使用しているノードをコピーし、グラフの不要な部分を削除した後に、必要なノード構成を追加するとエフェクトを作成できます。
マテリアルのルート ノードを選択し、[Details (詳細)] パネルの [Two Sided (両面)] オプションをオンにします。
[Blend Mode (ブレンド モード)] のドロップダウン メニューを開き、[Masked1] を選択します。
ノード グラフ内で右クリックし、指定した名前を検索して、次のノードをマテリアルに追加します。
Constant ノード × 3
Constant 3Vector 表現式ノード × 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 入力に接続します。
エミッシブ ノード グラフが完成しました。
メッシュを半分にカットする
次に、メッシュの位置をターゲットとする位置グラフを作成して、プロジェクトからメッシュの部分を削除します。
このエフェクトは、マテリアルのワールド位置データを使用してメッシュを自動的に半分にカットし、ノード グラフに入力された指定された方向にメッシュ上のマテリアルを変換することで作成できます。
新しいマテリアルを作成して開き、Constant3Vector マテリアル ノードをグラフに追加します。 ノードに色を追加し、Constant3Vector ノードからドラッグして、Main Material ノードの Base Color 入力に接続します。
マテリアル エディタ内で右クリックし、検索バーに「Functions」と入力してマテリアル関数ノードを作成します。 MaterialFunctionCall オプションを選択します。 Unspecified Function ノードがマテリアル エディタに表示されます。
マテリアル エディタでは特定のマテリアル関数の検索を行うことはできません。 したがって、未指定のマテリアル関数ノードを作成し、それに関数を割り当てる必要があります。
Unspecified Function ノードを選択し、[Details] パネルで [Material Function (マテリアル関数)] ドロップダウン メニューから ObjectLocalBounds マテリアル関数を割り当てます。 Object マテリアル関数ノードがマテリアル エディタに自動的に表示されます。
マテリアル エディタに次のノードを追加します。
WorldPosition ノード
TransformPosition ノード
Constant ノード
Add ノード
Clamp ノード
Component Mask ノード
Multiply ノード
Subtract ノード × 2
WorldPosition ノードをドラッグして TransformPosition ノードに接続します。
TransformPosition ノードを選択し、[Material Expression Transform Position (マテリアル式のトランスフォーム位置)] の値を次のように変更します。
Source (ソース) = Absolute World Space (絶対座標)
Destination (宛先) = Local Space (ローカル空間)
TransformPosition ノードをドラッグし、1 つ目の Subtract ノードの A 入力に接続します。
ObjectLocalBounds ノードの Local Bounds Minimum ピンをドラッグし、1 つ目の Subtract ノードの B 入力に接続します。
1 つ目の Subtract ノードをドラッグし、Multiply ノードの A 入力に接続します。
Multiply ノードの B 入力の値を「-1.0」に変更します。
Multiply ノードをドラッグし、Add ノードの A 入力に接続します。
ObjectLocalBounds ノードの Local Bounds Max ピンをドラッグし、Add ノードの B 入力に接続します。
Add ノードをドラッグし、2 つ目の Subtract ノードの A 入力に接続します。
Constant ノードを右クリックして Parameter ノードに変更します。 Parameter ノードに「ObjectClip」という名前を付けます。
ObjectClip の値を「0.0」に設定します。
ObjectClip をドラッグし、2 つ目の Subtract ノードの B 入力に接続します。
Subtract ノードをドラッグして Component Mask ノードに接続します。
Component Mask ノードを選択し、[Details] パネルで [Material Expression Component Mask (マテリアル式コンポーネント マスク)] の値を「G」および「B」に変更します。
Mask ノードをドラッグして、Clamp ノードの White 入力 に接続します。
Clamp ノードの Max 入力の値を「1.0」に変更します。
Clamp ノードをドラッグして Opacity Mask に接続します。
画像をクリックすると拡大表示されます。
[Apply (適用)] をクリックします
ObjectClip ノードの負の B の値を変更するとオブジェクトがリストアされ、正の値を変更するとオブジェクトの除去される部分が増えます。 また、クリップの範囲は正規化されていないため、値はマテリアルが割り当てられるオブジェクトのスケールによって決まります。