2

Processingで一種の画像モーフィングツールを作りたいと思っています。このリンクで見ることができるものと同様:

https://giphy.com/gifs/painting-morph-oil-c8ygOpL64UDuw

これを達成するための最初のステップは、ピクセルの 2 次元グリッドを構築することでした。ピクセルは色で塗りつぶされます。塗りつぶしの色は、get(); を使用して画像 (PImage img1;) から色を読み取ることによって作成されます。関数。これが、ピクセルで画像を再作成する方法です。2 番目のステップでは、lerp(); を使用すると考えました。それぞれのピクセルに 2 番目の画像の色を与える関数 (PImage img2;) - これにより、目的のモーフ効果が得られると思いました。しかし、私は間違っていました!すべてが機能しますが、効果は 2 つの画像間でフェードインが発生することだけです。そして、モーフィングはありません。このモーフ効果の間、ピクセルは正確にどうなりますか? Processingでどのように再作成できますか?

float pixel;
float pixelsize;
PImage img1;
PImage img2;
float counter;

void setup() {
  size(1080, 1080);
  pixel = 100;
  pixelsize = width/pixel;
  noStroke();
  img1 = loadImage("0.jpg");
  img2 = loadImage("1.jpg");
  counter = 0;
}


void draw() {
  background(255);

  for (int y = 0; y < pixel; y++) {
    for (int x = 0; x < pixel; x++) {
      color c1 = img1.get(int(pixelsize*x), int(pixelsize*y));
      color c2 = img2.get(int(pixelsize*x), int(pixelsize*y));

      color from = c1;
      color to = c2;
      color interA = lerpColor(from, to, counter);

      pushMatrix();
      translate(pixelsize*x, pixelsize*y);
      fill(interA);
      rect(0, 0, pixelsize, pixelsize);
      popMatrix();
    }
  }
  counter= counter + 0.01;
}
4

1 に答える 1