我什么时候应该找到附加到模型的 BoundingBox 的最小值和最大值

When should I find the min and max for a BoundingBox attached to a Model

我正在为我的 DirectX 11/12 管道中的任何 3D 模型实现 ModelClass。

我的具体问题在于计算我希望用作 ModelClass 成员的 BoundingBox 结构的最小值和最大值。

我有两种计算方法。

方法一 当从文件中读取每个顶点时,存储当前的 minx,y,z 和 maxx,y,z 并根据当前的 min/max x,y,z.[=10= 检查每个顶点加载时的情况]

方法二 加载完所有顶点后,按 x、y、z 排序,找到每个点的最低值和最高值。

您会推荐哪种方法,为什么?

排序通常不是一项成本低的操作,尤其是当您的模型越来越大时。因此,对我来说,方法 1 更有效,但如果不确定,我建议对其进行测量,看看哪个需要更长的时间。

如果您使用的是像 Asspimp 这样的库,我相信该库会处理边界框,但如果您创建管道作为学习机会,这可能不是一个选项。

方法一

时间复杂度为 O(n),内存复杂度为 O(1)。

实现起来很简单。

方法二

时间复杂度为 O(nLogn) 内存复杂度可能至少是线性的(如果您复制数组或使用合并排序)或 O(1) 如果您使用像快速排序这样的就地排序算法.

每个维度都必须执行 3 次。

总而言之,方法 1 在我能想到的所有场景中都是最好的。