透视投影有关缩放的问题

时间:2011-08-14 02:36:57

标签: javascript math graphics 3d projection

我一直在使用javascript进行透视投影渲染演示,最近我添加了透视投影,除非我放大,否则它应该正常工作。

以下是这种奇怪行为的图片:
enter image description here

注意网格线在某一点聚集的方式。

所以我怀疑其他两件事,我正在使用的缩放公式是不正确的,或者在透视投影数学中有一些我不理解的东西。

对于缩放我只有一个全局变量window.scaleFactor,我乘以每个点:

Point.prototype.projection = function(matrix){
    var point = $M([[this.x *window.scaleFactor],[this.y * window.scaleFactor],[this.z * window.scaleFactor],[1]]);
    var projection = matrix.x(point);
    return new Point(projection.e(1,1)/projection.e(4,1) + window.panX,projection.e(2,1)/projection.e(4,1) + window.panY,0);
}

那是正确的,还是缩放计算与观点有关?

您可以在此处试用演示:http://ahmedkotb.0fees.net/3d/projection_demo.html

编辑:您可以使用鼠标滚轮进行缩放并通过在画布内拖动来旋转...此外,我还没有测试过这个,除了在Chrome上抱歉。

任何插图都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:3)

我认为问题如下:当你放大时,你的一些线条会到达相机后面并且你没有剪裁它们(线条)。我能看到的神器是典型的非剪裁投影。解决方案:剪辑线条,或者使用另一个可以剪辑的3D渲染库。