HuldaGnodim 发表于 2022-11-2 09:03

Unity WebXR

目录
前言
一、WebXR是什么?
二、使用步骤
1.引WebXR工具
2.webxr的使用
4.出包
总结
前言

因公司需要学习Unity 网页Vr项目,最终选择使用WebXr工具,算第三方的支持Unity Webgl的Vr工具.可以实现使用unity打包,最终在网页上支持Vr模式和普通的网页模式.
提示:以下是本篇文章正文内容,下面案例可供参考
一、WebXR是什么?

是Web上用于VR和AR的新的跨浏览器API。Unity是构建跨平台体验的绝佳工具,可以在网页浏览器是实现Vr游戏,因为支持Unity,不需要去换开发工具,开发网页vr,对于原unity工作者是一个号工具.具体的说明文档看一下,也没啥用.
https://blog.mozvr.com/unity-webxr-exporter-update/
二、使用步骤

1.引WebXR工具

1.可以从Unity官方商店下载,最新版的工具已经在商店上线,
2.可以从github上下载,这上面的可能比商店里面的更新快一点.而且github上面有工具使用的步骤,和一些要注意的事项.推荐看一下.
github:https://github.com/MozillaReality/unity-webxr-export
2.webxr的使用

1.Webxr是网页Vr,所以在开发前要做一些准备工作:Unity,WebGl支持,同时引入Pc端的VR类支持.
如果不知道的可以找到下图这样的图片点击小圈画起来的就行了.到这就可以在unity上使用vr设备跑WebXR官方例子了.


2.打开官方案例WebXR场景,因为官方场景使用的是Urp渲染方式,会有一些模型的渲染材质shader丢失,重新设置一个材质就行了.


可以在场景中的WebXRCameraSet上面找到WebXRManager里面的DefaultHeight参数设置头盔高度.


3.webxr相机
WebXRCameraSet 是webxr的相机和手柄的父物体,把他拖入到新建场景里面就可以在新场景启用Vr相机和手柄了.
4.手柄:
官方案例只给了一个简单的操作实例,就是手柄跟台上小方块的交互.用的是触发检测.打开WebXRManager下的handr手柄可以看到里面绑定有WebXrController和DesertControllerInteraction两个脚本,
其中WebXrController脚本:是区分左右手的,和绑定不同的手柄按钮触发方式,其中InputMap里面的是官方写好的,也可以自己写,里面绑定的映射,官方给的也有,如果官方给的案例手柄不能用,
你必须用Mozilla提供的内容替换文件
ProjectSettings/InputManager.asset
下载地址:https://raw.githubusercontent.com/MozillaReality/unity-webxr-export/master/ProjectSettings/InputManager.asset
请记住,你必须在Unity外部执行此操作,因为项目设置位于Assets文件夹外部。ProjectSettings文件夹内,可以使用文件资源管理器替换整个文件,或使用记事本++替换其内容。(这个文件可以在webxr的github里面找到)


DesertControllerInteraction:是案例给的手柄交互案例脚本:其中Update里面是手柄按钮点击,播放手柄动画的方法,所以我们可以官方的设置,替换到官方不咋好看的手柄模型.
void Update()
    {
      float normalizedTime = controller.GetButton("Trigger") ? 1 : controller.GetAxis("Grip");

      if (controller.GetButtonDown("Trigger") || controller.GetButtonDown("Grip"))
            Pickup();

      if (controller.GetButtonUp("Trigger") || controller.GetButtonUp("Grip"))
            Drop();

      // Use the controller button or axis position to manipulate the playback time for hand model.
      //播放手柄动画
      anim.Play("Take", -1, normalizedTime);
    }官方没有给webxr手柄通过射线跟UI交互的方式,我这边是没有找到可以兼容ui射线交互的插件,直接写了一个小的Button与射线的交互脚本,勉强能用.
4.出包

WebXR需要打出一个包,放到服务器然后使用链接在网页打开,打包是需要选择WebXR的模板,工具里面的模板会自动调用Web端的Api去判断是浏览器否支持Vr设备,在WebGLTemplates文件夹WebXR里面的index脚本,有兴趣可以看下.


打出来的包本地测试可以直接选择Build and run,在不同的浏览器下支持不同的vr设备,如果浏览器下没有打开vr模式的按钮,可以检查一下当前浏览器跟链接的Vr设备牌子是否匹配,可以在https://github.com/MozillaReality/unity-webxr-export里面查看浏览器对应的vr设备.
部署服务器的,需要跨域打开软件的网址链接需要https加密链接,才能调用vr设备,一定要Https加密链接.
总结

官方教程:https://github.com/MozillaReality/unity-webxr-export/blob/master/docs/project-setup.md
没啥总结的,欢迎同行指出错误的地方
页: [1]
查看完整版本: Unity WebXR