【发布时间】:2017-04-24 23:19:12
【问题描述】:
我正在使用 unity 和 holotoolkit 开发用于 hololens 的应用程序。问题是无论输入什么值,主摄像机的视野 (FOV) 始终为 16.97196。我什至添加了一个脚本来故意将 FOV 值设置为 60,但它会重置为 16.97196。 FOV值可以根据用户要求设置吗?
【问题讨论】:
我正在使用 unity 和 holotoolkit 开发用于 hololens 的应用程序。问题是无论输入什么值,主摄像机的视野 (FOV) 始终为 16.97196。我什至添加了一个脚本来故意将 FOV 值设置为 60,但它会重置为 16.97196。 FOV值可以根据用户要求设置吗?
【问题讨论】:
实际的 hololens 设备在 ~17 FOV 上运行,Holotoolkit 将相机 FOV 设置为 ~16.97,以便在统一开发和测试时获得相同的输出。
当您为 Hololens 开发应用程序时,没有任何理由更改 FOV 并且在统一测试时具有与实际 hololens 设备不同的输出。
另外,您可以获取问题详情here。
【讨论】:
您可以通过脚本直接为相机设置另一个投影矩阵来缩短 FOV。例如,如果你需要 60 度 FOV,你可以这样写:
public class SetCameraProjectionMatrix : MonoBehaviour
{
public float fieldOfViewOverride = 60.0f;
void Start()
{
Camera cam = GetComponent<Camera>();
Debug.AssertFormat(cam != null, "No {0} component on game object named {1} as expected.", typeof(Camera), gameObject.name);
cam.projectionMatrix = Matrix4x4.Perspective(fieldOfViewOverride, cam.aspect, cam.nearClipPlane, cam.farClipPlane);
}
}
Camera.projectonMatrix 属性文档:https://docs.unity3d.com/ScriptReference/Camera-projectionMatrix.html
在调用相机方法 ResetProjectionMatrix 之前,视野将被忽略。
【讨论】: