以下是我如何绘制由此处未显示的顶点定义的形状。
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;
这样做的正确方法是什么?
答案 0 :(得分:1)
几何考虑:将物体移离相机意味着沿着由两点定义的线移动物体:相机的位置和物体的位置。
现在很容易!
1)找到矢量对象,即
Vector3 direction = objectPosition - cameraPosition;
2)将对象与该向量一起移动一定量,即:
2.1)规范化方向
direction.Normalize();
2.2)在该方向上移动对象x的数量
objectPosition += direction * x;
你有它。