这个函数应该给我一个近似剪裁平面的确切大小。
public Vector2 NearplaneSize
{
get
{
float w = 2 * Mathf.Tan(Mathf.Deg2Rad(Fov) / 2) * ZNear;
return new Vector2(w, w / AspectRatio);
}
}
我正在创建一个这样的飞机:
Vector2 s = cam.NearplaneSize;
Mesh = PrimitiveFactory.CreatePlane(s.X / -2, s.Y / -2, -(cam.ZNear + 0.1f), s.X, s.Y, 1, 1, Quaternion.FromAxisAngle(Vector3.UnitX, Mathf.Deg2Rad(90)));
在相机前面,但它略大于屏幕的一半。显然计算错了。我似乎无法找到更好的公式。
有什么想法吗?感谢
答案 0 :(得分:1)
我不知道OpenTK,但由于旧的gluPerspective调用,“Fov”通常被理解为fov y,而不是fovx。
所以我假设
float h = 2 * Mathf.Tan(Mathf.Deg2Rad(Fov) / 2) * ZNear;
return new Vector2(h * AspectRatio, h);
应该这样做。