スタートページ> Javascript> CANVAS> WebGL
図のように、点 (100, 100, 0) を中心とした一辺 200 の立方体があり、 (0,0,1000) の位置(原点と垂直に手前に1000の位置)にカメラがあります。そのカメラの位置や特性を変えたときの、立方体の見え方を調べます。
注 ctype=0 PerspectiveCamera 遠近法を用いているので、カメラとの距離で物体の大小が変わります。 ctype=1 OrthographicCamera 平行法を用いているので、距離による変化は発生しません。 回転では、どれかに30や45など2以上の値があれば、その回転位置に移動して固定、 すべてが0・1ならば、1を付けた方向に連続的に回転します。(ここだけのルールです。)
設定 ここでの基準となる標準ケースに戻します。 特性 ctype 0 PerspectiveCamera(遠近法)、1 OrthographicCamera(平行法) 視角 fov 視角を大にすると、広角撮影になり、物体が小さくなります。 視角を小にすると、望遠撮影になり、物体が大きくなります。 縦横比 aspect 通常は CANVAS の width/height の値にします。それより大だと縦長(正確には横圧縮)になります。 距離 near, far カメラからの距離が near ~ far の間の部分だけを表示します。 近くの遮蔽物や遠方の邪魔物を排除するときに有用です。 位置 positionz カメラの位置は、横 = positionx, 高さ = positiony から垂直に positionz 手前の位置にあります。 positionz を小にすれば、カメラが近距離にあることになり、物体が大きくなります。 しかし、カメラは座標空間の外にあることが必要なので、それより小さくすることはできません。 位置 positionx 横にずれた位置に置いた場合です。物体は反対側に移動したように見えます。 positiony についても同様です。 回転 rotation(指定角度) rotation のいずれかに1より大の値があると、カメラがその角度に移動して原点に向かって撮影します。 回転 rotation(連続回転) 0を指定した方向は固定、1を指定した方向に連続的に360°回転して撮影した動画になります。 撮影方向 lookat 回転をしたとき、カメラをどの方向に向けるかの指定です。
: // ========================================== シーンの作成 : // ========================================== カメラの作成 // カメラの撮影特性 if (ctype == 0) var camera = new THREE.PerspectiveCamera(fov, aspect, near, far); else camera = new THREE.OrthographicCamera(-400, 400, 400, -400, near, far); // カメラの初期位置 camera.position.set(positionx, positiony, positionz); // オブジェクト(被写体)を作成 // ====================== カメラの移動 // 平行移動 camera.position.x = positionx; : // 回転移動 var radian = rotationx * Math.PI / 180; // 度表示の rotationx をラジアン表示にする camera.position.x = positionz * Math.sin(radian); // 新X座標の値 : // 撮影方向 camera.lookAt(new THREE.Vector3(lookatx, lookaty, lookatz)); // 単にcamera.lookAt(100,200,0) のような記述は不可 // ====================== 撮影 renderer.render(scene, camera);