Example #1
0
        void Start()
        {
            var data = GPUVoxelizer.Voxelize(voxelizer, mesh, resolution, (type == MeshType.Volume));

            GetComponent <MeshFilter>().sharedMesh = VoxelMesh.Build(data.GetData(), data.UnitLength, useUV);
            data.Dispose();
        }
Example #2
0
    public void setupVoxelize()
    {
        cleanUpVoxel();

        treeObject.SetActive(false);

        voxelTree      = new GameObject();
        voxelTree.name = "Voxel Tree";
        voxelTree.transform.position   = SCData.rootPos * SCData.scaleFactor;
        voxelTree.transform.localScale = SCData.scaleFactor * Vector3.one;
        MeshRenderer renderer = voxelTree.AddComponent <MeshRenderer>();

        renderer.material       = new Material(Shader.Find("Standard"));
        renderer.material.color = SCData.branchColor;
        MeshFilter filter = voxelTree.AddComponent <MeshFilter>();

        filter.mesh = new Mesh();

        var data = GPUVoxelizer.Voxelize(
            voxelizer,
            treeObject.GetComponent <MeshFilter>().mesh,
            SCData.resolution,
            true);

        filter.sharedMesh = VoxelMesh.Build(data.GetData(), data.UnitLength, false);
        data.Dispose();
    }
    private void CreateVoxelizedMesh()
    {
        selectedObject = (Selection.activeObject != null) ? (GameObject)Selection.activeObject : null;

        Mesh       mesh;
        MeshFilter meshFilter = selectedObject.GetComponent <MeshFilter>();

        if (meshFilter != null)
        {
            mesh = meshFilter.sharedMesh;
        }
        else
        {
            mesh = selectedObject.GetComponent <SkinnedMeshRenderer>().sharedMesh;
        }

        List <Voxel_t> voxels;

        CPUVoxelizer.Voxelize(
            mesh,       // a target mesh
            resolution, // # of voxels for largest AABB bounds
            out voxels,
            out float unit
            );

        // build voxel cubes integrated mesh
        GameObject parent = new GameObject("Voxelized");

        parent.AddComponent <MeshRenderer>();
        parent.GetComponent <MeshFilter>().sharedMesh = VoxelMesh.Build(voxels.ToArray(), unit, useUv);
    }
Example #4
0
        private void CreatePreview()
        {
            GPUVoxelData data = GPUVoxelizer.Voxelize(shader, selectedMesh, resolution, false, false);

            previewMesh       = VoxelMesh.Build(data.GetData(), data.UnitLength, true);
            selectedVoxelInfo = BuildVoxInfo(data.GetData(), data.UnitLength);
            CreatePreviewPalette();
        }
        Mesh Voxelize(Mesh source)
        {
            List <Voxel_t> voxels;
            float          size;

            CPUVoxelizer.Voxelize(source, resolution, out voxels, out size, surfaceOnly);
            return(VoxelMesh.Build(voxels.ToArray(), size));
        }
Example #6
0
        public void Build()
        {
            mesh           = new VoxelMesh(generator.GetVoxels());
            mesh.Transform = this.Transform;
            mesh.Build();

            Renderer renderer = (Renderer)AddComponent <Renderer>(ComponentType.Renderer);

            renderer.mesh = mesh;
        }
Example #7
0
        void Start()
        {
            var filter = GetComponent <MeshFilter>();

            var data   = GPUVoxelizer.Voxelize(voxelizer, source, resolution);
            var voxels = data.GetData();

            filter.sharedMesh = VoxelMesh.Build(voxels, data.UnitLength);
            data.Dispose();
        }
Example #8
0
        void Start()
        {
            List <Voxel_t> voxels;
            float          unit;

            CPUVoxelizer.Voxelize(mesh, resolution, out voxels, out unit);

            var filter = GetComponent <MeshFilter>();

            filter.sharedMesh = VoxelMesh.Build(voxels.ToArray(), unit, useUV);
        }
Example #9
0
        public void Build()
        {
            Voxel[,,] voxels = new Voxel[gridSize.X, gridSize.Y, gridSize.Z];

            //Update Data
            foreach (ModelVoxel v in modelVoxels)
            {
                v.color     = modelColors.Where(x => x.name == v.colorName).FirstOrDefault().color;
                v.colorName = string.Empty;

                voxels[v.position.X, v.position.Y, v.position.Z] = new Voxel(new Vector3Int(v.position.X, v.position.Y, v.position.Z), v.color);
            }
            modelColors = null;

            mesh = new VoxelMesh(voxels);
            mesh.Build();
        }
Example #10
0
        public void InitMeshVoxelizer()
        {
            var mesh = SampleMesh();

            if (mesh == null)
            {
                return;
            }
            //defaultMesh = mesh;
            //defaultMaterial =this.spawnObj.GetComponent<MeshRenderer>().sharedMaterial;

            Bounds fireBounds  = this.mediator.bounds;
            Bounds spawnBounds = this.spawnObj.GetComponent <Renderer>().bounds;

            //Debug.Log("box min: " + this.mediator.bounds.min);
            //Debug.Log("box center: " + this.mediator.bounds.center);
            //Debug.Log("box size: " + this.mediator.bounds.size);
            //Debug.Log("spawn box center: " + spawnBounds.center);
            //Debug.Log("spawn box min: " + spawnBounds.min);
            //Debug.Log("spawn box max: " + spawnBounds.max);
            //Debug.Log("spawn box extends: " + spawnBounds.extents);
            //Debug.Log("spawn box size: " + spawnBounds.size);
            //Debug.Log("spawn mesh box center: " + mesh.bounds.center);
            //Debug.Log("spawn mesh box size: " + mesh.bounds.size);

            this.SetObjectCenter();
            this.SetObjectRadius();

            numOfVoxels = Mathf.ClosestPowerOfTwo(this.mediator.fluidSimulator3D.m_width);

            this.gpuVoxelizer = new GPUVoxelizer();
            this.gpuVoxelizer.InitVoxelization(mesh, this.mediator.bounds, numOfVoxels);
            this.voxelsInBounds = gpuVoxelizer.Voxelize(voxelizer, mesh, this.spawnObj.transform, true);

            this.GetComponent <MeshFilter>().sharedMesh = VoxelMesh.Build(this.voxelsInBounds.GetData(), this.voxelsInBounds.UnitLength, true);

            //Debug.LogFormat("!!!!!!!!!!!!!!!!!!!!! Num of triangles: {0}", mesh.triangles.Length);
        }