计算机科学、软件编程晦涩难懂?Zenva带来沉浸式教学方式
文章相关引用及参考:映维网
本文来自在线学习网站Zenva的创始人,游戏开发者Pablo Farias Navarro
(映维网 2018年09月18日)教导计算机科学并不需要虚拟现实。事实上,市场上没有一款用于教导计算机科学的VR应用程序。Zenva发现,在缺乏直接应用的情况下,很多人都难以理解相应的抽象概念。人类习惯于与自然环境交互,并从交互产生的反馈中学习。但计算机科学缺乏这样的直接反馈回路,所以许多人都难以逾越初始的学习过程。
VR可以创建这样一种模拟,支持我们以一种自然的方式来探索计算机科学概念。为此,Zenva正在研发一款用以介绍计算机科学概念或巩固以前习得知识的应用程序Zenva Sky。
Zenva Sky的其中一个前提是,为计算机科学与编码的教学带来沉浸感和交互性。虚拟现实可以支持用户以一种传统2D或常规3D开发所无法实现的方式来与环境进行交互。
目前Zenva正在制作Zenva Sky的原型,并不断在社区分享他们的最近进展。以下是他们本周最新分享的内容:
VR是一项全新的媒介,所以我们难以提前预知可行和不可行的用例。另外,唯一的判断方式是构建一个真正的VR原型。在线学习网站Zenva的方法论和目标是,在未来两周内继续探索不同的原型和方案,直到发现一个感觉适合的解决方案。
Zenva至今所构建的原型允许他们进行了一定的尝试,并带来了非常有趣的发现。遗憾的是,这同样为他们提出了需要解决的挑战。
1. 硬件与软件
英特尔和微软为Zenva的探索提供了硬件和其他支持,包括搭载英特尔酷睿i7-8809G的Hades Canyon VR NUC (NUC8i7HVK),以及惠普WMR头显开发者版。目前Zenva正在利用Unity引擎在Windows Pro中开发Zenva Sky。
2. 编码你周围的世界
Zenva早前演示了一款交互式体验,其中用户可以将“命令”应用于交互式对象。他们现在扩展了这一概念,改进了UX以便原型可以完全用于VR,无需使用关键字。
2.1 选择一个目标对象
通过控制器,用户可以用“激光指示器”指向一个对象,然后激活一系列的命令。就目前而言,Zenva只是实现了“Move(移动)”命令。
2.2 选择命令参数
在选择命令时,显示相关命令的选项将出现。在这种情况下,用户可以选择要移动的轴和移动的距离。与之前相比,Zenva已经取得了一定的进步:
- 目标对象现在能够显示坐标轴,这样用户就能知道每个轴指向哪里。请注意,Zenva选择使用大多数人所熟悉的右手坐标系。实际上,Unity使用左手坐标系。
- 用户现在可以取消这一操作。
- 通过显示下拉列表,用户可以完全在VR中选择轴或数字(用户原来需要在键盘中输入正确的数字)。
Zenva实现这种空间UI窗口的方式是,在Unity中使用Canvas对象,并将其渲染设置为“世界空间”,这意味着UI将在3D世界中显示(而不是说2D并叠加在屏幕上)。
他们在这些画布中使用Box Collider来读取“激光指示器”。对于激光指示器,Zenva使用了第三版VRTK。
2.3 为Program增加一个指令
Program是要执行的主要指令集。用户可以向其添加不同的命令(现在只有Move)。通过这种方式,用户将能直观地了解何谓命令和程序。这种方法类似于教导小朋友编程的流行机器人所采用的方法。为了区分命令所适用的对象,Program现在显示将要移除的对象截图。
与之前相比,一个主要更新是你可以通过“X”按钮来移除命令,并且能看到对象的截图。
截图在游戏中拍摄并保存到变量。这利用了不渲染至VR头显的另一个camera:将其放置在用户和目标对象之间,把内容渲染到纹理之中,然后再将纹理放置在UI之中。
camera将忽视场景中的特定图层,比如说天空和UI元素。
2.4 执行程序
在执行程序时,所有的命令都将按顺序地应用至相应的目标。如果移动命令与撞击命令相遇,这个命令将结束,然后执行下一个命令。
Zanva在之前已经实现了这一点,而现在唯一的改变是在结束后数秒内将一切都拨回至初始位置。
3. 可以优化的地方?
这个原型非常有助于分析可谓一个合适的基础可编程环境。但是,Zenva发现了以下问题:
- 很难理解距离,特别是如果对象在地面上移动。我们可以在地面上使用网格或3D网格来缓解问题,但这对用户来说感觉过于复杂。
- 它变成一款复杂的空间益智游戏。这绝对不是目标。为了解决所预想的挑战,用户需要使用比学习计算机科学或编程时更多的空间/3D心智。尽管Zenva认为空间技能在创新经济中至关重要,但这并不是这款应用程序的愿景。
- 用户界面变得过于复杂。Zenva发现自己需要点击太多次,而且感觉不够身临其境。这款应用程序的愿景不是将2D UI交互复制至3D环境,而是为VR环境创建自然的交互。
4. 接来下的计划?
Zenva希望探索这个原型的两个变体。好消息是,至今所开发的组件都可以轻松移植到任意一个:
选项一:控制一辆车/机甲
- 用户位于车辆/行走机甲之中,而所有的命令都可应用于车辆。
- 车辆只在水平平面移动。
- 地板提供了网格,因此很容易就能知道你需要移动多少个单位。所有对象都完全适合单元格网格。
- 除了移动和旋转,机甲同时可以激活布尔逻辑门。然后,我们可以介绍这些逻辑门是如何以交互方式工作,而用户必须通过“编码”一个能够解锁它们的序列。
- UI可以是车辆仪表板中的物理按钮和控制杆,因此“点击”将不复存在。
选项二:选择一的“上帝模式”
- 与选项一相同,但用户不位于车内,而是从上方看到网格和车辆。
- 在选项二中,程序运行速度比选项一更快(因为用户不在车内,不存在晕车的风险,因此速度可能更高,但这将以沉浸感为代价)。