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

幾何学的に考えてみてください。オブジェクトをカメラから遠ざけるということは、カメラの位置とオブジェクトの位置の 2 点によって定義される線に沿ってオブジェクトを移動することを意味します。

今では簡単です!

1) オブジェクトからカメラへのベクトルを見つけます。つまり、

Vector3 direction = objectPosition - cameraPosition;

2) オブジェクトをそのベクトルに沿って一定量移動します。つまり、次のようになります。

2.1) 方向を正規化する

direction.Normalize();

2.2) オブジェクトをその方向に量 x だけ移動する

objectPosition += direction * x;

そして、あなたはそれを持っています。

于 2012-04-22T00:28:07.793 に答える