質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

木の複製のやり方がわかりません。

takutan2004
takutan2004

総合スコア1

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

1回答

1グッド

1クリップ

311閲覧

投稿2022/06/30 07:04

Processingでp5.jsで森を作りたいと考えていますが、木1本のコードは動画などを参考にしながら作ることはできたのですが、どのようにして木を増やせばいいのかわかりません。どこの値などを追加したら増やせますか?
木の動画
https://www.youtube.com/watch?v=tdbaIHjCKtA

function setup() { createCanvas(windowWidth, windowHeight, WEBGL); angleMode(DEGREES); noLoop(); } function draw() { background(0, 125, 255) // randomSeed(1) translate(-200, 200, 0);//position rotateY(frameCount); branch(100); // Size } function branch(len) { strokeWeight(map(len, 10, 100, 0.5, 5)); stroke(70, 40, 20); line(0, 0, 0, 0, -len - 2, 0) translate(0, -len, 0) //translate(100, -len, 0) if (len > 10) { for (var i = 0; i < 3; i++) { rotateY(random(100, 140)); push() rotateZ(random(20, 50)); branch(len * 0.7); pop() } } else { var r = 80 + random(-20, 20) var g = 120 + random(-20, 20) var b = 40 + random(-20, 20) fill(r, g, b, 200) noStroke() translate(5, 0, 0); rotateZ(90); beginShape(); for (var i = 45; i < 135; i++) { var rad = 7; var x = rad * cos(i); var y = rad * sin (i); vertex(x, y); } for (var i = 135; i > 45; i--){ var rad = 7; var x = rad * cos(i); var y = rad * sin(-1) + 10; vertex(x, y); } endShape(CLOSE); } }
TN8001👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

木1本のコードは動画などを参考にしながら作ることはできたのですが、どのようにして木を増やせばいいのかわかりません。どこの値などを追加したら増やせますか?

branchで木が1本生えるのですから、位置をずらしてbranchを呼ぶだけではないですか?
reference | translate()

森を作りたい

数本描いただけですっごい重いです...

js

1function setup() { 2 createCanvas(windowWidth, windowHeight, WEBGL); 3 angleMode(DEGREES); 4 //noLoop(); 5} 6 7function draw() { 8 background(0, 125, 255); 9 randomSeed(1); 10 11 orbitControl(); // マウスで回転・移動・拡縮 12 13 rotateX(-15); // ちょっと斜め上から見たように 14 rotateY(frameCount); // 自動で回転 15 16 for (let x = -200; x <= 200; x += 200) { 17 push(); 18 translate(x, 0, 0); // 木の位置を指定 19 branch(100); 20 pop(); 21 } 22 23 // 地面 24 noStroke(); 25 fill(0, 255, 0); 26 box(windowWidth, 0, windowHeight); 27} 28 29function branch(len) { 30 strokeWeight(map(len, 10, 100, 0.5, 5)); 31 stroke(70, 40, 20); 32 33 line(0, 0, 0, 0, -len - 2, 0); 34 35 translate(0, -len, 0); 36 37 if (len > 10) { 38 for (let i = 0; i < 3; i++) { 39 rotateY(random(100, 140)); 40 41 push(); 42 43 rotateZ(random(20, 50)); 44 branch(len * 0.7); 45 46 pop(); 47 } 48 } else { 49 let r = 80 + random(-20, 20); 50 let g = 120 + random(-20, 20); 51 let b = 40 + random(-20, 20); 52 53 fill(r, g, b, 200); 54 noStroke(); 55 56 translate(5, 0, 0); 57 rotateZ(90); 58 59 beginShape(); 60 for (let i = 45; i < 135; i++) { 61 let rad = 7; 62 let x = rad * cos(i); 63 let y = rad * sin (i); 64 vertex(x, y); 65 } 66 for (let i = 135; i > 45; i--) { 67 let rad = 7; 68 let x = rad * cos(i); 69 let y = rad * sin(-1) + 10; 70 vertex(x, y); 71 } 72 endShape(CLOSE); 73 } 74}

投稿2022/06/30 11:21

TN8001

総合スコア8053

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

takutan2004

2022/07/03 10:42

ありがとうございます。どうして重くなるんですかね?単純に処理が多くて重くなってるんでしょうか?
TN8001

2022/07/03 11:54

> どうして重くなるんですかね?単純に処理が多くて重くなってるんでしょうか? randomSeed(1)しているように、本来は1回計算すればいい処理を毎フレームしているので^^; PShapeのようなものがあれば、setupで1回だけ作ってdrawではそれを表示するだけにできる(それで早くなるかは未確認)のですが、p5.jsにPShapeに当たるものがないんですよね。。。 どうするのがいいんですかね??(p5 Geometryとかを使う?だいぶ話が変わってきそう) わたしはp5.jsからjavaへの移植はかなりやっているのですが、逆はほとんどないのでよくわかりません^^;

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。