在WebGL中设置正交顶视图投影

时间:2016-10-02 22:44:36

标签: webgl orthographic

我在这里研究了这个例子: http://learningwebgl.com/lessons/lesson01/index.html

使用的矩阵库是: http://glmatrix.net/

所以这个例子是在剪辑空间中,我明白了。我想用这个例子作为我的基础设置一个正交投影。正交投影的中心应该是0,0,0,眼睛位置在+ Z处,向下看0,0,0。当我在缓冲区中输入我的3d面的坐标时,我希望能够以模型空间单位输入这些坐标。我的映射展示示例我的面积为10,000立方x -5000到+5000 y -5000到+5000,z -5000到+5000将被投影到500 x 500的画布上。所以我的3D​​面孔会在这10,000个立方体中的某个位置坐标,500 x 500的画布将显示所有10,000个立方体。

这与CAD程序用于开始划痕绘图的投影相同。有没有人知道如何使用glMatrix库在WebGL中执行此操作?我是WebGL的新手,我真的可以在这个主题上使用一些指导。

1 个答案:

答案 0 :(得分:1)

为简单起见,您首先应将相机变换矩阵与其投影矩阵分开。然后,您可以将它们相乘以获得“视图投影矩阵”,将世界空间坐标转换为屏幕空间。

Global Options

开始放置相机(凸轮矩阵)

var cam = mat4.create();
var proj = mat4.create();

设置othographic投影(proj矩阵)。你可以看到正射投影就像一个与摄像机对齐的盒子,你可以用六个参数展开每一面。盒子里面的所有东西都会显示在屏幕上。

mat4.translate( cam, cam, position )
mat4.rotate( ... )
mat4.lookAt( .. )
//...

最后得到视图投影

var ratio = screenWidth/screenHeight;
var halfWorldWidth = 5000.0;

// the near/far will depend on your camera position
mat4.ortho( proj,
  -halfWorldWidth,
  halfWorldWidth,
  -halfWorldWidth / ratio,
  halfWorldWidth  /ratio,
  -50,
  50
)