モデリング

3次元図形を作っていきます.

beginShape,endShape関数

3D空間は前回の続きで,以下のように設定します.

changecam.png
void setup()
{
  size(640, 480, P3D);
}

void draw()
{
  background(127, 127, 127);
  camera(100, -100, 100, 0, 0, 0, 0, 1, 0);
  stroke(255, 0, 0);
  line(0, 0, 0, 100, 0, 0);
  stroke(0, 255, 0);
  line(0, 0, 0, 0, 100, 0);
  stroke(0, 0, 255);
  line(0, 0, 0, 0, 0, 100);
}

Processingでは図形を作成する方法として,以下のような方法があります.

 beginShape();
 vertex(0, 0, 0);
 vertex(0, -50, 0);
 vertex(50, -50, 0);
 vertex(50, 0, 0);
 endShape(CLOSE);

beginShape関数で,図形の作成の開始を宣言します.vertex関数で図形の頂点を作成し,すべての頂点を作成し終えたらendShape関数で図形の作成の終了を宣言します.endShape関数の引数CLOSEは,最初の頂点と最後の頂点を自動的につなげて図形を閉じるよう指示します.

verticies.png

2次元の図形と同じように,図形の輪郭線の色はstroke関数で,内部を塗りつぶす色はfill関数で変更できます.

PShapeクラス(*Ver.2.0以上)

図形を作成するもう一つの方法としてPShapeクラスを用いる方法があります.

PShape s;

void setup()
{
  ...
  s = createShape();
  s.beginShape();
  s.vertex(0, 0, 0);
  s.vertex(0, -50, 0);
  s.vertex(50, -50, 0);
  s.vertex(50, 0, 0);
  s.endShape(CLOSE);
}

void draw()
{
  ...
  shape(s);
}

色を除けばbeginShape,endShape関数と同じ実行結果が得られます.

PShapeクラスのインスタンスをcreateShape関数で生成し,メソッドbeginShapeで図形の頂点の作成を開始,vertexメソッドで頂点を作成,endShapeメソッドで頂点の作成を終了します.使い方は先ほどのbeginShape,endShape関数とほぼ同じであることがわかります.

描画する際は,shape関数にPShapeクラスのインスタンスを引数に指定します.

また色を変更したい場合はfillメソッド,strokeメソッドを使用します.

 s = createShape();
 s.beginShape();
 s.stroke(0, 255, 0);
 s.fill(0, 255, 255);
 s.vertex(0, 0, 0);
 s.vertex(0, -50, 0);
 s.vertex(50, -50, 0);
 s.vertex(50, 0, 0);
 s.endShape(CLOSE);

beginShape,endShape関数とPShapeクラスの使い分け

beginShape,endShape関数による図形の作成は手軽に使えるという利点があります.しかしながら,描画前に毎回頂点の作成を行う必要があります.そのため,頂点数の多い図形ではCPUへの負荷が高くなります.また,同じ図形を再度描画したい場合には,再度同じ手順で頂点を作らなければいけません.

PShapeクラスは,使用するために少し準備が必要です.しかしながら,事前にすべての頂点を作成しておけるため,頂点数の多い図形でも描画時の負荷が少なくなるという利点があります.また,再度同じ図形を描画したい場合にも頂点を再度作成する必要がありません.

図形を作成する関数

基本的な図形は,作成してくれる関数が用意されています.

四角形:box関数

球:sphere関数

図形の形状の変更

vertex関数,またはvertexメソッドで作成された頂点をどのように描画するかはbeginShape関数,メソッドの引数で指定することができます.

詳細はリファレンスを参照してください.

課題の提出先・提出方法

招待されているBoxアップロードフォルダ「メディア演習C(CG)前前期」へ,完成させた各課題のスケッチフォルダをまとめてZIP圧縮したファイルを以下の名前でアップロードしてください.

ファイル名:XXFIXXX_2nd.zip(例:19FI999_2nd.zip)

提出締め切り:5月27日(水) 18:00

BOXアップロードフォルダの招待メールが来ていない方は以下より申請してください. (学籍メール+共通パスワード)

https://forms.office.com/Pages/ResponsePage.aspx?id=ixIOAf0kL06CbvxAt5p-YayxGTkiPYRChoTGYtovLK5UOTVWWVg4QjFOTllKUEQ4RlcxWjFHWkQzRy4u

課題1

円盤を作成せよ.

提出ファイル名:BASIC2_1.pde

disk.png

課題2(*任意課題に変更)

円柱を作成せよ.

提出ファイル名:BASIC2_2.pde

以下の画像では,側面の板をbeginShape(TRIANGLES);で作成しているが,beginShape(QUADS);でも構わない.

cylinder.png

課題3(任意)

sphere関数を用いずに球のモデルを作成せよ(分割数などは任意でよい).

提出ファイル名:ADVANCE2_1.pde

ヒント:「球 パラメータ形式」(google検索)


添付ファイル: fileverticies.png 577件 [詳細] filedisk.png 894件 [詳細] filecylinder.png 750件 [詳細] filechangecam.png 266件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-05-19 (火) 21:35:45