zyoryzyory diary

インターネットのあれこれをつぶやきます。

ブログを移行しました「Yoshidayo diary」

こんにちは!

おや、どうやらやっと目が覚めたようです(去年の9月からブログの更新がストップしてしまっていました)

 

ということで、心機一転「Yoshidayo diary」を作ったので、興味がある方はチェックしてみてください。

内容はUnityのチュートリアルを要約したり、オリジナルゲームを作る過程を紹介したりできればな〜と思っております。

 

www.yoshidayo.com

 

ゲームを作りたい人、僕と一緒に成長しませんか?(^o^)

 

こちらのブログは、Web系の知識をシェアするために継続していく予定です。

よろしくお願いいたします!

Processing vol13

こんばんは~!

パーリンノイズを自分で実装してみようと考えていました。しかし、関連サイトをみてもまだ意味がわかりませんでした。

手元の書籍でパーリンノイズについてまとまっている情報を確認することは出来たのですが「改良パーリンノイズ」というネットの記事を読んで困惑…。
まだまだ自分にはレベルが高すぎたようです(;´д`)トホホ… いつか理解できるようになりたいですね。

ということでパーリンノイズについてわかっていることを列挙すると…

  • Ken Perlinさんが開発した強力なアルゴリズム
  • 雲や炎を描画する際に特に有効
  • 自然な乱数を生み出せる仕組みがある
  • processingで実装されているnouse()は0.0-1.0の乱数を返す
  • random()との違いは引数に持たせる値が振れ幅ではないこと。
  • noise()は時間を引数に取る。

ということです。もっと深く理解できるよう頑張ります:D

f:id:zyoryzyory:20170918030131p:plain

https://processing.org/examples/noise1d.html
float xoff = 0.0;
//xの増加度合い
float xincrement = 0.01;

void setup() {
  size(640, 360);
  background(0);
  noStroke();
}

void draw() {
  //fill(rgb, alpha)
  fill(0, 10);
  //1度の描写ずつリフレッシュするためにrectで上書き
  rect(0,0,width,height);

  //xoffを基準にパーリンノイズの値がnに格納
  //パーリンノイズはオーガニック的で、前後の値を考慮してより自然な値を返すもの
  //xoffの値が増加すればするほど自由に動ける範囲が広くなる?
  float n = noise(xoff)*width;

  //1秒間に60回xoffを増加させていく
  xoff += xincrement;
  
  //パーリンノイズの値に基いてx座標を操作
  fill(200);
  ellipse(n,height/2, 64, 64);
}

Processing vol12

draw系やってみました!
徐々にですが「これができるんだったら、あれもできるかな?」と考えられるようになってきました。
とても楽しいです、どんどん続けていきますよ〜!

f:id:zyoryzyory:20170915003803p:plain

//https://processing.org/examples/continuouslines.html

void setup() {
  size(640, 360);
  background(102);
}

void draw() {
  stroke(255);
  if (mousePressed == true) {
    //currentとpreviousでverticalとhorizonの距離を取ってlineで結んでいるんだ
    line(mouseX, mouseY, pmouseX, pmouseY);
  }
}

f:id:zyoryzyory:20170915003822p:plain

//https://processing.org/examples/pattern.html

void setup() {
  size(640, 360);
  background(102);
}

void draw() {
  variableEllipse(mouseX, mouseY, pmouseX, pmouseY);
} 

//currentとpreviousの距離によってellipseのサイズが変わる関数
//frameRateはdefaultで60だからビューンと早くmouseを動かせば
//それだけ1描画あたりの距離が広がる
void variableEllipse(int x, int y, int px, int py) {
  float speed = abs(x-px) + abs(y-py);
  stroke(speed);
  ellipse(x, y, speed, speed);
}