繁体   English   中英

查看平截锥体剔除动画网格

[英]View frustum culling for animated meshes

我在系统中实现了视锥剔除,它在每个对象的边界球上测试视锥平面,并且效果很好。 (我发现不需要PlaneVsAabb检查)

但是,网格的边界球已针对其绑定姿势进行了调整,因此,当网格开始移动时(例如,玩家用剑攻击),某些顶点可能会脱离球体。

尽管有一些顶点需要渲染(例如,玩家的剑伸出了球体),但这通常会导致网格被剔除。

我可以想到两种可能的解决方案:

  1. 对于每帧中的每个网格,根据骨骼变化计算其新的边界球。 (我不知道该如何开始...)这可能效率太低吗?

  2. 为每个球体半径添加一个固定的偏移量(也许是基于整个网格的大小?),因此即使在设置动画时也不会出现网格被剔除的机会。

(1)在实时性上是低效率的。 但是,您可以通过静态计算最大可能的边界球(即在加载时)来混合两者。 在(2)中使用该方法可以保证比您组成的任意偏移量更好的结果。

(1)您可以在关键元素(例如,剑尖上的假骨头)上添加定位器,并在设置动画时变换其原点。 您可以在每次更新时在CPU上完成此操作,然后计算边界框或边界球。 或者,您可以离线计算动画每一帧的边界体积。 Doom3使用第二种方法。

暂无
暂无

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

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