优秀的虚拟现实场景所需要具备的特点:

  真实感、沉浸感、舒适性、流畅性。

  VR的这些特点上有其它媒体所不具备的优势,主要通过硬件来实现。

VR 的沉浸感让用户置身于周围世界,也引发了一些独特的症状:

  眼前庭紊乱,根源是内耳的感受与实际看到的产生了差异,是我们维持稳定的关键器官。

  此时流畅性就变的更加重要,不仅影响体验质量还会引发晕眩。

Unreal 开发VR的注意事项:

  交互应直观顺手,使用动作控制器完成时最为直观,因为能模拟用户双手。

  如果需要为场景添加交互,应该让它们与环境融为一体,而不是传统屏幕菜单或2D界面,使用真实操作,如电梯按钮或放置在场景中的全息3D界面。

  最后考虑在场景中添加环境空间音效,如卧室音乐、室外车流声音。

在 VR 体验中移动是个难题,用一些设备如跑步机能帮我们实现,大部分是手柄控制。

常见的运动控制方式是,凝视操控和运动操控。凝视操作通常搭配Google cardboard设备,操作按钮很少或没有,通过凝视来移动或交互。

运动控制器是当前最佳的 VR 交互和移动方案,就是模拟双手,检测握拳、手指指向等,就像游戏柄一样还拥有额外按键可供操作。

运动控制器还衍生出其它设备可绑在腿上或其它部位。

Unreal Studio 最佳实践:

VR 需要高帧率才能保证体验,通常要高于每秒 90帧 以上,项目分辨率是 2160x1200,通常适用于 Oculus Rift 或 HTC Vive.

保证帧率,第一种方法是使用正向渲染,而非延迟渲染。

在为 Oculus RiftHTC 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] 虚拟现实理论与最佳实践的更多相关文章

  1. RHCS集群理论暨最佳实践

    RHCS集群理论暨 最佳实践 什么是集群?     集群是一组(>2)相互独立的,通过高速网络互联的计算机组成的集合.群集一般可以分为科学集群,负载均衡集群,高可用性集群三大类.     科学集 ...

  2. 理解RESTful:理论与最佳实践

    什么是 REST 什么是 RESTful Richardson 成熟度模型 RESTful API 设计最佳实践 补充:HTTP 状态码及说明 什么是 REST REST 一词,是由 HTTP 协议的 ...

  3. atitit. 日志系统的原则and设计and最佳实践(1)-----原理理论总结.

    atitit. 日志系统的原则and设计and最佳实践总结. 1. 日志系统是一种不可或缺的单元测试,跟踪调试工具 1 2. 日志系统框架通常应当包括如下基本特性 1 1. 所输出的日志拥有自己的分类 ...

  4. 《AngularJS深度剖析与最佳实践》简介

    由于年末将至,前阵子一直忙于工作的事务,不得已暂停了微信订阅号的更新,我将会在后续的时间里尽快的继续为大家推送更多的博文.毕竟一个人的力量微薄,精力有限,希望大家能理解,仍然能一如既往的关注和支持sh ...

  5. Atitit.log日志技术的最佳实践attilax总结

    Atitit.log日志技术的最佳实践attilax总结 1. 日志的意义与作用1 1.1. 日志系统是一种不可或缺的单元测试,跟踪调试工具1 2. 俩种实现[1]日志系统作为一种服务进程存在 [2] ...

  6. Canvas 最佳实践(性能篇)

    Canvas 想必前端同学们都不陌生,它是 HTML5 新增的「画布」元素,允许我们使用 JavaScript 来绘制图形.目前,所有的主流浏览器都支持 Canvas. Canvas 最常见的用途是渲 ...

  7. RESTful API 设计最佳实践

    背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个"万能"的设计标准:如何鉴权?API ...

  8. 腾讯优测优分享 | 探索react native首屏渲染最佳实践

    腾讯优测是专业的移动云测试平台,旗下的优分享不定时提供大量移动研发及测试相关的干货~ 此文主要与以下内容相关,希望对大家有帮助. react native给了我们使用javascript开发原生app ...

  9. 探索react native首屏渲染最佳实践

    文 / 腾讯 龚麒 0.前言 react native给了我们使用javascript开发原生app的能力,在使用react native完成兴趣部落安卓端发现tab改造后,我们开始对由react n ...

  10. ****RESTful API 设计最佳实践(APP后端API设计参考典范)

    http://blog.jobbole.com/41233/ 背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而 ...

随机推荐

  1. 配置Tomcat服务器

    一:修改服务器端口 访问tomcat主页的时候,输入的是localhost:8080,说明tomcat的端口是8080,那么怎么修改端口号呢? 我们要先认识配置文件 用浏览器打开tomcat下conf ...

  2. 记录--为什么要使用 package-lock.json?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前言 随着JavaScript在现代软件开发中的日益重要地位,Node.js生态系统中的npm成为了不可或缺的工具.在npm管理依赖的过程 ...

  3. JavaScript知识总结 终结篇--面向对象,垃圾回收与内存泄漏

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.面向对象 一般使用字面量的形式直接创建对象,但是这种创建方式对于创建大量相似对象的时候,会产生大量的重复代码.但 js和一般的面向对象 ...

  4. TP6框架--CRMEB学习笔记:布置后台管理框架+配置路由

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近在研究一个基于TP6的框架CRMEB,这里分享下我的开发心得 首先在上篇文章中,我们安装了CRMEBphp接口项目,需要可以看这一篇 ...

  5. .net core WPF关于进程打开网页链接报错"文件找不到"

    System.Diagnostics.Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = " ...

  6. 【教程】深入探究 JS代码混淆与加密技术

    引言 在网络世界中,保护代码安全是至关重要的一环.JS代码混淆与加密技术则成为了开发者们常用的手段之一.本文将深入探讨混淆和加密的概念,以及其实现原理和应用方法,帮助读者更好地了解并运用这些技术. 概 ...

  7. PDF的分割与合并

    1.进行PDF切割 python代码如下: # 20220521 # 1.选择要分割的文件 # 2.选择要保存的位置,分割为多个文件时,可自动用页码命名 # 3.输入要分割的页码,可以是一个范围1-2 ...

  8. Java实现两种队列(数组和链表)

    package algorithm; /** @author Administrator @date 2022-09-13 17:50 */ public class QueueLinked{ pri ...

  9. 【Java面试题】Hibernate

    六.Hibernate 50)简述一下 hibernate 的开发流程 第一步:加载 hibernate 的配置文件,读取配置文件的参数(jdbc 连接参数,数据 库方言,hbm 表与对象关系映射文件 ...

  10. 突然连不上Github或者连接超时的解决办法

    问题描述当进行仓库pull或者push时,报错如下(连接失败/被拒绝/超时等): Failed to connect to github.com port 443: Connection refuse ...