2015-07-10 75 views
3

这一个将会很长:XNA 4.0。 * .fbx模型的动态变化尺寸

我正在努力改变XNA 4.0中* .fbx模型的尺寸。假设我创建了一个简单的原始立方体。它具有容易提取坐标的边界框。这里有一些例子,其尺寸在画面中可见:

BoudningBox

我也有另一种模式,其格式为* .FBX。这里谈到的样品模型的另一张照片:他们两个更好的规模

some model

图片(我改变了更好的可视性颜色):

enter image description here

我要实现的是把什么那是蓝色装订箱里面的东西,所以它看起来像这样:

enter image description here

请注意,我没有旋转交叉!我在三个轴中的每一个中改变了它的尺寸(当然,每个轴的尺寸缩放比例是不同的)。

正如你所看到的,我需要改变'十字'的大小,以便它可以放入装订盒中。我的问题是:我可以在XNA中以* .fbx模型的维度自由操作吗?我在互联网上做了一些研究,而且我没有发现任何线索如何改变fbx模型在加载之后的外观或者至少在可能的情况下。

EDIT

我注意到,我可以在本实施例中改变的模型规模在XNA像:enter image description here

并且比简单的拖动那些轴系中的一个(在该特定情况下,红的,这代表x轴)我可以在一个轴中更改模型的比例尺

enter image description here

现在,当我知道我想更新我的问题: 我可以在代码得到控制了我的内容管理

回答

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)