欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-25 09:35:46
目录一、streamvr问题:3.error during openvr init: init_interfacenotfound:4.[steamvr]interface not found (10...

一、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/

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

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

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

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

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

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

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

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

二、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调试程序”

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

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)触发事件。

相关标签: Unity VR