我从Blender导出了一个island.fbx,我想在xna中导入以创建一个岛屿对象:
public class Island
{
public Vector3[] Slots;
public Model Model;
}
fbx内部的一个网格是岛屿的模型。处理器应该从中创建一个Model实例。其他网格是建筑物的插槽。那些位置应该放在Slots数组中:
public override Island Process(NodeContent input, ContentProcessorContext context)
{
Island newIsland = new Island();
foreach (NodeContent nc in input.Children)
{
string childName = nc.Name.ToLower();
if (childName.StartsWith("slot"))
Helpers.ArrayAdd<Vector3>(ref newIsland.Slots, nc.Transform.Translation);
else if (childName.ToLower().StartsWith("island"))
newIsland.Model = ???;
}
return newIsland;
}
创建模型实例是个问题
我想我可以导入fbx两次(或导出两个fbx文件),一次用于Model,另一次用于创建Island对象。
但这似乎有点矫枉过正。
如何在同一处理器中执行这两个步骤?
答案 0 :(得分:0)
我会这样做:
public class IslandProcessor : ModelProcessor
{
public override ModelContent Process(NodeContent input, ContentProcessorContext context)
{
ModelContent mc = base.Process(input, context);
mc.Tag = CreateData(input);
return mc;
}
...
}
然后像这样加载它:
Island = new Island();
Island.Model = Content.Load<Model>(@"island");
Island.Data = IslandModel.Tag as IslandData;
工作正常,并不是很多工作。