Пример #1
0
        public override void CreateMesh()
        {
            var box    = new Net3dBool.Solid(Net3dBool.DefaultCoordinates.DEFAULT_BOX_VERTICES, Net3dBool.DefaultCoordinates.DEFAULT_BOX_COORDINATES, getColorArray(Net3dBool.DefaultCoordinates.DEFAULT_BOX_VERTICES.Length, Color.Red));
            var sphere = new Net3dBool.Solid(Net3dBool.DefaultCoordinates.DEFAULT_SPHERE_VERTICES, Net3dBool.DefaultCoordinates.DEFAULT_SPHERE_COORDINATES, getColorArray(Net3dBool.DefaultCoordinates.DEFAULT_SPHERE_VERTICES.Length, Color.Red));

            sphere.scale(0.68, 0.68, 0.68);

            var cylinder1 = new Net3dBool.Solid(Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_VERTICES, Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_COORDINATES, getColorArray(Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_VERTICES.Length, Color.Green));

            cylinder1.scale(0.38, 1, 0.38);

            var cylinder2 = new Net3dBool.Solid(Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_VERTICES, Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_COORDINATES, getColorArray(Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_VERTICES.Length, Color.Green));

            cylinder2.scale(0.38, 1, 0.38);
            cylinder2.rotate(Math.PI / 2, 0);

            var cylinder3 = new Net3dBool.Solid(Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_VERTICES, Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_COORDINATES, getColorArray(Net3dBool.DefaultCoordinates.DEFAULT_CYLINDER_VERTICES.Length, Color.Green));

            cylinder3.scale(0.38, 1, 0.38);
            cylinder3.rotate(Math.PI / 2, 0);
            cylinder3.rotate(0, Math.PI / 2);

            //--

            //mesh = s;

            //--

//            var modeller = new Net3dBool.BooleanModeller(b, c1);
//            mesh = modeller.getDifference();

            //--

            var modeller = new Net3dBool.BooleanModeller(box, sphere);
            var tmp      = modeller.getIntersection();

            modeller = new Net3dBool.BooleanModeller(tmp, cylinder1);
            tmp      = modeller.getDifference();

            modeller = new Net3dBool.BooleanModeller(tmp, cylinder2);
            tmp      = modeller.getDifference();

            modeller = new Net3dBool.BooleanModeller(tmp, cylinder3);
            tmp      = modeller.getDifference();

            mesh = tmp;
        }