<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Health on NicoLabs</title>
		<link>http://blog.hellonico.info/zh/tags/health/</link>
		<description>Recent content in Health on NicoLabs</description>
		<generator>Hugo</generator>
		<language>zh</language>
		
		
		
		
			<lastBuildDate>Mon, 29 Jun 2026 23:35:00 +0900</lastBuildDate>
		
			<atom:link href="http://blog.hellonico.info/zh/tags/health/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>WebGL呼吸引导: 6-2-6的交互式体验</title>
				<link>http://blog.hellonico.info/zh/posts/coni/breathing-app-webgl/</link>
				<pubDate>Mon, 29 Jun 2026 23:35:00 +0900</pubDate>
				<guid>http://blog.hellonico.info/zh/posts/coni/breathing-app-webgl/</guid>
				<description>&lt;p&gt;在当今快节奏的数字世界中，心理健康和专注力至关重要。继我们的脑波同步应用取得成功后，我们决定解决幸福感的另一个方面：&lt;strong&gt;有意识的呼吸&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;我们很高兴揭晓我们最新的Coni WASM应用程序：&lt;strong&gt;WebGL呼吸应用 (WebGL Breathing App)&lt;/strong&gt;。这是一个从零开始构建的视听体验，旨在引导您完成一段平静的6-2-6呼吸练习（吸气6秒，屏息2秒，呼气6秒）。&lt;/p&gt;&#xA;&lt;h3 id=&#34;打造栩栩如生的ui&#34;&gt;打造栩栩如生的UI&lt;/h3&gt;&#xA;&lt;p&gt;与仅仅显示一个不断变大圆圈的传统呼吸计时器不同，我们希望构建一些让人感觉有生命力的东西。我们设计了一个交互式菜单，您可以在其中设置您的&lt;strong&gt;心境 (Mood)&lt;/strong&gt;——从&lt;em&gt;平静 Calm&lt;/em&gt;（青色）、&lt;em&gt;温暖 Warm&lt;/em&gt;（橙色）或&lt;em&gt;专注 Focus&lt;/em&gt;（紫色）中选择。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../breathe_in_01.png&#34;&#xA;        data-srcset=&#34;../breathe_in_01.png, ../breathe_in_01.png 1.5x, ../breathe_in_01.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../breathe_in_01.png&#34;&#xA;        title=&#34;Breathing App Interface - Calm&#34; /&gt;&lt;/p&gt;&#xA;&lt;p&gt;当您开始练习时，背景环境噪音和程序生成的铃声开始播放。这些声音完全由Web Audio API驱动，并由原生Coni函数无缝调度。通过将逻辑与标准JS运行时的卡顿隔离开来，音频保持完美的连贯性且没有抖动。&lt;/p&gt;&#xA;&lt;h3 id=&#34;gpu的力量&#34;&gt;GPU的力量&lt;/h3&gt;&#xA;&lt;p&gt;在底层，应用程序生成一个由&lt;strong&gt;30,000个几何粒子&lt;/strong&gt;组成的簇，这些粒子在WebAssembly中原生计算和缓存。我们将这些点连同您选择的心境颜色以及一个连续的 &lt;code&gt;u_breath_factor&lt;/code&gt; 传递给WebGL着色器。&lt;/p&gt;&#xA;&lt;p&gt;当您吸气时，球体膨胀，其半径动态缩放，同时其顶点通过直接在顶点着色器中应用的三角正弦和余弦操作而轻柔起伏。颜色强度也会增加，模拟能量的扩张。&lt;/p&gt;&#xA;&lt;p&gt;当您呼气时，球体收缩成一个紧凑的核心。&lt;/p&gt;&#xA;&lt;p&gt;&lt;img&#xA;        class=&#34;lazyload&#34;&#xA;        src=&#34;http://blog.hellonico.info/svg/loading.min.svg&#34;&#xA;        data-src=&#34;../breathe_in_02.png&#34;&#xA;        data-srcset=&#34;../breathe_in_02.png, ../breathe_in_02.png 1.5x, ../breathe_in_02.png 2x&#34;&#xA;        data-sizes=&#34;auto&#34;&#xA;        alt=&#34;../breathe_in_02.png&#34;&#xA;        title=&#34;Breathing App WebGL Particle Sphere&#34; /&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-clojure&#34; data-lang=&#34;clojure&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;;; 我们完全在WASM中计算阶段&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;defn &lt;/span&gt;update-phase [t phase-text]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#66d9ef&#34;&gt;let &lt;/span&gt;[cycle-time (&lt;span style=&#34;color:#a6e22e&#34;&gt;fmod&lt;/span&gt; t &lt;span style=&#34;color:#ae81ff&#34;&gt;14000.0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        inhale-time &lt;span style=&#34;color:#ae81ff&#34;&gt;6000.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        hold-time &lt;span style=&#34;color:#ae81ff&#34;&gt;2000.0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        exhale-time &lt;span style=&#34;color:#ae81ff&#34;&gt;6000.0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (&lt;span style=&#34;color:#66d9ef&#34;&gt;if &lt;/span&gt;(&amp;lt; cycle-time inhale-time)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#75715e&#34;&gt;;; ... 平滑扩展的数学逻辑&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;通过将视觉变换卸载到GPU，并在WASM中原生保持严格的状态同步，我们实现了如丝般顺滑的60fps体验，感觉非常自然，而不是机械生硬的。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
