繁体   English   中英

缩放时的透视投影问题

[英]Perspective projection issues on zoom

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

这是这种奇怪行为的图片:
在此处输入图像描述

注意网格线是如何聚集在一个点上的。

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

对于缩放,我只有一个全局变量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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM