当前位置: 首页 > news >正文

(03)Unity HTC VRTK 基于 URP 开发记录

1.简介

       本篇主要内容为:URP如何与VRTK结合、URP需要注意的地方、VRTK的功能进行阐述。

       因项目本身要求要渲染出比较好的画质,所以抛弃了Unity默认渲染管线Built-in,使用URP进行渲染,当然也可以选HDRP,但考虑到后期项目可能会以OpenGL的渲染模式发布,以防万一最终才决定使用URP。本篇不针对 VRTK 和 URP 分别介绍,具体他们的作用可自行百度哈。

版本信息:

  • Unity 2019.4.10
  • VRTK 3.3
  • SteamVR 1.2.3
  • URP 7.3.1

2.在项目中使用VRTK和URP

       个人建议先导入VRTK和SteamVR包,再导入URP包,因为VRTK和SteamVR本身一起导入可能会出现BUG,单独导入URP可能也会出现一些问题,确保VR插件没问题后再导入URP包也可以很好的定位问题出在哪里。

       全部导入完成后需进行URP的一些设置,如果直接在Unity Hub创建URP的工程可忽略此步。

    1)创建URP渲染管线

        在Assets右键—Create—Rendering—Universal Render Pipeline—Pipeline Asset(Forward Renderer),点击后在Assets中自动生成两个URP渲染管线资源。

    2)使用URP渲染管线

        在Editor—Project Settings—Graphics添加新建的URP管线资源。

    3)升级项目材质

        最后一步就是将项目所有材质升级到URP材质,在Edit—Render Pipeline—Universal Render Pipeline—Upgrade Project Mat......。

    4)手柄设置

       上一步已经将项目所有材质进行了升级,在Scene视图中观察没有问题,但头盔运行起来之后发现手柄材质还是无法识别。

       这是因为手柄的模型是项目运行后动态加载出来的,所以需要在非运行状态下设置手柄的Shader为URP/Lit,也可以运行后写个延迟方法动态设置手柄材质。(介入了URP的项目工程所有基础材质都会从Standard替换为Lit)

    5)使用 Volume 后处理

       在Scene视图下右键—Volume—Global Volume创建Volume。

       创建完成后就可以在Volume脚本下添加各种后处理效果了,具体这些选项都可以产生什么样的效果可参考Volume 详解,虽是HDRP,但后处理效果选项HDRP与URP几乎是一致的。

     6)Camera 设置

       到这一步发现后处理组件添加之后可以在Scene视图下观察到变化,但头盔运行起来还是跟没调整一样,这是因为URP导入之后会重写Camera组件,需要在Camera中的Renderer中选择URP渲染器并勾选Post Processing。

 3.其他问题

       在项目中要使用到高亮效果,使用之前一直用的HighlightingSystem发现有问题,应该是不支持URP,具体原因也没去找干脆就换了个支持URP的高亮插件:Highlight Plus 9.1.1,免费资源链接导入完成后还需进行一些设置

       1.将插件导入之后需要运行HighlightPlus_URP_Pipeline.unitypackage导入URP包

       2.导入完成后代码报错,需要修改HighlightPlusRenderPassFeature.cs脚本的代码

       3.将高亮显示配置文件(Highlight Profile)添加到通用渲染管线(Universal Render Pipeline Asset)中Forward Renderer的功能列表中,到此URP可正常使用Highlight Plus高亮插件

       后续如果需要新增效果类插件必须将插件对应的配置文件添加到URP的正向渲染器(Forward Renderer)中,此篇插件描述当作案例参考。

 

http://www.lryc.cn/news/118445.html

相关文章:

  • .bit域名调研
  • Vue数组变更方法和替换方法
  • Centos-6.3安装使用MongoDB
  • Mysql 复杂查询丨联表查询
  • C语言进阶第二课-----------指针的进阶----------升级版
  • 若依vue -【 111 ~ 更 ~ 127 完 】
  • vue-pc端实现按钮防抖处理-自定义指令
  • python解决8皇后问题
  • xcode打包导出ipa
  • 更优雅地调试SwiftUI—借助LLDB
  • 2.4 网络安全新技术
  • 人生天地之间,若白驹之过隙,忽然而已
  • MySQL — MVCC
  • Android模板设计模式之 - 构建整个应用的BaseActivity
  • 浏览器缓存技术--localStorage和sessionStorage原理与使用
  • 无涯教程-Perl - endservent函数
  • MRO工业品采购过程中,采购人员要注意哪些事项
  • Jaeger 教程,OpenTelemetry 教程
  • P1597 语句解析
  • Java课题笔记~ Request请求
  • Untiy Json和Xml的序列化和反序列化
  • springboot在线小说阅读网站的设计与实现
  • 整理mongodb文档:改
  • 【设计模式】单例模式
  • (2)原神角色数据分析-2
  • 138. 复制带随机指针的链表
  • Windows中redis怎么设置密码
  • 租赁OLED透明屏:打造独特商业体验的智慧选择
  • Nacos服务治理—负载均衡
  • flask-----初始项目架构