まゆたまガジェット開発逆引き辞典

電子工作やプログラミングのHowtoを逆引き形式で掲載しています。作りたいモノを決めて学んでいくスタイル。プログラマではないので、コードの汚さはお許しを。参照していないものに関しては、コピペ改変まったく問いません

Processingで立方体をランダムな位置&ランダムな方向に回転させる

イラストの背景用にまた自動生成グラフィックを使ってしまったのでメモ。
楽なんですもの・・・

下記の画像のように、ランダムな方向を向いた立方体をランダムな位置に配置しました。
マウスを押すと新たに描画してくれます。
好きな画像が生成されるまで、マウスをクリックします。

f:id:prince9:20190121052624p:plain

Processingは3Dで描画した場合はPDF書き出しができないので(私のやり方が悪いのかも)、PNGで書き出してフォトショやイラレでテクスチャを貼ります。
Processing上でテクスチャを貼っても良いのですが、あまりキレイじゃない気がするので、そこは妥協しました。


 float rotX, rotY, rotZ;
  float boxsize;
  float posx, posy, posz;  

void setup(){
size(600, 600, P3D);
  smooth();
  noLoop();
  
}
void draw(){
  background(255,255,255);
  translate(width/2, height/2, 200);
  

   //20個描く
  for(int i=0; i<20; i++){
    boxcity();
  }
}
 
void boxcity(){
boxsize = 30; //奥行きで大きさが決まるので、立方体のサイズは一定でいいかも

//以下、立方体の位置
    posx = random(-100, 100);  
    posy = random(-100, 100);
    posz = random(-100, 100);


    
    fill(0,0,0);
  stroke(255);
 strokeWeight(2);
    pushMatrix();
    translate(posx, posy, posz); 
    box(boxsize, boxsize, boxsize);
    popMatrix();
    
    //立方体の回転角度
    rotX = random(10, 340);
    rotY = random(10, 340);
    rotZ = random(10, 340);
    
    rotateX(radians(rotX));
        rotateY(radians(rotY));
            rotateZ(radians(rotZ));


}

  
//ボタンを押すとランダムに描画
void mousePressed() {
      redraw();// ボタンが押されたときだけ実行
}

なお立方体の描画に関して、下記を参照させて頂きました。

http://solo-p5.tumblr.com/post/69249477759/p3dとboxとarrayとjavajsモードの違いとtips
solo-p5.tumblr.com