NerdLens:用纸板 VR 镜像您的电脑
将您的电脑屏幕放入您已经拥有的耳机中。一个用于 iPhone 和 Google Cardboard 的有线开源 VR 桌面实验。NerdLens 捕获您的桌面,将其压缩为 JPEG 帧,通过 USB 发送这些帧,并在立体 Cardboard 视图内的虚拟屏幕上呈现它们。无需昂贵的耳机,无需云流媒体,仅需一部手机,一个纸板观察器和可以说是不合理的好奇心。重要提示:NerdLens 是一个早期的概念验证,而不是经过打磨的消费应用。目前的移动项目针对 iOS,要求源构建,并最适合黑客和实验。它能做什么:将选定的显示器或窗口以 10-60 FPS 可配置目标流入 VR,通过 iproxy 在有线 USB 通道上保持流量,显示实时预览、连接状态、帧计数、分辨率和目标 FPS,在不离开耳机的情况下将虚拟显示器移动得更近或更远,在一次观看会话期间保持 iPhone 清醒。工作原理流程图: A["桌面或窗口"] --> B["Svelte 捕获 UI"] B -->|"JPEG 帧"| C["Tauri / Rust 主机"] C -->|"TCP :12345"| D["iproxy USB 通道"] D --> E["Unity iOS 客户端"] E --> F["VR 显示上的纹理"] F --> G["Google Cardboard"] B -->|"距离设置"| C 加载:手机运行 TCP 服务器;桌面主机连接到 localhost:12345 ,而 iproxy 将其转发到连接的 iPhone。每个消息以一个字节的类型开头,后跟大端负载长度和负载本身。类型 负载 目的 0 无 保持活动,由客户端保留 1 JPEG 字节 替换 VR 中显示的纹理 2 UTF-8 JSON 更新查看器设置,例如显示距离 快速开始:您需要 macOS 和 Xcode 一部运行 iOS 13 或更高版本的 iPhone 一个与 Google Cardboard 兼容的观察器 一根 USB 数据线 Unity Hub,Unity 6000.1.5f1 和 iOS 构建支持 Bun、Rust 和 Tauri 系统先决条件来自 libimobiledevice 的 iproxy 通过 Homebrew 安装 iproxy:brew install libimobiledevice 然后克隆项目:git clone https://github.com/ThatXliner/NerdLens.git cd NerdLens 1. 构建 iPhone 客户端:在 Unity Hub 中使用 Unity 6000.1.5f1 打开 Test0 目录。打开 Assets/Scenes/SampleScene.unity。将构建目标切换到 iOS,然后构建 Xcode 项目。在 Xcode 中打开生成的项目,选择您的开发团队,连接您的 iPhone,然后在设备上运行该应用程序。应用程序启动后,将手机放入您的 Cardboard 观察者中。Google Cardboard XR 包已经在 Unity 项目中声明,并将由 Unity 包管理器提取。2. 打开 USB 通道:连接并信任 iPhone,保持 NerdLens 移动应用运行,然后在另一个终端中启动通道:iproxy 12345 12345。保持此进程在整个会话中运行。3. 启动桌面主机:cd desktop bun install --frozen-lockfile bun run tauri dev 在 NerdLens 中:选择连接。选择开始录制并选择一个显示器或窗口。戴上耳机。使用距离滑块舒适地放置屏幕。就这样。您的显示器现在正在佩戴着显示器。开发:从桌面/运行以下命令: # 仅启动 Svelte 前端 bun run dev # 类型检查前端 bun run check # 构建前端 bun run build # 运行完整的桌面应用 bun run tauri dev # 验证 Rust 主机 cargo check --manifest-path src-tauri/Cargo.toml 项目地图 NerdLens/ ├── desktop/ # Tauri 2 + Svelte 5 屏幕流主机 │ ├── src/routes/+page.svelte # 捕获控件、预览和统计 │ └── src-tauri/src/lib.rs # TCP 协议、重试和 Tauri 命令 ├── Test0/ # Unity 6 iOS/Cardboard 客户端 │ ├── Assets/ReceiveVideo.cs # TCP 服务器和帧/设置解码器 │ └── Assets/Scenes/ # VR 场景 ├── JOURNAL.md # 原始构建日志 └── Logo.png 排错:主机说它无法连接:在选择连接之前启动 iPhone 应用。确认手机已解锁、可信任并在 USB 上可见。确保 iproxy 12345 12345 仍在运行。检查没有其他程序正在使用本地端口 12345。iOS 构建不会签名:打开生成的 Xcode 项目并选择您的 Apple 开发团队。如果 Xcode 报告冲突,请为应用程序提供一个唯一的 bundle 标识符。确认连接的手机已启用开发模式。流媒体冻结或停止:在桌面主机中停止并重新启动屏幕捕获。重新启动 iproxy,然后从 NerdLens 中断开并重新连接。尝试降低目标 FPS;全分辨率 JPEG 编码在此原型中故意简单。视图不舒服:在把手机放回观察器之前调整距离滑块。定期休息。此原型尚未包括完整的舒适度校准流程。路线图:更顺畅、更低延迟的视频传输,双端更好的连接和错误反馈,自动设备发现和 iproxy 管理,显示放置控制和轴锁定,打包的桌面和移动发布。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡