Как перемещать модели в Xna целиком?

У меня есть модель, которую я сделал в Blender, в которой есть отдельные сетки. Когда я добавляю его в проект Xna и пытаюсь переместить модель с помощью преобразования Matrix, все отдельные сетки идут в разных направлениях. Мой код в основном обновляет каждую сетку по отдельности. Есть ли лучший код, который я должен использовать, чтобы сетки модели двигались вместе?


person XNA_developer_group    schedule 05.04.2012    source источник


Ответы (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