[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”)如何设计的文章,然而 ...
随机推荐
- Spring Boot学习日记14
Thymeleaf 语法学习 简单表达式: 变量表达式:${...} 选择变量表达式:*{...} 消息表达式:#{...} 链接网址表达式:@{...} 片段表达式:~{...} 文字 文本文本:, ...
- 虚拟DOM的理解与总结
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 1. 对虚拟DOM的理解? 从本质上来说,Virtual Dom是一个JavaScript对象,通过对象的方式来表示DOM结构.将页面的状 ...
- 从零开始学Spring Boot系列-集成Kafka
Kafka简介 Apache Kafka是一个开源的分布式流处理平台,由LinkedIn公司开发和维护,后来捐赠给了Apache软件基金会.Kafka主要用于构建实时数据管道和流应用.它类似于一个分布 ...
- 使用Razor模板动态生成代码
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- UE4接口
官方链接 目的 不同Actor对象具有同一个功能,比如角色按F键可以实现开门,开车,与NPC沟通等操作.其本质就是让所有的Actor对象除了继承UObject以外,再继承这个接口类. 接口的声明 宏的 ...
- 美团一面:项目中使用过Redis吗?我说用Redis做缓存。他对我哦了一声
引言 Redis,作为一种开源的.基于内存且支持持久化的键值存储系统,以其卓越的性能.丰富灵活的数据结构和高度可扩展性在全球范围内广受欢迎.Redis不仅提供了一种简单直观的方式来存储和检索数据,更因 ...
- archlinux 时间,时钟设置与详解,时区对应的时间不正确
参照 https://wiki.archlinux.org/title/System_time 1.使用命令查看时间 timedatectl 显示类似 Local time: Wed 2024-01- ...
- 微服务集成Spring Cloud Alibaba Seata (二) 客户端连接
通过上篇文章后我们的Seata服务就部署成功了,如果还不清楚怎么部署或者还没有部署Seata服务的朋友可以看我写的上篇文章进行服务部署.Seata部署步骤:https://www.cnblogs.co ...
- #dp,排列#LOJ 2743「JOI Open 2016」摩天大楼
题目 将互不相同的 \(n\) 个数重排,使得相邻两数差的总和不超过 \(L\) 的有多少种方式. \(n\leq 100,L\leq 1000\) 分析 对于排列的问题,有一种很妙的方法就是从小到大 ...
- #线段树合并#JZOJ 5365 通信
分析 取出一段区间后答案就是虚树边的个数的两倍, 考虑计算\(x\)与父亲的边对答案的贡献, 那么不能够贡献的就是\(x\)的子树下标连续的一段或者是非\(x\)的子树连续的一段, 考虑将\(x\)的 ...