我应该在渲染时避免重新缩放模型吗?

我对游戏开发相当陌生,目前正在用MonoGame和Blender开发一个简单的3D游戏。 这个游戏基本上是Pong的3D版本。

起初,我开发了一个恒定大小的模型(例如一个半径为1的球体),然后加上一个比例尺,使其与世界上其他的物体成比例。 这样一来,我就可以轻松地find物体,并find合适的尺寸,而无需返回到Blender。

然而,当我开始研究碰撞检测的时候,我意识到现在要弄清楚这个物体有多大是很困难的,因为我不得不根据比例因子I重新计算游戏世界中物体的大小用过的。 我不能简单地看看模型,并从那里取出大小的值。

虽然简单的球体计算可能相当容易,但是当我在不同维度上缩放比例的模型时,它会变得更加棘手。 例如,我把一个立方体重新调整为高出10倍。

几乎与旋转相同的问题。

这通常是如何在项目中完成的? 在Blender的最终尺寸中创建模型是否更好?因此,您不必跟踪代码中的对象大小? 或者可以在代码中缩放模型吗? 如果是的话,你如何跟踪这些变化?

您所描述的内容(创作所有内容在单位范围内归一化)并不是一个常见的工作stream程。 通常,在建模程序中建立参考框架(例如,假定一个建模世界单元为一米),并且针对该参考框架建模所有对象。 一个建筑物的高度是一米高的五十倍,在你的建模程序中高50个单位。

如果您的资产管道涉及多个资产作为更大场景中的参考,那么将物体的相对大小保持原始格式非常有用,正如许多大型游戏的典型情况。 例如,许多电影序列是通过将不同角色的资产引用导入到场景中并在该场景内操纵它们来创作的。 如果您必须应用缩放因子将所有内容放入正确的相对框架,则这变得更加麻烦。

这也意味着您必须在某处存储资产的适当比例,如果您可以通过以实际大小对其进行建模,将其隐含存储在资产数据本身中,这通常是不合逻辑的。

所以基本上,简单地建立原来合适大小的资产是一个不那么令人困惑的工作stream程。

也就是说,建立标准化的一切并在运行时应用一些缩放因子是完全可行的 。 它只是带来了很多复杂性,没有什么好处(你已经在每一帧都在变换和旋转几何graphics,所以缩放不会带来额外的成本,但它也不会加快速度)。 如果需要,您可以在运行时简单地缩放预先计算的边界体积和其他相关的形状,其比例与缩放渲染模型的系数相同。 这不是很自然。