3

goingBeyond XNA チュートリアルが提供するこのメソッドについては、ここにあります。すべての変換をメッシュに適用した後、モデルが描画されている新しい位置を取得できれば非常に便利です。必要に応じてメソッドを少し編集しました。これを行う方法を知っている人はいますか?

    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();
        }
    }
4

1 に答える 1

0

Vector3.Transformメソッドを使用して、行列を位置ベクトルに適用します。

于 2012-06-02T21:42:04.903 に答える