D3D11 包围体

本文介绍了在D3D11中如何使用包围体(包围盒和包围球)来加速拾取和碰撞检测操作。当场景中存在大量模型时,传统的拾取方法效率低下,而包围体可以通过测试更少的几何体或提供更快的检测方法来显著提升性能。包围球是最快速的检测方式,但精度较低,包围盒虽然更精确,但计算成本更高。通过包围体,可以在保证性能的同时,降低精准度的影响,通过先测试包围体,再根据需要精确测试模型,从而解决游戏中的拾取延迟问题。
摘要由CSDN通过智能技术生成

若场景中有上千个模型,并且每个模型有上千个三角形。若仅仅使用前一章节中的拾取方法,则完成一个拾取操作将耗时5s。在单一帧内耗时5s是让人难以接受的,因此引进了包围体方式。

这里将介绍如何创建以及使用包围盒以及包围球。包围盒比包围球跟更为精确,但是耗时比包围球多。

这里会使用之前介绍过的高分辨率定时器来计算每次拾取操作的耗时。


介绍:

包围体用于加速类似拾取与碰撞测试操作。本章会渲染1000个瓶子(之前仅仅只有20个)。若在前一章节中运行1000个瓶子,会发现每次拾取一个瓶子时,游戏会冻结一小段时间。要解决这种问题,就引入了包围体方式,这种方式只测试包围盒中的一小部分三角形而不是去测试每个对象中的所有三角形,或者是只测试拾取射线是否位于模型的包围球范围之内,这种方式会极大提高速度。

这里会创建一个包围盒以及一个包围球体,之后,在真实复杂模型中,做一个既有包围盒又有包围球体的边界模型,它包含非常少的需要测试的三角形。一般不去渲染包围体,只用于测试。

包围体:

包围体用于拾取以及碰撞测试操作。它耗时少的原因是要么提供更少的几何体(包围盒和包围网格)来测试,要么是提供更为有效的测试方法(包围球)。虽然速度是提高了,但是精准度降低了,球体精准度比包围盒或包围网格都低。

虽然如此,但是精准度的事情是不需要担心的。首先,低精准度或许正是游戏中所需要的效果,对某些对象来说,在拾取时通过预估它的位置来让对象更为容易拾取。但真正不需要担心低精准度的原因是,因为低精准度下仍然可以对模型做出精准的测试。只测试对象的包围体而不是测试模型的每个三角形来实现。若包围体被拾取,就能够测试实际的模

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值