Immusia(读作 ɪˈmuːziə, 是拉丁语 Immersio (沉浸) 和 Musica (音乐) 的结合) 是我的第一个 Vision Pro App, 也是我的第一个 VR App
本文记录了我的创作理念,和一些实现细节
缘由
之所以想做这样的一个 app, 是因为我由于科幻作品的影响,产生的对 VR 设备的想象。更具体一点,是 Black Mirror。Black Mirror 擅长探讨 高科技对 人文/伦理/社会 的冲击,选材大胆,对我有着比较深的影响。在其最精彩的前几集,多次出现类似 头戴设备的概念,给了观影者极大的想象空间。
核心功能
Immusia 的核心理念始终是 沉浸式 的音乐聆听体验。借助 “概念专辑” 这类已经被大众认可的丰富精神财产,音乐被赋予了更具像化的概念,从而使音乐可视化有了更合理的依据
2D 资产 -> 3D 资产
有大量平面资源可以转为双目3D,动机很自然(Vision Pro 的相册 app 也在后来内置了这个功能), 相关技术也随处可寻,但是视觉效果还是相当可观
3D Player
为了充分发挥 VR 设备的空间优势,我对传统播放器做了以下改动:
- 所有歌词文本都为具有深度的 3D 字体。尽管 Apple 不推荐这么做,我还是坚持使用它,原因是经过实测, depth 似乎赋予了歌词一种真实感
- 歌词的移动方向不再局限于 y 方向,而是可以结合 XY 和 Z。我最喜欢的移动方式,被我称为 “Water Fall”, 歌词会向 -Y 和 +Z 方向移动
Immersive Player
Window Mode
由于 Swift API 的限制,app之间的 沉浸式空间是互斥的,因此纯沉浸式的 app 存在一些局限性。为了达到一个通用音乐播放器的最低要求,我加入了窗口模式,这样用户就可以在使用其他 app 时同时使用 Immusia
窗口模式的大部分 UI 都和系统原生 Apple Music 保持一致。为了更方便查看艺术家信息和专辑信息,在左右两侧分别添加了小窗口。同时,沉浸模式下的 3D 播放器 也被保留。
值得一提的是,为了体现空间感,我没有采用平铺的专辑列表,而是实现了一种非常类似 Apple 在 IPod 上曾经使用过的 Cover Flow 效果。它足够优雅和美观,也不会占用太多资源。
Environments 环境
在 Environment 方面,我早就感到和知晓 RealityKit 的局限性和 Performance 问题,Metal(CompositorService, to be specific) 是最好的选择。然而我没有图形学方面的储备,所以花了一段时间尝试寻找合适的人选(外包团队)进行合作。显然我高估了国内在这一领域的人才储备,总之经过一段时间的尝试并无果之后,我就开始自学 Metal。在 Shadertoy和一些电子教材 的帮助之下,我得以对图形学入门,并创作了一些环境(场景)
Interstellar
Interstellar 是我搭建的第一个环境。在听太空主题的音乐时,脑海里一直有一些关于太空场景的想象,而且静态的太空场景也相对比较容易实现,对当时对图形编程不太熟悉的我来说是一个不错的上手项目
起初我对 Interstellar 的构想比较简单:一个孤单的蓝色星球
但是随着进度不断推进,我的想法越来越多,技术也逐渐成熟,因此我大胆地加入了不同元素:月球/太阳/星星/星云 等
在这个过程中也遇到了很多问题,包括但不限于:
- ColorSpace 的选取
- 透明场景下 BlendMode 和 Alpha 的设置
- 大量复杂 Shader 造成的计算问题,通过简化逻辑和烘焙纹理解决
- CompareFunction 和 Winding 的不一致造成的遮挡错误问题
- …
所幸在 GPT 的帮助下,没有浪费我 太多 的时间
这个场景中的很多元素都是我从 ShaderToy 移植而来,希望 License 不会有很大的问题
在背景音乐的选择方面,此前选择的是现成的 太空背景音乐音效,现在正在考虑 realtime GPU Sound
一些不错的生成结果:
Plastic Beach
Star Gate
一次和朋友闲聊,偶然听他提起正在为新歌制作一段类似 Daft Punk 的《Contact》 末尾的太空音效。我去 Youtube 上找到了一个粉丝为这首歌制作的一版 MV, 里面恰好选取了 《2001: A Space Odyssey》 中主人公 David Bowman 穿越时空隧道(Star Gate) 的片段,这一段视觉效果和音乐的节奏有着非常好的配合
我很喜欢这个场景,于是它成为了我的第二个 Environment idea。
一些想法
- 一个 VR app 涉及的技术栈太多:前端/后端/设计/GPU 渲染/UX 只是我能想起来的几个,而且互联网相对较丰富的也只是平面资源,在空间的视角下,每一部分都可以衍生出新的学问。Vision Pro 用于作为先行 Demo 的 Encounter Dinosaurs, 在 WWDC 上有一个专门的 Episode, 介绍其中的 UX 设计。这是一个全新的领域
- Marketing: 我还没有进行任何形式的 Marketing
- 相关人才的欠缺:国内外在 VR 技术上的 技术和人才累积 似乎根本不在一个水平面上,国内的 App,即使是由大团队诸如 QQ 音乐/ 爱奇艺等,仍显粗糙;然而国外的小团队(最少1个人)都可以做出足够摘取 Apple Design Awards 的 App。这应该与当地电影工业的发展有着最直接的联系