当Cave项目中需要通过手柄的触摸板或其他除头盔的控制方式来控制镜头旋转和移动时的解决方案

当Cave项目中需要通过手柄的触摸板或其他除头盔的控制方式来控制镜头旋转和移动时的解决方案。相Unity和UE4中都有方法控制相机是否跟随头盔位置和旋转朝向

先说下Unity里的SteamVR,控制开关相机跟随头盔位置和旋转朝向的变量属性或者方法
unity引擎中已经给了一个变量属性来控制相机不跟随头盔。因此如果只是控制相机不跟随头盔只需要在初始化时将下面这个属性设成true就可以了。

UnityEngine.XR.InputTracking.disablePositionalTracking = true;

位置的跟随方便解决,相应的旋转视角的跟随也已经给了个方法进行设置。麻烦在我们找不到这个方法。关闭相机跟随头盔旋转的也有对应的方法,下面的函数就是关闭相机旋转跟随的,参数第一个是需要关闭的哪个相机,第二个就是是否关闭

UnityEngine.XR.XRDevice.DisableAutoXRCameraTracking(camera, true);

接下去就可以另外控制相机的旋转以及位置移动了。
需要注意Unity提供的XR模块中,该方法在新版本中已经取消,目前测试2018之前(包括2018版可用)新版本由于后来没碰到过需要该功能也就没有去研究,如果有朋友研究过麻烦告知或者评论区评论下。谢谢
在这里插入图片描述
下面是我写的通过手柄的触摸板控制相机旋转和移动的代码

public void ControllerCamera()
 {
 	SteamVR_Action_Boolean m_Teleport = SteamVR_Input.GetAction<SteamVR_Action_Boolean>("Teleport");
         SteamVR_Action_Vector2 m_Touch = SteamVR_Input.GetAction<SteamVR_Action_Vector2>("Touch");
         //获取手柄触摸板的数值
         Vector2 TouchPos = m_Touch.GetAxis(SteamVR_Input_Sources.Any);
         //更新相机角度
         RotAngle += (TouchPos.x* RotSpeed);
         //设置相机角度
        PlayerCamera.transform.rotation = Quaternion.Euler(0, RotAngle, 0);
        //设定初始向量
        Vector3 dir = new Vector3(0, 0, 1);
        //获取当前相机超前方向的向量
        Vector3 newVector = Quaternion.Euler(0, RotAngle, 0) * dir;
        //这里我拿个变量接了下数据,按理说不用接,但我不知道为什么不拿个临时变量接数据移动时方向是反的,乘以-1后也是反的。
        float speed = TouchPos.y;
        //设置相机的偏移(移动相机)
         PlayerCamera.transform.Translate(newVector * speed * Time.deltaTime* MoveSpeed, Space.World);//前后移动
 }

最后说下UE4中开关相机跟随头盔位置和旋转朝向的属性节点
相机属性中CameraOptions中有下面这个Lock to Hmd这个属性,将这个勾取消相机就不会再跟随头盔移动和旋转了。
在这里插入图片描述
设置某个相机不受头盔控制的蓝图节点,就是通过相机变量找到LocktoHmd属性
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TenderRain。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值