树莓派上跑3D录像带店:不用WebGL用纯CSS实现

树莓派上跑3D录像带店:不用WebGL用纯CSS实现

💡 原文中文,约6500字,阅读约需16分钟。
📝

内容提要

Halcyon Video是一个开源项目,将Jellyfin媒体库转化为可探索的3D录像带租赁店。它用three.js构建,支持按需渲染以节省资源,包含布料模拟塑料袋、真实推荐系统和硬核租赁模式。项目提供2.5D纯CSS模式,可在树莓派运行,并支持远程访问。它不接受PR,专注怀旧体验,将情感记忆工程化。

🔎

延伸解读

按需渲染:3D应用的低功耗实践

Halcyon Video 通过按需渲染策略,在用户不操作时完全停止渲染循环,使 CPU 和 GPU 占用接近零。这种架构层面的优化,而非简单的省电模式,为 3D 网页应用在低功耗设备上的运行提供了可行思路。它表明,通过精细控制渲染时机和资源分配,复杂的 3D 界面也能在资源受限的环境中高效运行。

2.5D模式:无WebGL的降级方案

项目提供纯 CSS 的 2.5D 渲染模式,无需 WebGL 即可在树莓派等低性能设备上流畅运行,并支持与 3D 模式无缝切换。这为 Web 应用在兼容性和性能之间提供了新的平衡点,说明在特定场景下,CSS 3D 变换可以成为 WebGL 的有效替代,尤其适合对性能要求不高的交互界面。

推荐系统的真实性原则

Halcyon Video 的店员推荐系统只基于用户真实收藏和观看历史提供可验证的推荐理由,不生成虚假内容。这与当前主流推荐算法形成鲜明对比,后者常依赖黑盒模型和诱导性话术。该设计强调透明和可信,为推荐系统在用户信任度上的提升提供了参考,但可能牺牲一定的推荐多样性。

开源但拒绝PR:个人项目的独特模式

项目源代码开放,但明确不接受 pull request,作者将其视为个人产品而非协作项目。这种模式在开源社区中较为罕见,它允许作者保持对项目的完全控制,同时仍能获得用户反馈和 bug 报告。对于希望分享但不愿承担协作维护成本的开发者,这是一种值得考虑的折中方案。

Q&A

Halcyon Video 是什么?

Halcyon Video 是一个开源项目,它将 Jellyfin 媒体库转换成一个可探索的 3D 录像带租赁店。它使用 three.js 构建,基于 Vite + TypeScript,并可选通过 Tauri 打包为桌面应用。

Halcyon Video 如何节省资源?

Halcyon Video 采用按需渲染策略,当用户不操作时,渲染循环停止,CPU 和 GPU 占用接近零。此外,它还使用 InstancedMesh 减少内存分配,并包含动态分辨率缩放器来调整渲染负载。

Halcyon Video 的硬核租赁模式是什么?

硬核租赁模式模拟 90 年代录像带租赁规则,例如工作日限借两盒,周末限借四盒,超期未还会被锁在门外,直到归还。归还通过投递口进行,系统会打印归还凭条。

Halcyon Video 的店员推荐系统是如何工作的?

店员推荐系统基于真实数据,只提供可验证的推荐理由,例如根据你收藏的影片、导演、演员等。它不会生成虚假内容,并会从你的观看历史中学习偏好。

Halcyon Video 如何处理未拥有的电影?

通过 Jellyseerr 集成,未拥有的电影以空盒子形式展示,带有 REQUEST 标签。你可以请求添加,不感兴趣的长按移除。

Halcyon Video 如何在树莓派上运行?

Halcyon Video 提供 2.5D 纯 CSS 模式,无需 WebGL,可在树莓派上运行。该模式视觉上仍然是一间录像带店,且支持与 3D 模式无缝切换。

Halcyon Video 为什么不接受 PR?

项目作者认为源代码开放但开发过程不开放,这是一个为个人客厅打造的产品,分享出来是因为效果好,而不是寻求贡献者。因此不接受 PR,但欢迎 bug 报告。

Halcyon Video 支持远程访问吗?

支持。通过 WebRTC,服务器端渲染画面传输到手机等设备,客户端仅解码视频流。支持共享镜像和私有实例两种模式。

Halcyon Video 如何实现怀旧体验?

Halcyon Video 将怀旧体验工程化,提供多种店铺布局、装修年代、光照和介质选项,品牌视觉可自定义,旨在唤起 90 年代租片的感受。

🏷️

标签

➡️

继续阅读