最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何使用Unity3D基于陀螺儀實現(xiàn)VR相機功能

這篇文章主要介紹了如何使用Unity3D基于陀螺儀實現(xiàn)VR相機功能,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在蒼梧等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、成都做網(wǎng)站 網(wǎng)站設(shè)計制作定制開發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,蒼梧網(wǎng)站建設(shè)費用合理。

步驟如下:

1、打開Unity,創(chuàng)建一個新的C#腳本GyroController.cs,并掛在MainCamera游戲?qū)ο笊?/p>

代碼如下:

using UnityEngine;using System.Collections; public class GyroController : MonoBehaviour{  // Fields  private readonly Quaternion baseIdentity = Quaternion.Euler(90f, 0f, 0f);  private Quaternion baseOrientation = Quaternion.Euler(90f, 0f, 0f);  private Quaternion baseOrientationRotationFix = Quaternion.identity;  private Quaternion calibration = Quaternion.identity;  private Quaternion cameraBase = Quaternion.identity;  private bool debug = true;  public static bool gyroAvaiable;  private bool gyroEnabled = true;  private Quaternion gyroInitialRotation;  public static bool gyroOff;  private Quaternion initialRotation;  private readonly Quaternion landscapeLeft = Quaternion.Euler(0f, 0f, -90f);  private readonly Quaternion landscapeRight = Quaternion.Euler(0f, 0f, 90f);  private const float lowPassFilterFactor = 0.1f;  private Quaternion offsetRotation;  private Quaternion referanceRotation = Quaternion.identity;  private readonly Quaternion upsideDown = Quaternion.Euler(0f, 0f, 180f);   // Methods  private void AttachGyro()  {    this.gyroEnabled = true;    this.ResetBaseOrientation();    this.UpdateCalibration(true);    this.UpdateCameraBaseRotation(true);    this.RecalculateReferenceRotation();  }   private void Awake()  {    gyroAvaiable = SystemInfo.supportsGyroscope;  }   private static Quaternion ConvertRotation(Quaternion q)  {    return new Quaternion(q.x, q.y, -q.z, -q.w);  }   private void DetachGyro()  {    this.gyroEnabled = false;  }   private Quaternion GetRotFix()  {    return Quaternion.identity;  }   private void RecalculateReferenceRotation()  {    this.referanceRotation = Quaternion.Inverse(this.baseOrientation) * Quaternion.Inverse(this.calibration);  }   private void ResetBaseOrientation()  {    this.baseOrientationRotationFix = this.GetRotFix();    this.baseOrientation = this.baseOrientationRotationFix * this.baseIdentity;  }   protected void Start()  {       Input.gyro.enabled = true;      base.enabled = true;    this.AttachGyro();    this.initialRotation = base.transform.localRotation;    this.gyroInitialRotation = Input.gyro.attitude;  }   private void Update()  {    gyroOff = PlayerPrefs.GetInt("gyro-off") == 1;    if (this.gyroEnabled )    {      base.transform.localRotation = Quaternion.Slerp(base.transform.localRotation, this.cameraBase * (ConvertRotation(this.referanceRotation * Input.gyro.attitude) * this.GetRotFix()), 0.5f);//0.1f    }  }   private void UpdateCalibration(bool onlyHorizontal)  {    if (onlyHorizontal)    {      Vector3 toDirection = (Vector3) (Input.gyro.attitude * -Vector3.forward);      toDirection.z = 0f;      if (toDirection == Vector3.zero)      {        this.calibration = Quaternion.identity;      }      else      {        this.calibration = Quaternion.FromToRotation((Vector3) (this.baseOrientationRotationFix * Vector3.up), toDirection);      }    }    else    {      this.calibration = Input.gyro.attitude;    }  }   private void UpdateCameraBaseRotation(bool onlyHorizontal)  {    if (onlyHorizontal)    {      Vector3 forward = base.transform.forward;      forward.y = 0f;      if (forward == Vector3.zero)      {        this.cameraBase = Quaternion.identity;      }      else      {        this.cameraBase = Quaternion.FromToRotation(Vector3.forward, forward);      }    }    else    {      this.cameraBase = base.transform.rotation;    }  }}

2.在相機MainCamera下創(chuàng)建一個新的Camera相機,并改變兩個相機的Viewport Rect屬性,以將屏幕均分

3.在場景中創(chuàng)建一個Cube

4.保存場景,打包成apk即可。即可使用手機陀螺儀控制相機旋轉(zhuǎn)了。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何使用Unity3D基于陀螺儀實現(xiàn)VR相機功能”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!


網(wǎng)頁名稱:如何使用Unity3D基于陀螺儀實現(xiàn)VR相機功能
標(biāo)題URL:http://fisionsoft.com.cn/article/pdcijh.html