Exemple #1
0
    public void CreateScalp(Vector3[,] grid, int NI, int NJ)
    {
        Debug.Log("Creating Scalp");
        surface = GameObject.Find("ScalpSurface");
        GameObject head = GameObject.Find("Head");
        surface.AddComponent<MeshFilter>();
        surface.AddComponent<MeshCollider>();
        mySurface = new BSplineSurface();
        mySurface.setControlGrid(NI-1, NJ-1);
        mySurface.Init();
        mySurface.InitRandomGrid();
        mySurface.InitGrid(grid);
        mySurface.Calculate();
        resultGrid = mySurface.outputGrid;
        controlGrid = mySurface.controlGrid;
        generateMesh();
        updateMesh();
        MeshRenderer renderer = surface.AddComponent<MeshRenderer>();
        renderer.material = GameObject.Find("Tracker").GetComponent<MeshRenderer>().material;
        surface.transform.parent = GameObject.Find("Head").transform;

        GameObject underSurface = GameObject.Instantiate(surface);
        Destroy(underSurface.GetComponent<ScalpGenerator>());
        underSurface.transform.position = surface.transform.position;
        underSurface.transform.rotation = surface.transform.rotation;
        underSurface.transform.parent = surface.transform.parent;
        MeshFilter filter = underSurface.GetComponent<MeshFilter>();
        if (filter != null)
        {
            Mesh mesh = filter.mesh;

            Vector3[] normals = mesh.normals;
            for (int i = 0; i < normals.Length; i++)
                normals[i] = -normals[i];
            mesh.normals = normals;

            for (int m = 0; m < mesh.subMeshCount; m++)
            {
                int[] triangles = mesh.GetTriangles(m);
                for (int i = 0; i < triangles.Length; i += 3)
                {
                    int temp = triangles[i + 0];
                    triangles[i + 0] = triangles[i + 1];
                    triangles[i + 1] = temp;
                }
                mesh.SetTriangles(triangles, m);
            }
        }
        //drawn = true;
    }
Exemple #2
0
 public void CreateScalp(Vector3[,] grid, int NI, int NJ)
 {
     Debug.Log("Creating Scalp");
     surface = GameObject.Find("ScalpSurface");
     surface.AddComponent<MeshFilter>();
     surface.AddComponent<MeshCollider>();
     mySurface = new BSplineSurface();
     mySurface.setControlGrid(NI, NJ);
     mySurface.Init();
     //mySurface.InitRandomGrid();
     mySurface.InitGrid(grid);
     mySurface.Calculate();
     resultGrid = mySurface.outputGrid;
     controlGrid = mySurface.controlGrid;
     generateMesh();
     updateMesh();
     drawn = true;
 }