Three.jsで直線をシーンに追加して透視投影と平行投影で描画して比較してみます。

Three.jsで直線を描画するには?

Three.jsで直線を描画するにはどうすればいいのでしょうか? 以下のようなサンプルプログラムを見かけますが、これでは動かない場合があります。

ではどうすればよいかというと

透視投影でもなく平行投影でもない不思議な世界

ところで次回からこんな感じのゲームを作ろうとしているのですが・・・

このゲームは3Dっぽく見えますが、これはこれまで作成してきた透視投影ではありません。透視投影と平行投影で描画したものと比較してみましょう。

透視投影の場合

これは縦横に等間隔で引いた直線を透視投影で描画したものです。

遠くにあるものは小さく描画されるので縦方向の直線は中央よりになり、横方向の直線は間隔が狭くなっています。

一応、ソースコードを示します。

平行投影の場合

平行投影で描画するときはカメラを定義するときにTHREE.PerspectiveCameraを使うのではなく、THREE.OrthographicCameraを使えばOKです。

引数は描画される領域の左境界、描画される領域の右境界、描画される領域の上境界、描画される領域の下境界、シーンに描画されるカメラ位置を基準にした最小値、同最大値です。

平行投影だとこうなります。遠近感がないので手前にある3Dオブジェクトも奥にある3Dオブジェクトも同じ大きさで表示されます。縦横の直線の間隔は同じです。

ということでこのゲームを疑似3Dで作ろうとすると自分で実装しなければなりません。