3
\$\begingroup\$

For this method that the goingBeyond XNA tutorial provides, it would be really convenient if I could retrieve the new position of the model after I apply all the transforms to the mesh. I have edited the method a little for what I need. Does anyone know a way I can do this?

    public void DrawModel( Camera camera )
    {
        Matrix scaleY = Matrix.CreateScale(new Vector3(1, 2, 1));
        Matrix temp = Matrix.CreateScale(100f) * scaleY * rotationMatrix * translationMatrix * Matrix.CreateRotationY(MathHelper.Pi / 6) * translationMatrix2;
        Matrix[] modelTransforms = new Matrix[model.Bones.Count];
        model.CopyAbsoluteBoneTransformsTo(modelTransforms);
        if (camera.getDistanceFromPlayer(position+position1) > 3000) return;
        foreach (ModelMesh mesh in model.Meshes)
        {
            foreach (BasicEffect effect in mesh.Effects)
            {
                effect.EnableDefaultLighting();
                effect.World = modelTransforms[mesh.ParentBone.Index] * temp *  worldMatrix;
                effect.View = camera.viewMatrix;
                effect.Projection = camera.projectionMatrix;
            }
            mesh.Draw();
        }
    }
\$\endgroup\$
1
  • \$\begingroup\$ Can't you just transform your position by the transform matrix you create? Something like modelNewPosition = temp.Transform(modelOldPosition) \$\endgroup\$
    – House
    Commented Jun 2, 2012 at 22:47

1 Answer 1

1
\$\begingroup\$

The drawn model's position is:

Vector3 drawnModelPosition = (temp * worldMatrix).Translation;
\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .