Unity开发VR项目问题总结分析

目录
  • 一、StreamVR问题:
    • 1.运行项目时不显示手柄控制器:
    • 2.按键动作检测出现重复问题:
    • 3.Error during OpenVR Init: Init_InterfaceNotFound:
    • 4.[SteamVR] Interface Not Found (105):
    • 5.更新SteamVR时如果之前不小心删除了SteamVR的本地文件
  • 二、Unity问题:
    • 1.检测射线是否在UI之上(用于避免模型与UI互相干扰)
    • 2.VS2019调试unity项目:
    • 3.Unity 加载项目时出现“package manager error”:
    • 4.灯光烘焙问题:
    • 5.物体旋转问题:
    • 6.UGUI中无法触发事件(比如Button的点击)问题:

一、StreamVR问题:

1.运行项目时不显示手柄控制器:

出现这种情况一般会在头显中提示不能加载按键配置文件,出现这种提示时请直接打开steam(注意不是steamVR哈),按照我的了解应该是按键配置文件是存储在Steam上面的,不过项目发布以后就不会出现这种问题了。

2.按键动作检测出现重复问题:

出现这种问题应该是现在的插件本身的问题,比如检测按键抬起或者按键按下经常会出现触发两次的情况,目前的解决方案是设置一个Bool值,按下的时候设为true,抬起的时候设为false

if (TrigerAction.GetStateDown(SteamVR_Input_Sources.RightHand))
        {
            if (!rightTriger)
            {
                rightTriger = true;
            }
        }

        if (TrigerAction.GetStateUp(SteamVR_Input_Sources.RightHand))
        {
            if (rightTriger)
            {
               rightTriger = false;
            }
        }

3.Error during OpenVR Init: Init_InterfaceNotFound:

这个问题应该是SteamVR与OpenCV(1.0.0版)的兼容问题,直接通过Steam更新SteamVR(我这边是更新到1.15.19),之后就没有这个问题了~

4.[SteamVR] Interface Not Found (105):

这个问题还是SteamVR版本的问题,最少SteamVR1.15.19是有此问题的,出现这个问题的时候手柄是显示不出来的

http://steamcommunity.com/app/250820/discussions/0/133259227526422836/

可以更新到beta版解决此问题,更新方法如下,目前更新到1.16.4版就解决了这个问题:

5.更新SteamVR时如果之前不小心删除了SteamVR的本地文件

执行“运行”或“更新”时就会出现错误,这是可以通过下面的步骤重新安装SteamVR:

二、Unity问题:

1.检测射线是否在UI之上(用于避免模型与UI互相干扰)

注意此方法用在FixedUpdate中比较靠谱,若在Update中检测在webgl平台时不能及时检测到:

void FixedUpdate()
{
    //射线处在UI之上
#if !(UNITY_EDITOR||UNITY_STANDALONE )
        if (Input.touchCount <= 0)
            return;
#endif
#if !(UNITY_EDITOR||UNITY_STANDALONE )
        if (EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId))
#else
        if (EventSystem.current.IsPointerOverGameObject())
#endif
            return;
    //射线不处于UI上时触发下方功能
    ···
}

2.VS2019调试unity项目:

在顶部菜单栏中“调试”->“附加到Unity调试程序”

3.Unity 加载项目时出现“package manager error”:

  • ①可以关闭防火墙(设置白名单是没用的)之后重启电脑便可解决,等打开unity项目后可以再打开防火墙。
  • ②可以断开网络,重启电脑后在离线模式下打开unity,之后再连接网络。

4.灯光烘焙问题:

①Directional 直射光也是可以用于烘焙的,但是属于全局光,如果用于室内烘焙会被房间的墙壁遮挡,因此烘焙出来的室内虽然也会有一定的亮度,但是关闭实时光照后处于室内的可移动物品就全部变为黑色(无光状态)。

②室内尽量使用点光源(PointLight)或者聚光灯光源(SpotLight)来进行烘焙,可以烘焙的亮一些,然后通过调整贴图的亮度来控制光线的亮度。

5.物体旋转问题:

通过eulerAngles进行物体旋转的时候会出现万向锁的情况,但是直接用Quaternion计算坐标又很麻烦,可以通过Quaternion.Euler()方法将eulerAngles转换为Quaternion来解决此问题

Quaternion _angle = Quaternion.Euler(new Vector3(0,45,0));
transform.rotation = _angle;

6.UGUI中无法触发事件(比如Button的点击)问题:

注意一下此UI控件所在Canvas中的EventCamera是否为空,因为事件的触发是基于摄像机发出的射线,若不为空此Canvas下面的所有UI控件的事件触发都会基于此摄像机,将此值设为空后将会默认由主摄像机(MainCamera)触发事件。

(0)

相关推荐

  • Unity实现VR中在黑板上写字效果

    本文实例为大家分享了Unity实现VR中在黑板上写字的具体代码,供大家参考,具体内容如下 一.工具 1.开发用的是Unity 5.6.2版本 2.VR中的物理交互用的是VRTK插件,这个插件集成了比较好的物理交互功能: 3.HTC Vive 二.概述 实现的功能: 在一个白板上,用不同颜色的笔,在白板画出任何想要的图形: 因为只是一个初级篇所以只是用两个脚本简单的实现,而且并没有黑板擦等功能 ,也不能两个笔同时画画,这些功能将会在未来的升级篇中写出: 三.知识点 其实这个功能很简单,只是简单的运

  • Unity3D基于陀螺仪实现VR相机功能

    Unity自带陀螺仪功能,今天就利用陀螺仪实现一个VR相机功能.步骤如下: 1.打开Unity,创建一个新的C#脚本GyroController.cs,并挂在MainCamera游戏对象上,如图: 代码如下: using UnityEngine; using System.Collections; public class GyroController : MonoBehaviour { // Fields private readonly Quaternion baseIdentity = Q

  • Unity开发VR项目问题总结分析

    目录 一.StreamVR问题: 1.运行项目时不显示手柄控制器: 2.按键动作检测出现重复问题: 3.Error during OpenVR Init: Init_InterfaceNotFound: 4.[SteamVR] Interface Not Found (105): 5.更新SteamVR时如果之前不小心删除了SteamVR的本地文件 二.Unity问题: 1.检测射线是否在UI之上(用于避免模型与UI互相干扰) 2.VS2019调试unity项目: 3.Unity 加载项目时出现

  • vue-cli3+typescript新建一个项目的思路分析

    最近在用vue搭一个后台管理的单页应用的demo,因为之前只用过vue-cli2+javascript进行开发,而vue-cli3早在去年8月就已经发布,并且对于typescript有了很好地支持.所以为了熟悉新技术,我选择使用vue-cli3+typescript进行新应用的开发.这里是新技术的学习记录. 初始化项目 卸载老版本脚手架,安装新版本脚手架后,开始初始化项目.初始化的命令跟2.x版本的略有不同,以前是 vue init webpack project-name ,而现在是 vue

  • Python爬虫开发与项目实战

    内容简介 随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言和Web前端基础知识引领读者入门,之后介绍动态爬虫原理以及Scrapy爬虫框架,最后介绍大规模数据下分布式爬虫的设计以及PySpider爬虫框架等. 主要特点: l 由浅入深,从Python和Web前端基础开始讲起,逐步加深难度,层层递进. l 内容详实,从静态网站到动态网站,从单机爬虫到分布式爬虫,既包含基础知识点,又讲解了关键问题和难点

  • 详解使用Spring Boot开发Web项目

    前面两篇博客中我们简单介绍了spring Boot项目的创建.并且也带小伙伴们来DIY了一个Spring Boot自动配置功能,那么这些东西说到底最终还是要回归到Web上才能体现出它的更大的价值,so,今天我们就来看一下如何使用Spring Boot来开发Web项目.当然,如果小伙伴对Spring Boot尚不熟悉的话,可以先参考一下这两篇博客: 1.初识Spring Boot框架 2.初识Spring Boot框架(二)之DIY一个Spring Boot的自动配置 Spring Boot 提供

  • Android开发VR实战之播放360度全景视频

    VR即Virtual Reality虚拟现实.虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境中. 那么,如何在Android中去开发VR功能的APP呢?我们利用谷歌提供的开源SDK去实现一个360°全景视频的功能 一.在build.gradle中引入谷歌VR的SDK依赖 compile 'com.google.vr:sdk-videowidget:1.10.0' 二.注意支持的最小

  • PHP开发大型项目的一点经验

    一.变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候.变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆.变量的命名尽量规范化,不要与PHP中的关键字相冲突. 二.函数 PHP自带了很多函数,这给我们程序的编写带来了很多的方便.当然,在大型程序中我们往往自己要定义许多个函数,几十甚至上百个.当然在使用了类的程序中就不叫函数了,就应该叫方法,这里暂且不谈类的使用方法.函数多了,难免就会搞混了.有什么方法可以解

  • 我要点爆”微信小程序云开发之项目建立与我的页面功能实现

    开发环境搭建 使用自己的AppID新建小程序项目,后端服务选择小程序·云开发,点击新建,完成项目新建. 新建成功后跳转到开发者工具界面 新建后,微信端为我们提供了一个参考的模板程序,这里我们自己来创建各个所需的文件与代码,所以删除所有不需要的文件,删除cloudfunctions.miniprogram/images.miniprogram/pages文件下所有文件,同时也删除style文件和删除app.json中原始的页面配置. 此时编译下方控制台会报"VM8100:5 appJSON[&qu

  • Android开发导入项目报错Ignoring InnerClasses attribute for an anonymous inner class的解决办法

    在安卓开发导入项目过程中,出现错误再所难免.最近导入项目就遇到如下错误,具体如下图所示. 出现如上错误,最初设想先看下项目能不能运行.经尝试可以完美的在windows系统上运行(虽然会出现如上的错误警告).项目虽然在报警告的情况下,能在windows系统上运行,但一般Android项目都是基于Windows和OS X系统开发.于是猜想项目能不能同样在OS X系统上运行呢?结果发现不能,必须要把这些错误警告解决才行. 最初根据上图提示认为可能是对应的第三方jar包的问题.于是,分别替换了对应的第三

  • ros项目调试:vscode下配置开发ROS项目的详细教程

    引言 在vscode下面配置用于ROS项目开发的环境 包括头文件目录的配置,catkin_make命令的配置,GDB debug的配置,以及ROS插件. vscode头文件目录配置安装"c/c++"插件 到vscode左边栏的EXTENSIONS中,搜索"C/C++"并安装 生成c_cpp_properties.json vscode自身配置文件全部在./.vscode/目录下 但是,在最开始对自己新建的目录和文件进行编辑后,文件夹里面是没有.vscode目录的 同

随机推荐