Estrarre RGB values senza img sampler

Allorai, si, in effetti tra uno script e l’altro ho utilizzato stessi nomi per cose diverse, e quindi il codice non è più inter-compatibile.

Se noti, nel primo script faccio dei cicli for dove uso variabili “x” e “y”. Nel secondo script uso gli stessi nomi ma per cose diverse.


Questo fa un po tutto:
c#_bmp_path_mesh_evaluate.gh (5,4 KB)

 private void RunScript(string path, Point3d pt, ref object M, ref object W, ref object H, ref object C)
  {
    if(!System.IO.File.Exists(path)){
      this.Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Invalid file path!");
      return;
    }
    System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(path);
    if(bmp == null){
      this.Component.AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Bitmap file not valid!");
      return;
    }

    int w = bmp.Width;
    int h = bmp.Height;
    W = w; // Outputting image X size
    H = h; // Outputting image Y size


    System.Drawing.Color[] colors = new System.Drawing.Color[w * h];
    int i = 0;
    for(int y = h - 1;y > -1;y--){
      for(int x = 0;x < w;x++){
        colors[i] = bmp.GetPixel(x, y);
        i++;
      }
    }
    Mesh m = Mesh.CreateFromPlane(Rhino.Geometry.Plane.WorldXY, new Interval(0, w - 1), new Interval(0, h - 1), w - 1, h - 1);
    m.VertexColors.AppendColors(colors);
    M = m;


    int u = (int) Math.Round(pt.X * (w - 1), 0);
    int v = (int) Math.Round((1 - pt.Y) * (h - 1), 0);
    C = bmp.GetPixel(u, v);
  }

In un’altro thread avevo messo un paio di esempi semplici di script c#.
Vedi qua e i post successivi.
E questo è un esempio di come riproporre il “Game of Life” in c#.