GenerateMesh() публичный Метод

public GenerateMesh ( Chunk, chunk ) : void
chunk Chunk,
Результат void
Пример #1
0
    private void OnValidateTest()
    {
        var meshFilter = GetComponent <MeshFilter>();

        if (meshFilter.sharedMesh == null)
        {
            meshFilter.sharedMesh = new Mesh();
        }

        if (generator == null)
        {
            generator = new MarchingCubesMeshGenerator();
        }

        var mesh = meshFilter.sharedMesh;

        var sdfTree = sdfHierarchy.CreateSDFTree();

        Bounds bounds = sdfTree.GetBounds();

        bounds.Expand(2 * step);
        //bounds.Encapsulate(globalBounds);
        bounds.Expand(expandRadius);
        lastBounds = bounds;
        generator.GenerateMesh(mesh, sdfTree.GetSDF, step, bounds);
    }
Пример #2
0
    private void Generate(Vector3Int cell)
    {
        if (chunks.ContainsKey(cell))
        {
            return;
        }

        var gameObject = Instantiate(chunk_prefab, parent);

        gameObject.name += " - " + cell;
        gameObject.transform.localPosition = cell;
        gameObject.transform.localScale    = Vector3.one;

        var mesh = new Mesh();

        var meshFilter = gameObject.GetComponent <MeshFilter>();

        meshFilter.mesh = mesh;

        var bounds = new Bounds(cell + Vector3.one * 0.5f, Vector3.one);

        generator.GenerateMesh(mesh, GetSdf, step, bounds, cell);

        if (false)
        {
            var light = Instantiate(light_prefab);

            var randomPosition = new Vector3(Random.value, Random.value, Random.value);

            var normal = getNormal(randomPosition);
            var field  = GetSdf(randomPosition);
            randomPosition += normal * (-field + 0.025f);

            light.transform.position = cell + randomPosition;

            light.transform.SetParent(gameObject.transform);

            var material = light.transform.Find("Sphere").GetComponent <MeshRenderer>().material;
            var color    = Random.ColorHSV(0, 1, 1, 1, 1, 1);
            material.SetColor("_EmissionColor", color * 2f);
            light.GetComponent <Light>().color = color;
        }

        chunks.Add(cell, gameObject);
    }