为表面网格创建剪切工具

问题描述 投票:0回答:1

我正在尝试创建一个着色器/材质,一旦与特定网格接触,它将显示其内部,类似于: 在此输入图片描述

到目前为止,我已经创建了一个应用于网格本身的着色器,但我不希望这样做,因为我不想更改网格的材质。

在此输入图片描述

关于如何使材质应用于切割一个特定网格的球体/平面,有什么想法吗?

unity-game-engine shader mesh
1个回答
0
投票

我想我能解决这个问题。 ShaderGraph

using UnityEngine;
using System.Collections.Generic;

public class MeshClipper : MonoBehaviour
{
    public GameObject model3D;
    public Transform planeTransform;
    private Material cuttingMaterial;

    private void Awake() {
        MeshRenderer renderer = model3D.GetComponent<MeshRenderer>();
        cuttingMaterial = renderer.material;
    }

    void Update()
    {
        Vector3 planePosition = planeTransform.position;
        Vector3 planeNormal = planeTransform.up * -1;

        cuttingMaterial.SetVector("_PlanePosition", planePosition);
        cuttingMaterial.SetVector("_PlaneNormal", planeNormal);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.