processingに関する質問です。
いま、パラパラ漫画のようなアニメーションをprocessingで作っています。
①クリックすると、ナンバリングされた次の画像に移動(同時に音がなる)する
②全部終わると最初に戻る
と言うようなことがしたいです。
いまのところ画像が139枚あって実験しているのですが、OutofMemoryのエラーが出ました。
60枚くらいならできたのですが、メモリが足りないのだとすると、これ以上どうしようもないのでしょうか?
ゆくゆくは3000枚位の画像でやりたいなと思っていたのですが…
どのようにプログラムを変更すればいいでしょうか?
よろしくおねがいします。
int x=139; // フレーム数
import ddf.minim.*;
Minim mini;
AudioPlayer song1, song2;
String fileName; //ファイル名
int numFrames = 139; //アニメーションのフレーム数
PImage[] images = new PImage[numFrames]; //アニメーション画像の配列
int kaisu = 0;
void setup() {
mini = new Minim( this );
song2 =mini.loadFile( “poku.wav” );
song1 =mini.loadFile( “cheeen.wav” );
size(1920, 1080);
frameRate(139);
// 画像の読み込み
for (int i = 0; i < images.length; i++) {
images[i] = loadImage("new00" + nf(i, 3) + ".jpg"); // 2のところ、3けた枚なら3にする
}
}
void draw() {
}
void mousePressed() {
kaisu = kaisu + 1;
int kaisu2 = kaisu % x;
image(images[kaisu2], width/4, height/4, width/2, height/2);
if(kaisu%10==0){
song1.play( 0 );
}else{
song2.play( 0 );
}
//if(kaisu%x==26){
//song1.play( 0 );
//}else{
// song2.play( 0 );
//}
}
試してみると、image()で表示する度にメモリが積み重なっていきました。
Processing側の不具合のような気がします。
なにか代案がないかとimage()の代わりにbackground()で表示してみるとメモリの消費は増えませんでしたが、表示位置/サイズの調整が出来ません。
PGraphicsで仮想画面(?)を作ってやってみましたがやはりPGraphics.image()で同様にメモリを喰っていきます。
私では簡単には対策を思いつきません。Processingのフォーラム https://discourse.processing.org/ で聞いてみてもいい事態だと思います。
別件ですが、
frameRate(139);
これはどう頑張っても物理的にディスプレイが追従しないと思います。60か、一部のディスプレイで120までいけるかも知れませんが。
①クリックすると、ナンバリングされた次の画像に移動(同時に音がなる)する
②全部終わると最初に戻る
と言うようなことを、他のプログラムの書き方でやることはできないでしょうか?
例えばpimageで直接全ての画像を読み込むのではなくて、ひとつひとつリンクで読み込むようなことはできないのでしょうか?
試してみると、image()で表示する度にメモリが積み重なっていきました。
Processing側の不具合のような気がします。
なにか代案がないかとimage()の代わりにbackground()で表示してみるとメモリの消費は増えませんでしたが、表示位置/サイズの調整が出来ません。
PGraphicsで仮想画面(?)を作ってやってみましたがやはりPGraphics.image()で同様にメモリを喰っていきます。
私では簡単には対策を思いつきません。Processingのフォーラム https://discourse.processing.org/ で聞いてみてもいい事態だと思います。
別件ですが、
frameRate(139);
これはどう頑張っても物理的にディスプレイが追従しないと思います。60か、一部のディスプレイで120までいけるかも知れませんが。
①クリックすると、ナンバリングされた次の画像に移動(同時に音がなる)する
②全部終わると最初に戻る
と言うようなことを、他のプログラムの書き方でやることはできないでしょうか?
例えばpimageで直接全ての画像を読み込むのではなくて、ひとつひとつリンクで読み込むようなことはできないのでしょうか?