AI开发HTML实战系列第93期 | 如何用HTML模拟黑洞吸积盘与相对论性喷流
黑洞吸积盘&相对论性喷流粒子螺旋坠入 · 两极喷发 · 辉光特效 · 轨道控制
用Three.js复现黑洞周围的极端物理现象,视觉与科学的双重盛宴
前期我们给大家展示过一些用HTML模拟粒子效果的动画,可以说非常精彩。
今天我准备给大家分享另外一款,叫做黑洞吸积盘与相对论性喷流。
最终效果:18000个吸积盘粒子螺旋坠入黑洞 + 3200个喷流粒子从两极高速射出 + 开普勒运动 + 动态颜色/亮度 + 辉光后期 + 透镜光晕 + 星空自转 + 全交互式相机。
吸积盘是黑洞吞噬周围物质时形成的高速旋转盘状结构。我们使用18000个粒子模拟气体与尘埃从外向内螺旋坠入的过程,严格遵循开普勒运动定律。
• 角速度 ∝ r^{-1.5}(开普勒运动),内圈旋转速度远快于外圈,最大角速度0.045弧度/帧(60fps基准)。• 径向速度:每粒子独立速度0.002~0.0055/帧,越靠近黑洞径向速度越快,实现连续内流。• 边界重置:当粒子半径 ≤ 0.95时,重置到外圈随机半径(4.0~5.2),角度随机,径向速度重置,形成无限吸积循环。• 垂直湍流:每帧加入±0.008偏移,限制在±0.32内,且内圈垂直厚度自动变薄,模拟盘面压扁效应。
外圈粒子呈红橙色(R:0.9, G:0.4, B:0.2),内圈粒子呈白蓝色(R:1.4, G:1.2, B:1.4),中间线性插值。径向速度越快,颜色额外增亮。配合UnrealBloomPass后期特效(阈值0.1,强度1.3),产生高温等离子体的发光辉光。粒子使用圆形Canvas纹理,AdditiveBlending混合模式,大小0.055。
从黑洞两极高速射出的等离子体喷流,速度接近光速,延伸数光年。我们的模拟使用3200个粒子,从Y轴正负方向起源,向外喷射并循环。
• 起源:从黑洞两极(Y=±0.75,径向半径0~0.6随机)向外射出。• 运动:沿Y轴基础速度0.045 + 随机加成0~0.025(每帧),同时带有横向漂移(driftX/driftZ ±0.018/帧),模拟磁场扭结和螺旋结构。• 循环:最大寿命180帧,超出Y=±5.2范围或寿命终结时重置回原点,重新分配速度、漂移量和生命周期。• 颜色:青蓝色到紫色渐变(R:0.3~0.7, G:0.4~0.9, B:0.8~1.0),越远越偏紫红;大小0.07,AdditiveBlending混合。
喷流粒子同样参与辉光后期,并且两极各有一个动态点光源(颜色#4488ff,强度0.5),光源位置随喷流粒子平均Y坐标上下移动,增强动感。黑洞中心的点光源(#ff4422,强度0.8)强度随时间正弦脉动(0.4~0.8)。
本次提示词极为详细,涵盖了运动方程、边界条件、颜色插值、后期特效、光源动画等多个高难度技术点。以下是完整提示词内容。
请使用Three.js(r128)创建一个黑洞吸积盘与相对论性喷流的粒子模拟场景,要求实现以下所有核心特征: 1. 整体场景设置:深空背景色#010118,指数雾,相机(5,3,8),OrbitControls,EffectComposer+UnrealBloomPass(阈值0.1强度1.3半径0.8)。 2. 黑洞中心:黑色球体半径0.48(微弱红色自发光),半透明红色外壳半径0.62(BackSide,透明度正弦脉动),炽热粒子内环800个绕转摆动。 3. 吸积盘:18000粒子,外半径5.2内半径0.95,垂直厚度内薄外厚。角速度∝r^{-1.5},径向速度0.002~0.0055/帧,半径≤0.95重置。垂直湍流±0.008。颜色外圈红橙内圈白蓝线性插值,径向速度越快越亮。圆形纹理,AdditiveBlending,大小0.055。每帧更新position/color,支持delta time。 4. 喷流:3200粒子,从Y=±0.75径向0~0.6射出,沿Y轴速度0.045+随机0.025,横向漂移±0.018。寿命最大180帧,超出Y=±5.2重置。颜色青蓝→紫渐变,大小0.07,AdditiveBlending。 5. 背景星空:4000静态粒子,范围200×100×120,颜色#88aaff,大小0.06透明度0.4,整体Y轴自转+正弦摆动。 6. 光源:环境光#111122;中心点光源#ff4422强度0.8脉动0.4~0.8;两极动态点光源#4488ff强度0.5跟随喷流平均Y位置;透镜光晕精灵始终面向相机。 7. 视觉装饰:120条辐射射线,半透明橙色,缓慢旋转摆动。动态效果:光晕透明度,内环旋转角度,光源强度,透镜光晕透明度均正弦变化。 8. 交互:OrbitControls支持拖拽/右键平移/滚轮缩放。自适应窗口,抗锯齿,Reinhard色调映射曝光1.2。 9. 性能:BufferGeometry每帧更新position/color,delta time运动一致。输出完整HTML文件。
• “角速度 ∝ r^{-1.5}”—— 精确的开普勒运动,内圈飞速外圈缓慢,产生强烈剪切感。•“径向速度随半径减小而增大”—— 符合引力加速,越靠近黑洞坠入越快。•“边界重置机制”—— 模拟无限吸积流,保持粒子数量恒定。•“UnrealBloomPass + 动态光源”—— 极致还原高温等离子体辉光,视觉核心。•“Delta time自适应”—— 保证不同刷新率下运动速度一致。•“透镜光晕精灵” —— 模拟引力透镜,增加神秘感。
• 黑洞核心:黑色球体包裹着脉动的红色光晕,半透明外壳亮度正弦变化,内环炽热粒子快速旋转并上下摆动。• 吸积盘:上万粒子从外向内螺旋坠入,外圈红橙内圈白蓝,速度差异明显,形成动态漩涡。辉光特效让盘面像燃烧的恒星。• 两极喷流:蓝紫色粒子流从两极高速喷出,横向漂移产生螺旋结构,寿命结束重置,形成连续喷泉。• 星空背景:数千颗星星缓慢自转并摆动,透镜光晕随相机移动,模拟引力透镜。• 交互性:鼠标拖拽可从任意角度观察吸积盘侧面、喷流和视界,滚轮拉近看粒子细节。• 性能:2万+粒子仍保持60fps,得益于BufferGeometry直接更新和delta time优化。
为每个吸积盘粒子存储半径、角度、径向速度、垂直偏移等物理属性;喷流粒子存储速度向量、漂移量、生命周期。每帧根据delta time和运动方程重新计算笛卡尔坐标,然后更新BufferGeometry的position和color。避免频繁创建新数组,性能最优。
EffectComposer + UnrealBloomPass实现辉光。动态光源强度、黑洞光晕透明度、透镜光晕透明度均用Math.sin(time)周期性变化。喷流平均Y位置实时计算,动态调整两极光源高度,让光源跟随喷流浓度中心移动。
每帧计算角度增量:deltaAngle = angularSpeedFactor / (r * sqrt(r)) * deltaTime,径向速度随半径增大而减小,完美模拟开普勒平方反比律。
这种高逼真度的物理模拟不仅炫酷,还可以成为天体物理教学的有力工具。
学生拖拽视角观察内圈飞速旋转、外圈缓慢转动,直接理解“角速度与距离平方根成反比”。修改参数可对比不同引力场。
解释黑洞两极喷射物质而非各向同性,结合磁场扭结和螺旋漂移的视觉表现,帮助理解相对论性喷流模型。
本项目代码是学习Three.js粒子系统和数值积分的绝佳范例。修改粒子数量、颜色映射、径向速度公式等,立刻看到视觉效果变化,激发探索欲。
今天我们完成了一个堪比重磅科学演示的黑洞吸积盘模拟。通过精确的物理方程、高性能粒子系统以及丰富的视觉特效,我们几乎可以在任何现代浏览器中体验到类似《星际穿越》中“卡冈图雅”的视觉效果。代码完全开源,不依赖图片/视频素材,所有内容实时生成。
你可以尝试:1. 加入吸积盘内外阴影,模拟相对论性光线弯曲;2. 为喷流粒子添加拖尾效果(轨迹线或动态mesh);3. 允许用户通过GUI实时调整黑洞质量、粒子数量等;4. 添加第二层薄盘或尘埃环,增强立体感。这些都可以基于现有代码轻松扩展。
关注公众号,后台回复“黑洞”即可免费获取黑洞吸积盘+喷流模拟完整HTML源文件(含Three.js全交互场景)