XNA 4.0。*.fbx模型的动态改变尺寸

3
这是一个比较长的问题:
我在 XNA 4.0 中尝试更改 *.fbx 模型的尺寸大小,假设我创建了一个简单的基本立方体。它有一个边界框(bounding box),可以很容易地提取其坐标。下面是一些示例维度,可以在图片中看到:
(图片链接)
我还有另一个格式为 *.fbx 的模型。这是一个示例模型的照片:
(图片链接)
为了更好地比例,这是两个模型的照片(我改变了颜色以便更好地显示):
(图片链接)
我想要实现的是将那个十字形放在蓝色的 boundingBox 内,效果如下图所示:
(图片链接)
请注意,我没有旋转那个十字形,我只是在三个轴向上改变了它的尺寸(当然,在每个轴向上的缩放比例是不同的)。
正如你所看到的,我需要更改“十字形”的大小,以使其适合边界框内。我的问题是:在 XNA 中是否可以自由操作 *.fbx 模型的尺寸?我在互联网上进行了一些研究,但我没有发现如何在加载后或至少在加载后更改 fbx 模型的外观的线索。
编辑
我注意到我可以在 XNA 中像这个例子一样更改模型的比例:
(图片链接)
然后只需拖动这些轴之一(在该特定情况下为红色轴,代表 x 轴),即可更改模型在一个轴上的比例。
(图片链接)
现在,我想更新我的问题:在代码中,我是否可以控制我的内容管理器?
1个回答

1
答案可能比进入内容管理器更简单。我会尝试使用跨模型来实现,其顶点已经烘焙,使其宽度为1个单位,高度为1个单位,深度为1个单位。然后可以在代码中应用缩放矩阵,将其缩放到每个轴上的盒子所需的单位数。
要根据我的想法制作图2中的原始十字架,您需要应用如下的缩放矩阵。
Matrix crossWorld = Matrix.CreateScale(6f, 4f, 9f); //now your 1x1x1 cross will render as a 6x4x9 cross (your figure 2) if you apply this to your `Effect.World` matrix

//then, to fit it into your box:
crossWorld = Matrix.CreateScale(10f, 8f, 6f);//now your 1x1x1 cross will render as a 10x8x6 cross and fit perfectly into your box (your figure 1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接