[Unreal] 虚拟现实理论与最佳实践

优秀的虚拟现实场景所需要具备的特点:
真实感、沉浸感、舒适性、流畅性。
VR的这些特点上有其它媒体所不具备的优势,主要通过硬件来实现。
VR 的沉浸感让用户置身于周围世界,也引发了一些独特的症状:
眼前庭紊乱,根源是内耳的感受与实际看到的产生了差异,是我们维持稳定的关键器官。
此时流畅性就变的更加重要,不仅影响体验质量还会引发晕眩。
Unreal 开发VR的注意事项:
交互应直观顺手,使用动作控制器完成时最为直观,因为能模拟用户双手。
如果需要为场景添加交互,应该让它们与环境融为一体,而不是传统屏幕菜单或2D界面,使用真实操作,如电梯按钮或放置在场景中的全息3D界面。
最后考虑在场景中添加环境空间音效,如卧室音乐、室外车流声音。
在 VR 体验中移动是个难题,用一些设备如跑步机能帮我们实现,大部分是手柄控制。
常见的运动控制方式是,凝视操控和运动操控。凝视操作通常搭配Google cardboard设备,操作按钮很少或没有,通过凝视来移动或交互。
运动控制器是当前最佳的 VR 交互和移动方案,就是模拟双手,检测握拳、手指指向等,就像游戏柄一样还拥有额外按键可供操作。
运动控制器还衍生出其它设备可绑在腿上或其它部位。
Unreal Studio 最佳实践:
VR 需要高帧率才能保证体验,通常要高于每秒 90帧 以上,项目分辨率是 2160x1200,通常适用于 Oculus Rift 或 HTC Vive.
保证帧率,第一种方法是使用正向渲染,而非延迟渲染。
在为 Oculus Rift 或 HTC Vive 桌面设备开发项目时,应该让可见模型面数总是小于200万面。
最高绘制调用次数 (CPU命令显卡绘制图像次数) 不应超过 1500次,最好低于 1000次。
场景中每个对象代表一次绘制调用,用这个对象数乘以它用到的材质数量,等于绘制调用数。
帧率比分辨率重要,没法保证帧率可以降低头显分辨率以便提升帧率,相对低帧率(引起晕眩),用户对低分辨率的适应力更好。
在 Unreal Studio 中,一种方法是调整控制台变量 r.screenpercentenge 从而降低头显分辨率。
正向渲染中,可以采用多重采样抗锯齿 为多线条和棱角场景带来抗锯齿效果,但不能使用很多高端特效 如屏幕空间特效 后期处理特效 透明效果。
所以需要牺牲特效以换取帧率提升。
帧率 90+ 是保证流畅性的基础数字,如果帧率很低和场景卡顿都会带来晕眩,所以要保证帧率维持在高水平。
永远不要取代用户控制摄像机,头戴显示器 用户应该永远掌控摄像机,这表示我们不应该抖动镜头。
同时避免突然的加速和视野改变,走动速度应低于正常移动速度,避免使用镜头特效(引起晕眩),这些通常是由人眼自身实现。
Refer:Unreal_Studio
Refer:unrealengine.com/zh-CN/onlinelearning-courses/world-building-kickstart
Link:https://www.cnblogs.com/farwish/p/15585822.html
[Unreal] 虚拟现实理论与最佳实践的更多相关文章
- RHCS集群理论暨最佳实践
RHCS集群理论暨 最佳实践 什么是集群? 集群是一组(>2)相互独立的,通过高速网络互联的计算机组成的集合.群集一般可以分为科学集群,负载均衡集群,高可用性集群三大类. 科学集 ...
- 理解RESTful:理论与最佳实践
什么是 REST 什么是 RESTful Richardson 成熟度模型 RESTful API 设计最佳实践 补充:HTTP 状态码及说明 什么是 REST REST 一词,是由 HTTP 协议的 ...
- atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.
atitit. 日志系统的原则and设计and最佳实践总结. 1. 日志系统是一种不可或缺的单元测试,跟踪调试工具 1 2. 日志系统框架通常应当包括如下基本特性 1 1. 所输出的日志拥有自己的分类 ...
- 《AngularJS深度剖析与最佳实践》简介
由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...
- Atitit.log日志技术的最佳实践attilax总结
Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...
- Canvas 最佳实践(性能篇)
Canvas 想必前端同学们都不陌生,它是 HTML5 新增的「画布」元素,允许我们使用 JavaScript 来绘制图形.目前,所有的主流浏览器都支持 Canvas. Canvas 最常见的用途是渲 ...
- RESTful API 设计最佳实践
背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个"万能"的设计标准:如何鉴权?API ...
- 腾讯优测优分享 | 探索react native首屏渲染最佳实践
腾讯优测是专业的移动云测试平台,旗下的优分享不定时提供大量移动研发及测试相关的干货~ 此文主要与以下内容相关,希望对大家有帮助. react native给了我们使用javascript开发原生app ...
- 探索react native首屏渲染最佳实践
文 / 腾讯 龚麒 0.前言 react native给了我们使用javascript开发原生app的能力,在使用react native完成兴趣部落安卓端发现tab改造后,我们开始对由react n ...
- ****RESTful API 设计最佳实践(APP后端API设计参考典范)
http://blog.jobbole.com/41233/ 背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而 ...
随机推荐
- Java 22正式发布,一文了解全部新特性
就在昨晚,Java 22正式发布!该版本提供了 12 项功能增强,其中包括 7 项预览功能和 1 项孵化器功能.它们涵盖了对 Java 语言.API.性能以及 JDK 中包含的工具的改进. 下面就来一 ...
- 【Leetcode】300. 最长递增子序列
题目(链接) 给你一个整数数组nums,找到其中最长严格递增子序列的长度. 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序.例如,[3,6,2,7]是数组[0,3,1 ...
- 开发必会系列:JavaEE持久层框架对比与hibernate主键生成策略总结
一.持久层框架对比 ORM框架:即对象关系映射.它把数据库表映射到pojo类,然后通过对类的操作来实现对数据库的增删改查,sql语句自动生成. 对于代码开发者来说,就是在代码里先创建数据库连接对象,然 ...
- [MAUI]集成高德地图组件至.NET MAUI Blazor项目
@ 目录 前期准备:注册高德开发者并创建 key 登录控制台 创建 key 获取 key 和密钥 创建项目 创建JS API Loader 配置权限 创建定义 创建模型 创建地图组件 创建交互逻辑 项 ...
- 聊聊ShareGPT格式的微调数据集
转载请注明住处:https://www.cnblogs.com/zhiyong-ITNote 概述 ShareGPT格式的数据集中,一般是如下格式: [ { "conversations&q ...
- QT数据库学习笔记
简介 QT通过模块化管理,对于某种模块需要添加对应的模块实现.QT SQL也是需要增加对应的模块来实现.QT数据库的层次关系为: 驱动层:数据库到SQL语言之间的桥梁 SQL API层: SQL语句的 ...
- Windows系统使用ODBC驱动访问KingaseES数据库及常见问题解决
Windows系统使用KingbaseES ODBC驱动访问KingaseES数据库及常见问题解决. 一.获取KingbaseES数据库ODBC驱动: 在官网下载KingbaseES数据库安装包,选择 ...
- #SPFA#洛谷 4042 [AHOI2014/JSOI2014] 骑士游戏
题目 分析 如果我想普通攻击1,那么必须干掉所有产生的其它怪兽,这不由得可以用一个不等式来表示, \(普攻+\sum need<法攻\) 但是所需要消灭的怪兽同样可以这样进行,所以它可能具有后效 ...
- std::format 如何实现编译期格式检查
C++ 20 的 std::format 是一个很神奇.很实用的工具,最神奇的地方在于它能在编译期检查字符串的格式是否正确,而且不需要什么特殊的使用方法,只需要像使用普通函数那样传参即可. #incl ...
- Seaborn结构化图形绘制(FacetGrid)
结构化图形绘制(FacetGrid) 可实现多行多列个性化绘制图形. sns.FacetGrid( data, row=None, col=None, hue=None, col_wrap=None, ...