【翻(xue)译(xi)】3D Game Programming With DirectX11 - 5.9

本文深入探讨了视锥裁剪的概念,详细解释了如何在二维空间中进行裁剪,并引入了Sutherland-Hodgeman裁剪算法。进一步解析了在4D齐次空间中实现裁剪的方法,通过限制点在特定4D平面上的运动,最终得到裁剪后的多边形。文章旨在为读者提供全面的理解,包括算法原理及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(有图未加)

5.9 裁剪

在视窗锥的几何体应该被完全去掉,与视锥边缘橡胶的几何部分应该被裁剪,只有内不得被保留。图示了2D中如何裁剪。
我们可以把视锥看做一个六面体。——上、下、左、右、近、远平面。为了把一个多边形按照视锥裁剪,我们必须按照每个面逐一裁剪。当我们把一个多边形按照某一个面裁剪的时候,在正方向的那个面被保留了,负方向的那个面被去掉了。裁剪一个凸多边形总会得到一个凸多边形。总之硬件会做这件事,我们这里不细说;有兴趣的读者可以看很流行的Sutherland-Hodgeman裁剪算法。它基本上是寻找平面和多边形边缘的交点,然后让顶点重新组合成一个新的裁剪多边形。
[Blinn78]描述了一种如何在4D齐次空间做这种裁剪的方法。在投影除法之后,视锥中的点应该满足以下边界关系:

在变换之前应该满足这个关系:

也就是说,点被限制在这个简单的4D平面中:

了解了这一点之后,我们就可以使用一个裁剪算法了。注意到分割检测被扩展到了四维,所以我们可以用用4D点和4D平面在齐次裁剪控件中做这个检测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值