「超入門コード10選!」【Processing-3D】
はじめに
個人的に考える超基本的で必要だと考える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);
}
Author And Source
この問題について(「超入門コード10選!」【Processing-3D】), 我々は、より多くの情報をここで見つけました https://qiita.com/umi_mori/items/58ade92d9fbb9f9ed696著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .