我正在使用SlimDX / C#编写Direct3D应用程序。我按照文本框方式配置了相机:
private float cameraZ = 5.0f;
camera = new Camera();
camera.FieldOfView =(float)(Math.PI/2);
camera.NearPlane = 0.5f;
camera.FarPlane = 1000.0f;
camera.Location = new Vector3(0.0f, 0.0f, cameraZ);
camera.Target = Vector3.Zero;
camera.AspectRatio = (float)InitialWidth / InitialHeight;
绘图和旋转方法都是不错的Matrix.RotationYawPitchRoll
和mesh.DrawSubset(0)
。其他一切看似正常。
我的问题是我的3D网格(薄方框),从侧面看,垂直站立,看起来比水平时更厚。我试图将AspectRatio
更改为1,这更糟糕。因此,通过反复试验,我发现当AspectRatio
大约为2.6时,它看起来很正常。为什么会这样,哪些可能是错的?
答案 0 :(得分:1)
我已经找到问题并已经回答了。
显然我确实缩放了网格,并匹配宽高比,然后在Matrix.RotationYawPitchRoll之后应用Matrix.Scaling。当我将网格向前旋转时,我意识到无论垂直还是水平,它看起来都是一样的,缩放是横向拉伸,而不是我旋转的方式。交换2矩阵确实解决了我的问题。 不管怎样,谢谢