0
Unity에서 VR 카메라의 FOV 값을 변경하려고합니다. 편집기에서 잘 작동하지만 휴대 전화에 앱을 올려 놓으면 thecamera에 FOV 값이 잘못 표시됩니다. 누군가 제가 전화로 FOV 값을 어떻게 효과적으로 바꿀 수 있습니까? 감사합니다.Unity VR app에서 FOV 변경
Unity에서 VR 카메라의 FOV 값을 변경하려고합니다. 편집기에서 잘 작동하지만 휴대 전화에 앱을 올려 놓으면 thecamera에 FOV 값이 잘못 표시됩니다. 누군가 제가 전화로 FOV 값을 어떻게 효과적으로 바꿀 수 있습니까? 감사합니다.Unity VR app에서 FOV 변경
코드를 통해 수행 할 수 있습니다. 실시간으로 FOV를 조절할 수있는 스크립트가 있습니다.
using UnityEngine;
using System.Collections;
using UnityEngine.VR; // you always need this to use special VR functions
public class VRUtility : MonoBehaviour {
public GameObject camGroup;
public Camera leftCam;
public Camera rightCam;
public float fov;
private float fovMin = 40;
private float fovMax = 100;
private float camGroupX = 0;
private float camGroupXMin = 0;
private float camGroupXMax = 100;
private float camGroupXStep = 20;
// Use this for initialization
public void Start() {
// set render quality to 50%, sacrificing speed for visual quality
// this is pretty important on laptops, where the framerate is often quite low
// 50% quality actually isn't that bad
VRSettings.renderScale = 3.0f;
OVRTouchpad.Create();
OVRTouchpad.TouchHandler += HandleTouchHandler;
leftCam.fieldOfView = fov;
rightCam.fieldOfView = fov;
}
// Update is called once per frame
void Update() {
if (Input.GetKeyDown(KeyCode.R)) {
InputTracking.Recenter(); // recenter "North" for VR, so that you don't have to twist around randomlys
}
// dynamically adjust VR visual quality in-game
if (Input.GetKeyDown(KeyCode.RightBracket)) { // increase visual quality
VRSettings.renderScale = Mathf.Clamp01(VRSettings.renderScale + 0.1f);
}
if (Input.GetKeyDown(KeyCode.LeftBracket)) { // decrease visual quality
VRSettings.renderScale = Mathf.Clamp01(VRSettings.renderScale - 0.1f);
}
}
private void HandleTouchHandler(object sender, System.EventArgs e){
var touchArgs = (OVRTouchpad.TouchArgs)e;
if (touchArgs.TouchType == OVRTouchpad.TouchEvent.SingleTap) {
fov += 10;
if (fov > fovMax) {
fov = fovMin;
}
leftCam.fieldOfView = fov;
rightCam.fieldOfView = fov;
}
if (touchArgs.TouchType == OVRTouchpad.TouchEvent.Left || touchArgs.TouchType == OVRTouchpad.TouchEvent.Right){
camGroupX += camGroupXStep;
if (camGroupX > camGroupXMax){
camGroupX = camGroupXMin;
}
camGroup.transform.position = new Vector3(camGroupX, 0, 0);
}
}
}
는 또한 위치 사이에 카메라를 이동하지만, 그냥 무시하고있다.