Example #1
0
    void TestField()
    {
        int s = 3;
        VolumeBuffer <bool> test = new VolumeBuffer <bool> (new Cubic <int> (s, s, s));

        test.Write(new Int3(0, 0, 0), true);
        test.Write(new Int3(1, 0, 0), true);
        test.Write(new Int3(0, 1, 0), true);
        test.Write(new Int3(0, 0, 1), true);
        test.Write(new Int3(0, 0, 2), true);

        test.Write(new Int3(2, 2, 2), true);
        //test.Write (new Int3 (1, 2, 2), true);

        var mesh = VolumeTetrahedraSurfacer.GenerateSurfaceVolume(test,
                                                                  (t => (t ? 1.0f : -3.0f)),
                                                                  GetRelativeCameraPos());

        SetMeshFromVolume(mesh);
        Debug.Log("Done meshing.");
    }
Example #2
0
    void FromDynamicField()
    {
        var df = this.GetComponentInParent <DynamicFieldModel> ();

        df.EnsureSetup();
        var cells = df.FieldsCells;

        System.Func <DynamicFieldModel.DynFieldCell, float> f = ((cl) => {
            bool isValid = true;            // ( cl.VoxelIndex.X > (cells.Size.X / 2) );
            float sign = (cl.Direction.magnitude - IsosurfaceRootValue);
            return(isValid ? sign : -Mathf.Sign(sign));

            //bool isOdd = ((cl.VoxelIndex.X % 2) == 1);
            //return (isOdd ? 1.0f : -1.0f);
        });

        var mesh = VolumeTetrahedraSurfacer.GenerateSurfaceVolume(cells,
                                                                  (t => f(t)),// t.Direction.magnitude - IsosurfaceRootValue),
                                                                  GetRelativeCameraPos(), df);

        SetMeshFromVolume(mesh);
    }