75     using System.Text.RegularExpressions;
   109             Debug.Log(
" ori: "+ _origin);
   114     public float getVal(
int x, 
int y, 
int z) {
   119             return gradient[x,y,z];
   126     public void ReadFile(
string file_name, Vector3 offset){
   135             HttpWebRequest request =(HttpWebRequest) WebRequest.Create(file_name);
   137             request.Credentials = CredentialCache.DefaultCredentials;
   139             HttpWebResponse response = (HttpWebResponse)request.GetResponse ();
   141             Stream dataStream = response.GetResponseStream ();
   143             sr = 
new StreamReader (dataStream);
   146             FileInfo file = 
new FileInfo(file_name);
   147             sr = file.OpenText();
   149                 } 
catch (Exception e) {
   151                         Debug.Log(e.ToString());
   163     public void ReadFile(TextReader sr, Vector3 offset) {
   164         DateTime temps = DateTime.Now;
   166         while (line[0] == 
'#')line = sr.ReadLine(); 
   167         string[] size = line.Split(
' ');
   170         X = 
int.Parse(size[5]);
   171         Y = 
int.Parse(size[6]);
   172         Z = 
int.Parse(size[7]);
   175         DateTime temps1 = DateTime.Now;
   176         Debug.Log(
" taille de la grille : "+ X +
" "+ Y +
" "+ Z);
   178         line = sr.ReadLine(); 
   179         string[] origs = line.Split(
' ');
   181         float oX = 
float.Parse(origs[1]);
   182         float oY = 
float.Parse(origs[2]);
   183         float oZ = 
float.Parse(origs[3]);
   185         DateTime temps2 = DateTime.Now;
   189         line = sr.ReadLine();
   190         string[] delt = line.Split(
' ');
   193         dX = 
float.Parse(delt[1]);
   194         line = sr.ReadLine();
   195         delt= line.Split(
' ');
   198         dY = 
float.Parse(delt[2]);
   199         line = sr.ReadLine();
   200         delt= line.Split(
' ');
   203         dZ = 
float.Parse(delt[3]);
   205         DateTime temps3 = DateTime.Now;
   207         line = sr.ReadLine();
   208         line = sr.ReadLine();
   210         DateTime temps4 = DateTime.Now;
   221         _dim[0] = 
X; _dim[1] = 
Y; _dim[2] = 
Z;
   223         _grid = 
new float[
X,
Y,
Z];
   235         _delta = 
new Vector3();
   239         Debug.Log(
"ReadDX :: Delta DX - " + _delta);
   241         _origin = 
new Vector3();
   242         _origin.x = oX - offset.x;
   243         _origin.y = oY + offset.y;
   244         _origin.z = oZ + offset.z;
   245         Debug.Log(
"ReadDX :: Origin DX - " + _origin);
   246         Debug.Log(
"ReadDX :: Offset DX - " + offset);
   250         string[] vals=  line.Split(
' ');
   257         for(
int i=0; i<
X; i++){
   258             for(
int j=0; j<
Y; j++){
   259                 for(
int k=0; k<
Z; k++){
   262                         if (test_compteur<(X*Y*Z)-1){
   263                             val = 
float.Parse(vals[l]);
   272                         line = sr.ReadLine();
   274                         vals = line.Split(
' ');
   275                         val = 
float.Parse(vals[0]);
   293         DateTime temps5 = DateTime.Now;
   294         Debug.Log (
"ReadDX :: taille - " +(temps1-temps));
   295         Debug.Log(
"ReadDX :: lecture origine - " + (temps2 -temps1));
   296         Debug.Log(
"ReadDX :: lecture de delta - " + (temps3 -temps2));
   297         Debug.Log(
"ReadDX :: ligne vide - "+(temps4 -temps3));
   298         Debug.Log(
"ReadDX :: grille lu - " + (temps5-temps4));
   310         gradient = 
new Vector3[
X,
Y,
Z];
   312         for(
int i=0; i<
X; i++){
   313             for(
int j=0; j<
Y; j++){
   314                 for(
int k=0; k<
Z; k++){
   315                     if (i==0 || j==0 || k==0 || i ==(X-1) || j ==(Y-1) || k == (Z-1)){
   316                         gradient[i,j,k]=
new Vector3(0f,0f,0f);
   322                     gradient[i,j,k].x = ((val - valprec) + (valnext - val))/(_delta[0]*1.0f);
   329                     gradient[i,j,k].y = ((val - valprec) + (valnext - val))/(_delta[1]*1.0f);
   335                     gradient[i,j,k].z = ((val - valprec) + (valnext - val))/(_delta[2]*1.0f);               
   337                     gradient[i,j,k] = -(gradient[i,j,k]*scale);
   349         Vector3[] vertices = m.vertices;
   350         for(
int i=0; i < vertices.Length; i++)
   351             vertices[i].x = -vertices[i].x;
   353         int[] triangles = m.triangles;
   355         for(
int tri=0; tri < triangles.Length; tri=tri+3) {
   356             int tmp = triangles[tri];
   357             triangles[tri] = triangles[tri+2];
   358             triangles[tri+2] = tmp;
   361         Color[] colors = m.colors;
   363         m.vertices = vertices;
   364         m.triangles = triangles;
   366         m.RecalculateNormals();
   369     public void isoSurface(
float threshold, Color color, 
int isPos, 
bool transparency=
false){
   372         points = 
new Vector4[ (
X) * (Y) * (
Z)];
   373         Color[] colors = 
new Color[(
X) * (Y) * (
Z)];
   375         for (
int j = 0; j < 
Y; j++) {
   376             for (
int i = 0; i < 
Z; i++) {
   377                 for (
int k = 0; k < 
X; k++) {
   383                         points[j*(
Z)*(X) + i*(
X) + k] = 
new Vector4 (k, j, i , _grid[k,j,i]);
   384                         colors[j*(
Z)*(X) + i*(
X) + k] = color;
   417         Debug.Log(
"Entering :: before marching cubes instance");
   448         GC.GetTotalMemory(
true);
   450         Debug.Log(
"Exiting :: finished marching cubes");
   451         GameObject[] iso_pos = null;
   459         Transform isoparent = GameObject.Find(
"ElectIsoManager").transform;
   460         foreach(GameObject iso 
in iso_pos)
   462             iso.transform.parent = isoparent;
   463             Mesh mesh_pos = iso.GetComponent<MeshFilter>().mesh;
   471                 iso.GetComponent<Renderer>().material.shader = Shader.Find(
"Transparent/Zsorted");
   475                 iso.GetComponent<Renderer>().material.shader = Shader.Find(
"Diffuse");
   479             iso.GetComponent<Renderer>().material.SetColor(
"_Color", color);
 static void CreateSurfaceObjects(List< Mesh > meshes, int isPos)
void ReadFile(string file_name)
GameObject[] getSurfaces()
Vector3 getGradient(int x, int y, int z)
GameObject[] getSurfacesPos()
GameObject[] getSurfacesNeg()
float getVal(int x, int y, int z)
void ReadFile(TextReader sr, Vector3 offset)
void isoSurface(float threshold, Color color, int isPos, bool transparency=false)
void RightHandedToLeftHanded(Mesh m)
static SurfaceManager getSurfaceManager()
void ReadFile(string file_name, Vector3 offset)