WebGL呼吸引导: 6-2-6的交互式体验
Contents
在当今快节奏的数字世界中,心理健康和专注力至关重要。继我们的脑波同步应用取得成功后,我们决定解决幸福感的另一个方面:有意识的呼吸。
我们很高兴揭晓我们最新的Coni WASM应用程序:WebGL呼吸应用 (WebGL Breathing App)。这是一个从零开始构建的视听体验,旨在引导您完成一段平静的6-2-6呼吸练习(吸气6秒,屏息2秒,呼气6秒)。
打造栩栩如生的UI
与仅仅显示一个不断变大圆圈的传统呼吸计时器不同,我们希望构建一些让人感觉有生命力的东西。我们设计了一个交互式菜单,您可以在其中设置您的心境 (Mood)——从平静 Calm(青色)、温暖 Warm(橙色)或专注 Focus(紫色)中选择。

当您开始练习时,背景环境噪音和程序生成的铃声开始播放。这些声音完全由Web Audio API驱动,并由原生Coni函数无缝调度。通过将逻辑与标准JS运行时的卡顿隔离开来,音频保持完美的连贯性且没有抖动。
GPU的力量
在底层,应用程序生成一个由30,000个几何粒子组成的簇,这些粒子在WebAssembly中原生计算和缓存。我们将这些点连同您选择的心境颜色以及一个连续的 u_breath_factor 传递给WebGL着色器。
当您吸气时,球体膨胀,其半径动态缩放,同时其顶点通过直接在顶点着色器中应用的三角正弦和余弦操作而轻柔起伏。颜色强度也会增加,模拟能量的扩张。
当您呼气时,球体收缩成一个紧凑的核心。

;; 我们完全在WASM中计算阶段
(defn update-phase [t phase-text]
(let [cycle-time (fmod t 14000.0)
inhale-time 6000.0
hold-time 2000.0
exhale-time 6000.0]
(if (< cycle-time inhale-time)
;; ... 平滑扩展的数学逻辑
通过将视觉变换卸载到GPU,并在WASM中原生保持严格的状态同步,我们实现了如丝般顺滑的60fps体验,感觉非常自然,而不是机械生硬的。
现在就试试看
我们已将新应用程序部署到我们的WASM应用环境中。您可以直接在这里访问它:
今天为自己花一分钟时间。选择您的心情,聆听环境风铃声,仅仅去呼吸。