У меня есть модель, которую я сделал в Blender, в которой есть отдельные сетки. Когда я добавляю его в проект Xna и пытаюсь переместить модель с помощью преобразования Matrix, все отдельные сетки идут в разных направлениях. Мой код в основном обновляет каждую сетку по отдельности. Есть ли лучший код, который я должен использовать, чтобы сетки модели двигались вместе?
Как перемещать модели в Xna целиком?
Ответы (1)
Если вы назовете это:
private void DrawModel(Model model, Matrix worldMatrix)
{
//Matrix array for number of bones
Matrix[] modelTransformations = new Matrix[model.Bones.Count];
//Put bones into matrix array
model.CopyAbsoluteBoneTransformsTo(modelTransformations);
//for every model
foreach (ModelMesh mesh in model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
//Add default lighting
effect.EnableDefaultLighting();
//Set default postion
effect.World = modelTransformations[mesh.ParentBone.Index] * worldMatrix;
//Set view
effect.View = camera.viewMatrix;
//Set projection
effect.Projection = camera.projectionMatrix;
}
//Draw Model
mesh.Draw();
}
}
А затем переведите матрицу мира, которую вы вставили, следующим образом:
modelWorld *= Matrix.CreateTranslation(XDir, YDir, ZDir);
У вас не должно быть проблем. По крайней мере, я так делаю.
person
Phillip Macdonald
schedule
12.04.2012