zoukankan      html  css  js  c++  java
  • [Unreal] 虚拟现实理论与最佳实践

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

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

      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

  • 相关阅读:
    servlet和springMVC框架
    JavaWeb登录、注销、退出、记住用户名和密码-session
    一个实现用户登录注销的小程序,求大神帮忙解救 ...
    log4j:WARN Please initialize the log4j system properly解决办法
    接上一篇
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds...
    classpath
    跳转页面代码
    程序猿学习路线
    Calendar
  • 原文地址:https://www.cnblogs.com/farwish/p/15585822.html
Copyright © 2011-2022 走看看