■
Example->3D-Camera->Ortho について.その1.
そもそも,Orthoとは,"Orthographic projection"の略で,垂直投影のこと.
投影図の種類としては大きく2種類あって1つが透視投影 ( Perspective projection ) で,もう一つが平行投影(Parallel projection)です.
透視投影がいわゆるピンホールカメラのモデル.平行投影が地図とかに用いられるパターン.平行投影のうち投影面と投影線の角度が垂直であるものを垂直投影といいます.
詳しくは,
http://chiyo.sfc.keio.ac.jp/cgsoft/Release/Textbook/drawing3d02.html
http://chiyo.sfc.keio.ac.jp/cgsoft/Release/Textbook/drawing3d03.html
を見るといいでしょう.
今回は,lights() とOrtho()メソッドについて.
lights()
標準環境光,光の方向,減退,反射率を設定します.
デフォルトの環境光は,(128,128,128)で,光の方向は(128,128,128,0,0,-1),
減退(1,0,0),反射率は,(0,0,0)です.
ライトはdraw()の永続的に繰り返されるルーピングプログラムの中に含まれる必要があります.
directionalLight()やlightSpecular(),ambientLight()は,setup()の中に設置することで,
ループの中を通して有効です.
ortho
正射影投影法を設定し,平行なクリッピングボリュームを定義します.
同じ範囲にある全てのオブジェクトは,それらがカメラから近いか遠いかに関わらず,
同じサイズとして現れます.この関数のパラメータはクリッピングボリュームを明確に定義します.
どこが最小で最大なのか,rightとleftはx値は最大値と最小値を,
topとbottomはy値の最大値と最小値を,そして,nearとfarはz値の最大値と最小値です.
もしパラメータが与えられなければ,デフォルトとして(0 ,ウィンドウの横幅,0,ウィンドウの縦幅,-10,10)を用います.
との事です.なんか一気に色々と新しいメソッドが出てくるので続きは後半で...文末にothroのサンプルをのせておきます.
void setup() { size(200, 200, P3D); noStroke(); } void draw() { background(255); lights(); //ortho(0, width, 0, height, -10, 10); // Default ortho settings ortho(-width, mouseX, -height/2.0, mouseY/2.0, -10, 10); translate(0, 0, -100); rotateX(PI/4); rotateZ(PI/3); pushMatrix(); for(int i=0; i<width; i+=20) { for(int j=0; j<height; j+=20) { box(10, 10, (j+i) / 4.0); translate(20, 0, 0); } translate(-200, 20, 0); } popMatrix(); }