04-05 3D描画

学習日

2025年7月8日

名前

樋口桜大

createCanvas関数の第3引数に定数WEBGLを指定することで、3D関連の関数が使用できるようになる。

createCanvas(400, 400, WEBGL);

3Dオブジェクトを操作する主な関数として以下がある。各関数の詳細な引数は省略した。

3D関数機能
box( w, [h] )幅w、高さhの直方体。hを省略すれば立方体
shere( r )半径rの球体
torus( r )半径rの円環面
toranslate( x, y, [z] )座標原点の移動
rotateX( angle )x軸回りにangleラジアン回転
rotateY( angle )y軸回りにangleラジアン回転

自分で作った図形(コードと画像)

✅ 例題 4-5-1

立方体を、frameCount を使って回転させる。
rotateX() と rotateY() を使って、立方体をなめらかに動かそう。

コード

function setup() {
  createCanvas(400, 400, WEBGL);
}

function draw() {
  background(200);
  normalMaterial()
  push();
  translate(0, 0);
  rotateX(frameCount * 0.01);
  rotateY(frameCount * 0.01);
  box(100);
  pop();
}

📷 実行結果

✅ 練習問題 4-5-1

2つの立方体を、左右に分けて配置し、
それぞれ別々の回転をするようにしなさい。

たとえば・・・

  • 左の立方体:ゆっくり時計回りに回転(frameCount * 0.01
  • 右の立方体:速く反対向きに回転(-frameCount * 0.02) のようにやってみよう! 

コード

function setup() {
  createCanvas(400, 400, WEBGL);
}

function draw() {
  background(200);
  normalMaterial()
  push();
  translate(-100, 0);
  rotateX(frameCount * 0.01);
  rotateY(frameCount * 0.01);
  box(100);
  pop();
  
  normalMaterial()
  push();
  translate(100, 0);
  rotateX(-frameCount * 0.02);
  rotateY(-frameCount * 0.02);
  box(100);
  pop();
}

📷 実行結果

まとめ・感想

・回転の速さを上げるときに、どのくらいの数を増やせば良いのかを考えることができた。

・図形を逆回転させるときに、frameCountに「ー(マイナス)」をつけるという発想は自分になかったから、もっと文章の意味を理解したいと思った。

・座標を真ん中が、(0,0)になっていることを忘れてしまったから、次からは凡ミスをなくしたい。

コメントする