首页 > 编程知识 正文

vmware unity模式,unity的VR场景怎么做

时间:2023-05-06 17:16:29 阅读:116815 作者:1307

在VR上设计用户界面时,需要考虑很多传统画面设计场景中难以发现的问题。 接下来,我们将了解虚拟机开发人员面临的挑战和机遇,并讨论开发此新设备上可用接口的易用性。UI分辨率和外观

DK2的分辨率为1920 X 1080 (每只眼睛960 X 1080 ),Gear VR为2560 X 1440 (每只眼睛1280 X 1440 ),从而在任何占用的像素都小于宽度和高度的屏幕上实现可见的像素化。

需要特别注意UI元素。 始终需要考虑的是,这些元素在VR中显示时有多大。 有一种方法是使用更大或更粗的字体,在设计UI时不使用细线。 细线用VR像素化。UI的类型

画的外面

在非VR项目中,UI经常被盖在游戏画面上,例如显示血量、分数或者其他常见的内容,也称为HUD(Headsupdisplay游戏中玩家常用的状态栏)。 这被认为是“画外”的UI,不存在于游戏的世界中,而是关于游戏的内容存在于玩家中。

这个术语在电影中也有使用。 被称为“画外音”,可能是电影或电视节目的音乐。 但是画外音对你看到的内容应该有意义。 在Unity中,通常通过在UI Canvas控件中选择两种模式:渲染模式:屏幕空间叠加或屏幕空间相机来实现HUD (状态栏)启动

这个路线在VR中一般是没有用的。 我们的眼睛无法聚焦在那么近的物体上。 此外,虚拟机不支持屏幕空间覆盖。

空间UI

我们通常需要在环境中使用全球空间转换器模式来找到我们的UI。 这样,我们的眼睛就可以聚焦在UI上。 也称为空间UI。 要在场景中放置UI,通常需要考虑更多。 如果离用户太近,眼睛就会紧张,如果离得太远,就能看到地平线。 虽然远的地方可以在室外环境下使用,但不适合小房间。 此外,还可能需要适当缩放UI,并根据需要进行动态调整。

如果可能的话,最好将你的UI放在能舒适阅读的距离上,并相应地调整比例。 例如,主菜单的UI:被放置在相距几米的位置,文字和图像很大,便于阅读。

如果将UI放置在一个距离处,可能会发现UI切入到其他物体中。 回顾VR交互文章中有关准星的内容,其中提到了如何创建可以覆盖在其他物体上的材质球,以及VR示例中使用的材质球。 这个shader也可以用于文字,可以防止切入其他物体。

许多开发人员在开始时会将UI附着在相机上,这样当玩家在环境中移动时,UI就会停留在一定的距离上。 这对于准星和其他小东西很有效,但更大的UI要素经常有像眼前举着报纸观察周围一样的效果。 这种情况会引起不适感和头晕。 看看Shooter 360 (靶场)的例子。 在这里,UI在短延迟后出现在画面上,可以让玩家看到周围。 尝试适应UI不固定在屏幕上但视线模糊的环境。

VR给了我们探索沉浸式360度场景的机会。 有时可能需要指出玩家应该看到的特定方向。 在某些场景中,箭头允许玩家单向移动。 这些箭头根据玩家的方向逐渐出现。

这部分位于名为GUIArrows的预设中,易于重用。 他们通过比较头部角度和目标角度发挥作用。 如果头部旋转超出默认角度范围,下面的GUIArrows组件的Show Angle属性),箭头将逐渐填充。 当玩家返回到所需方向时,这些箭头将从屏幕上消失。

画内用户界面

一个替代空间UI的方案是环境本身向玩家显示一些信息。 这可能是墙上的时钟、电视、电脑显示器或科幻枪的全息显示。 这都是画内用户界面。

请看Flayer场景中,宇宙飞船上的用户界面或Shooter (射击目标)场景中的枪:

虽然这可能不像非常严格的图片用户界面,但是有一种合理的方法可以将用户界面附加到物体上,从而使图片用户界面在Unity中运行。

关于UI的内容

这里GamaSutra可以找到对UI类型的彻底分析,但没有提到VR。

UI交互

可以通过调用VR交互中提到的VREyeRaycaster、VRInput和VRInteractiveItem组件来创建监听

了VRInteractiveItem事件的类,来和UI建立基础的交互。


关于这方面的更多信息可以查看VR中的交互,特别是迷宫场景中的开关功能。我们也会在游戏的开始来使用UI交互,可以保证玩家阅读游戏介绍。


更多关于在VR中使用Unity UI的信息,请查看Oculus 博客上的 Unity’s UI System in VR 这篇文章,这里同样提供了一些代码示例。


VR示例场景中的UI

让我们一起看一下上面提到的技术是如何在VR示例场景中用到的。


菜单


场景中的菜单UI使用的自定义的贴图来实现弯曲,封闭的效果。和这些贴图互动用到了“VR中的交互” 这篇文章里提到的同样的方法。


Flayer

静态出现在世界坐标系中的简介和游戏结束UI:



然而,我们选择附着在飞船位置上的世界坐标的UI,来表现与游戏相关的信息, 就是画内UI。


由于用户会经常在画面中看到飞船, 在焦点附近显示一个UI来表现重要数据,这个做法很有道理。


这个UI也会旋转来一直面向摄像机, 避免斜角,保证UI对玩家来说总是清晰可见的。


迷宫

在迷宫场景,我们也会用到空间UI来做介绍和结尾部分:


当开关已经激活的时候,空间UI会用来提示玩家来进行互动。


Shooter 180(Target Gallery, 打靶游戏)


静态的空间UI又一次用在对玩家的简介和结束部分:


就像上面提到的,我们在枪上用画内UI来显示剩余时间和当前分数:


Shooter 360 (Target Arena 打靶场)

最后,空间UI在这里用到了, 但是有一点变化:在动作发生时,例如玩家向周围观察, 我们选择在一段延迟之后再移动UI, 水平旋转来跟上玩家。这是为了让玩家意识到,他们是在一个需要向四周看的场景中。


画内UI在这里的枪上又重用了一次:



VR中字体的自由抗锯齿

一个关于如何设置VR字体自由抗锯齿的方法(可能出于性能的考虑):在 世界坐标系的Canvas(画布)上附加一个Canvas Scaler控件。这个UI应该有一个 “Reference Pixels Per Unit”的属性设置为了1, 然后调整 “Dynamic Pixels Per Unit”直到你看到文字的边缘有了轻微的柔化。这里你可以看出 Dynamic Pixels Per Unit 设置为3 和设置为1.75的区别,前者更锐利一些,后者更柔和一些。



你现在可能对不同类型的用户界面,以及哪种在VR中工作良好,有了一定的了解,也知道了如何克服一些你可能会遇到的特定的挑战。使用 VREyeRaycaster, VRInput, 和 VRInteractiveItem 这些组件,你也可以创建基础的UI交互。


更多信息可以查看 Oculus 官方博客的 “Unity’s UI System in VR”这篇文章。


下一篇文章会带你了解VR中的移动。


版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。