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; }
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; }