Exemple #1
0
        public Mesh Build(MeshSmoothingMethod method, int times = 5, float alpha = 0.2f, float beta = 0.5f)
        {
            var mesh = triangulation.Build(
                (Vertex2D v) => {
                float z = 0f;
                if (heightTable.ContainsKey(v))
                {
                    z = heightTable[v];
                }
                return(new Vector3(v.Coordinate.x, v.Coordinate.y, -z));
            }
                );

            mesh = Symmetrize(mesh);

            switch (method)
            {
            case MeshSmoothingMethod.Laplacian:
                mesh = MeshSmoothing.LaplacianFilter(mesh, times);
                break;

            case MeshSmoothingMethod.HC:
                mesh = MeshSmoothing.HCFilter(mesh, times, alpha, beta);
                break;
            }

            network = VertexConnection.BuildNetwork(mesh.triangles);
            return(mesh);
        }
 void UpdateMesh()
 {
     mesh.Clear();
     mesh.vertices  = vertices;
     mesh.triangles = triangles;
     MeshSmoothing.LaplacianFilter(mesh, 2);
     mesh.RecalculateNormals();
     GetComponent <MeshCollider>().sharedMesh = mesh;
     meshRenderer.material = groundMaterial;
 }
Exemple #3
0
 //function for the button to use
 public void LaplacianSmooth()
 {
     if (Times != null)
     {
         times = (int)Times.value;
     }
     else
     {
         times = 1;
     }
     filter.mesh = MeshSmoothing.LaplacianFilter(filter.mesh, times);
 }
Exemple #4
0
 public void HumphreySmooth()
 {
     if (Times != null)
     {
         times = (int)Times.value;
     }
     else
     {
         times = 1;
     }
     filter.mesh = MeshSmoothing.HCFilter(filter.mesh, times, hcAlpha, hcBeta);
 }
Exemple #5
0
 void Update()
 {
     if (Input.GetKeyDown(KeyCode.L))
     {
         filter.mesh = MeshSmoothing.LaplacianFilter(filter.mesh, times);
         return;
     }
     if (Input.GetKeyDown(KeyCode.H))
     {
         filter.mesh = MeshSmoothing.HCFilter(filter.mesh, times);
         return;
     }
 }
Exemple #6
0
        void Start()
        {
            var mesh = filter.mesh;

            filter.mesh = ApplyNormalNoise(mesh);

            switch (type)
            {
            case FilterType.Laplacian:
                filter.mesh = MeshSmoothing.LaplacianFilter(filter.mesh, times);
                break;

            case FilterType.HC:
                filter.mesh = MeshSmoothing.HCFilter(filter.mesh, times, hcAlpha, hcBeta);
                break;
            }
        }
Exemple #7
0
    public void AddSmoothing()
    {
        switch (type)
        {
        case FilterType.Laplacian:
            //filter.mesh = MeshSmoothing.LaplacianFilter(deformingMesh, times);
            deformingMesh = MeshSmoothing.LaplacianFilter(deformingMesh, times);

            break;

        case FilterType.HC:
            //filter.mesh = MeshSmoothing.HCFilter(deformingMesh, times, hcAlpha, hcBeta);
            deformingMesh = MeshSmoothing.HCFilter(deformingMesh, times, hcAlpha, hcBeta);
            break;
        }
        displacedVertices = deformingMesh.vertices;
        Debug.Log("Smoothing Teeth activated !!!!!");
        Debug.Log("Smoothing Teeth activated !!!!!");
    }
Exemple #8
0
    void ApplySmoothing()
    {
        if (UserMeshVisualizer != null && UserMeshVisualizer.DisableMeshUpdate)
        {
            return;
        }
        var       mesh = filter.mesh;
        JobHandle normalNoiseJobHandler;

        if (mesh.vertexCount != 0)
        {
            filter.mesh = ApplyNormalNoise(mesh, out normalNoiseJobHandler);

            switch (Noise.Type)
            {
            case FilterType.Laplacian:
                if (!LimitingMesh)
                {
                    filter.mesh = MeshSmoothing.LaplacianFilter(filter.mesh, Noise.SmoothingTimes, normalNoiseJobHandler);
                }
                else
                {
                    filter.mesh = MeshSmoothing.LaplacianFilter(filter.mesh, LimitMesh, Noise.SmoothingTimes, normalNoiseJobHandler);
                }
                break;

            case FilterType.HC:
                if (!LimitingMesh)
                {
                    filter.mesh = MeshSmoothing.HCFilter(filter.mesh, Noise.SmoothingTimes, Noise.HCAlpha, Noise.HCBeta);
                }
                else
                {
                    filter.mesh = MeshSmoothing.HCFilter(filter.mesh, LimitMesh.LimitedTriangles, Noise.SmoothingTimes, Noise.HCAlpha, Noise.HCBeta);
                }
                break;
            }
        }

        Noise.LastUpdateTime = Time.time;
    }
Exemple #9
0
    void Start()
    {
        vertexConnection = GetComponent <VertexConnection>();
        meshSmoothing    = GetComponent <MeshSmoothing>();
        meshSmoothing.SetVertexConnection(vertexConnection);

        //mesh = meshFilter.sharedMesh;

        mesh = meshFilter.mesh;
        mesh = ApplyNormalNoise(mesh);

        switch (type)
        {
        case FilterType.Laplacian:
            mesh = meshSmoothing.LaplacianFilter(mesh, times);
            break;

        case FilterType.HC:
            mesh = meshSmoothing.HCFilter(mesh, times, hcAlpha, hcBeta);
            break;
        }
    }
Exemple #10
0
 public void HumphreySmooth()
 {
     filter.mesh = MeshSmoothing.HCFilter(filter.mesh, times);
 }
Exemple #11
0
 //function for the button to use
 public void LaplacianSmooth()
 {
     filter.mesh = MeshSmoothing.LaplacianFilter(filter.mesh, times);
 }
Exemple #12
0
 //function for the button to use
 public void LaplacianSmooth(Mesh currentMesh)
 {
     times       = (int)Times.value;
     filter.mesh = MeshSmoothing.LaplacianFilter(currentMesh, times);
 }