2012-04-21 5 views
1

ここでは、ここに示していない頂点で定義されたいくつかの図形を描いています。XNA - オブジェクトを遠くに描画する方法

 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 

Iは、その中心が画面上の同じ(X、Y)の画素に留まるが、それはより遠くだとして、それは全体小さくなるようだけ遠く同じ形状を描画したいです。

私は位置ベクトルをスケーリングしようとしたが、それと全く成功しなかったしました:

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

これを行うには正しい方法は何ですか?

答えて

1

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

今すぐ簡単です!

1)ベクトルオブジェクト・ツー・カメラの検索、すなわち

Vector3 direction = objectPosition - cameraPosition; 

2)一定量だけそのベクターと一緒にオブジェクトを移動、即ち:

2.1)方向を正規化

direction.Normalize(); 

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

objectPosition += direction * x; 

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

関連する問題