はじめまして、ますみです!
はじめに
個人的に考える超基本的で必要だと考える3D用のProcessingのコードです。
(「超必須コード10選!」【Processing】内の必須コードは省略しています。)
1. size (500, 500, P3D);
3D空間上で、画面の横と縦の大きさをそれぞれ500pxにする。
Reference:size();
2. point(250,250,250);
座標(250,250,250)の位置に点を描く。
Reference:point();
3. box(10, 20, 30);
幅10px、高さ20px、奥行き30px(x,y,z軸方向それぞれに10,20,30pxの長さ)の直方体を描く。
Reference:box();
4. sphere(100);
半径100pxの球体を描く。
Reference:sphere();
5. translate(100,100,100);
x,y,z軸方向それぞれに100ずつ図形を描く基準の位置をずらす。
Reference:translate();
6. rotate(PI/4);
π/4(45度)だけ図形を描く基準の向きをずらす。(z軸方向)
- 
rotateX(PI/4);:X軸方向にずらす。
- 
rotateY(PI/4);:Y軸方向にずらす。
- 
rotateZ(PI/4);:Z軸方向にずらす。
ラジアンを実数値で渡す形になるため、もしも度数法で渡したい場合は、radians();を用いるとよい。
例)rotateX(radians(45));
Reference:rotate();
7. camera(eyeX, eyeY, eyeZ, centerX, centerY, centerZ, upX, upY, upZ);
- 
eyeX, eyeY, eyeZ 
 カメラの位置の座標を入力。
- 
centerX, centerY, centerZ 
 画面の中心位置(もしもその時の基準点を中央にしたい場合は、全て0にする)
- 
upX, upY, upZ 
 カメラの向き(基本的に0.0 / 1.0 / -1.0 のいずれかを入力)
Reference:camera();
8. lights();
基準の位置に基準の向きでライトを照らす。
より細かいライトの設定をする場合、次のコードを用いる。
| コード | 意味 | 
|---|---|
| ambientLight(); | 周囲光源 | 
| directionalLight(); | 平行光源 | 
| pointLight(); | 点光源 | 
| spotLight(); | スポットライト | 
| noLights(); | ライト無し | 
Reference:lights();
9. オリジナルの図形(Custom 3D Shape)
主に用いるコードは次の三つである。
- 
beginShape();
 図形の定義を始める時に書くコード。
- 
endShape();
 図形の定義を終える時に書くコード。
- 
vertex();
 図形の要素を書くためのコード。
Reference:beginShape();、endShape();、vertex();
例として、3D空間上に四角形を描くときは次のように描ける。
>>サンプルコード(customShape.pde)
void setup(){
  //settings
  size(500,500,P3D);
  translate(250,250,0);
  rotateX(radians(45));
  rotateZ(radians(20));
  // writing custom shape
  beginShape();
  vertex(10, 10, 0);
  vertex(100,  10, 0);
  vertex(100,  100, 0);
  vertex(10,  100, 0);
  vertex(10, 10, 0);
  endShape();
}
>>説明(customShape.pde)
vertex();で、各座標を順番に辿り、図形を描いている。
出力で立体的な視点になっているのは、基準点の角度をrotateX();とrotateZ();で変えているため。
 
10. ortho();
遠近感のない立体にする。
Reference:ortho();
>>サンプルコード(ortho.pde)
void setup(){
  //settings
  size(500,500,P3D);
  translate(250,250,0);
  rotateX(radians(45));
  //changing to ortho setting
  ortho();
  // making the box object
  box(100,100,100);
}
Tips : OPENGLで高速/高精度に描画する
OPENGLとは、高速かつ高精度に3D空間を表現できるためのライブラリである。
やること
- 
import processing.opengl.*;でライブラリをインポートする
- 
size(500,500,OPENGL);でP3Dではなく、OPENGLにする
>>サンプルコード(OPENGL.pde)
//importing the library
import processing.opengl.*;
void setup(){
  //settings - sets to OPENGL in size();
  size(500,500,OPENGL);
  translate(250,250,0);
  rotateX(radians(45));
  // making the box object
  box(100,100,100);
}
>>出力結果(OPENGL.pde)
最後に
最後まで読んでくださり、ありがとうございました!
いかがだったでしょうか?
この記事を通して、少しでもあなたの学びに役立てば幸いです!
【仕事の相談はこちら】
お仕事の相談のある方は、下記のフォームよりお気軽にご相談ください。
もしもメールでの問い合わせの方がよろしければ、下記のメールアドレスへご連絡ください。
info*galirage.com(*を@に変えてご送付ください)
🎁 「生成AI活用の無料相談券」もしくは「生成AIの社内ガイドライン(無料PDF)」を『公式LINE』で配布中 🎁
『生成AIを業務に活用したいけど、どうしたらいいかわからない』といった声を多くいただきます。
Galirageでは公式LINEにて、チャットやオンライン会議で「完全個別の生成AI活用無料相談会」を実施しております!
(期間限定で実施しているため、ご興味ある方はお早めに以下のLINE公式アカウントをご登録ください^^)
https://lin.ee/rvz6lMN
※ 予告なく、キャンペーンを終了する可能性がございますが、ご了承ください。
【業務内容】
具体的には、以下のお仕事を中心に受け付けております!(詳しくはこちら)
- 受託開発(例:生成AIを使った社内システムの開発)
- コンサルティング(例:技術戦略のアドバイス)
- 講演(例:社内研修、イベント登壇)
※ 特に「生成AIを使ったシステム開発のご依頼」が多く、ご好評いただいております。
【これまでの相談事例】
以下のようなご相談が多くあります。
🔑 機密情報を漏洩させないための、生成AIのシステム構築をお願いしたい。
🤖 自社データを用いたFAQチャットボットの作り方を知りたい。
💡 ChatGPTを、自分たちの事業にどのように活かせるか、アドバイスやアイデアが欲しい。
おまけ
エンジニアの仲間(データサイエンティストも含む)を増やしたいため、公式LINEを始めました🎉
「一緒に仕事をしてくれる方」「友だちとして仲良くしてくれる方」は、友だち追加をしていただけますと嬉しいです!(仲良くなった人たちを集めて、「ボードゲーム会」や「ハッカソン」や「もくもく会」もやりたいなと考えています😆)
とはいえ、みなさんにもメリットがないと申し訳ないので、特典を用意しました!
友だち追加後に、アンケートに回答してくれた方へ「エンジニア図鑑(職種20選)」のPDFをお送りします◎




