コード例 #1
0
    public void BuildSpherePair()
    {
        float rad     = 0.25f;
        float gridRad = rad * 1.25f;
        int   cells   = 50;

        GetComponent <MeshFilter>().sharedMesh = MarchingCubes.BuildUnityMesh(-Vector3.one * gridRad, 2 * gridRad, cells, (Vector3 pos) =>
        {
            return(SDFOps.Union(SDFOps.Sphere(pos, new Vector3(0, 0, -rad * 0.5f), rad * 0.65f), SDFOps.Sphere(pos, new Vector3(0, 0, rad * 0.5f), rad * 0.65f)));
        });
    }
コード例 #2
0
    public void BuildBox()
    {
        Vector3 halfExt = new Vector3(0.5f, 0.4f, 0.25f);
        float   gridRad = Mathf.Max(halfExt.x, halfExt.y, halfExt.z) * 1.25f;
        int     cells   = 50;

        GetComponent <MeshFilter>().sharedMesh = MarchingCubes.BuildUnityMesh(-Vector3.one * gridRad, 2 * gridRad, cells, (Vector3 pos) =>
        {
            return(SDFOps.Box(pos, Vector3.zero, halfExt));
        });
    }
コード例 #3
0
    public void BuildSphere()
    {
        float rad     = 0.25f;
        float gridRad = rad * 1.25f;
        int   cells   = 50;

        GetComponent <MeshFilter>().sharedMesh = MarchingCubesBasicPort.BuildUnityMesh(-Vector3.one * gridRad, 2 * gridRad, cells, (Vector3 pos) =>
        {
            return(SDFOps.Sphere(pos, Vector3.zero, rad));
        });
    }
コード例 #4
0
    public void BuildDumbel()
    {
        float gridRad = 1;
        int   cells   = 50;

        GetComponent <MeshFilter>().sharedMesh = MarchingCubes.BuildUnityMesh(-Vector3.one * gridRad, 2 * gridRad, cells, (Vector3 pos) =>
        {
            float d = SDFOps.Box(pos, Vector3.zero, new Vector3(0.5f, 0.05f, 0.05f));
            d       = SDFOps.Blend(d, SDFOps.Sphere(pos, new Vector3(-0.5f, 0.0f, 0.0f), 0.25f), 0.2f);
            d       = SDFOps.Blend(d, SDFOps.Sphere(pos, new Vector3(0.5f, 0.0f, 0.0f), 0.25f), 0.2f);
            return(d);
        });
    }