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)