1

下面是我如何绘制一些由此处未显示的顶点定义的形状。

        Vector3 position = (5,5,1);
        Matrix world = Matrix.CreateTranslation(position);
        BasicEffect basicEffect = new BasicEffect(graphicsDevice);


        Matrix view = Matrix.CreateLookAt(new Vector3(0, 0, -20), new Vector3(0, 0, 100), Vector3.Up);
        Matrix projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4,
                                                    graphics.Viewport.AspectRatio,
                                                    1.0f,
                                                    100);


        // Set BasicEffect parameters.
        basicEffect.World = world;
        basicEffect.View = view;
        basicEffect.Projection = projection;

        //....draw some shape with basicEffect

我想在更远的地方绘制相同的形状,以便它的中心保持在屏幕上的相同 (x,y) 像素中,但由于距离更远,所以整体更小。

我试过缩放位置向量但没有成功:

                position .Z *= 2;
                position .X *= 2;
                position .Y *= 2;

这样做的正确方法是什么?

4

1 回答 1

1

从几何角度考虑:将对象从相机移开意味着沿着由两点定义的线移动它:相机的位置和对象的位置。

现在很容易!

1)找到对象到相机的向量,即

Vector3 direction = objectPosition - cameraPosition;

2) 将对象沿该向量移动一定量,即:

2.1) 归一化方向

direction.Normalize();

2.2) 在那个方向上移动物体 x

objectPosition += direction * x;

你有它。

于 2012-04-22T00:28:07.793 回答