janusweb

janusweb

跨平台社交虚拟现实开发框架

JanusWeb是一个开源的Web框架,用于开发跨平台社交虚拟现实应用。该框架支持桌面、移动和VR设备,提供实时协作、3D音频和多种输入方式。基于WebGL和Three.js技术,支持Oculus Rift、HTC Vive等主流VR设备。开发者可使用HTML和JavaScript构建3D环境,支持导入主流3D文件格式,并提供API进行定制。内置网络功能便于开发多人在线虚拟环境,集成游戏手柄、Leap Motion等外设支持。JanusWeb为虚拟现实内容创作提供了开放且可扩展的开发平台,适合各类虚拟现实应用的快速开发和原型设计。

JanusWeb虚拟现实3D环境WebVR开源框架Github开源项目
<p align="center"><a href="https://web.janusvr.com" target="_blank"><img width="480" alt="JanusWeb" src="https://imgur.com/ejvyphR.jpg"></a></p> <p align="center"><b>用于构建社交虚拟现实体验的网络框架。</b></p> <div align="center"> <a href="https://janusvr.com">网站</a> &mdash; <a href="https://vesta.janusvr.com">Vesta</a> &mdash; <a href="https://github.com/janusvr/janusvr-examples">示例</a> &mdash; <a href="https://web.janusvr.com">演示</a> &mdash; <a href="https://github.com/madjin/janus-guide">文档</a> </div>

示例

<a href="https://github.com/janusvr/janusvr-examples/tree/master/360/3"> <img alt="水晶球" target="_blank" src="https://i.imgur.com/mw0Um3C.gif" height="190" width="32%"> </a> <a href="https://www.augmentedperception.com/"> <img alt="增强感知" target="_blank" src="https://i.imgur.com/V6fqjVG.gif" height="190" width="32%"> </a> <a href="https://vesta.janusvr.com/bai/movie-theater-dynamic-lighting"> <img alt="电影院" target="_blank" src="https://i.imgur.com/i1nIXI8.gif" height="190" width="32%"> </a> <a href="https://imgur.com/FX3skXb.gif"> <img alt="拖放" target="_blank" src="https://i.imgur.com/FX3skXb.gif" height="190" width="32%"> </a> <a href="http://www.metacade.com"> <img alt="元游戏厅" target="_blank" src="https://i.imgur.com/9CqBKV5.gif" height="190" width="32%"> </a> <a href="https://vesta.janusvr.com/bepis/mansion"> <img alt="豪宅" target="_blank" src="https://imgur.com/pQAQ4yt.gif" height="190" width="32%"> </a>

特性

  • 使用HTML和JS为桌面、移动和VR设备构建沉浸式3D环境
  • 通过Three.js / WebGL提供渲染功能
  • 通过WebVR API支持Oculus Rift、Vive、GearVR、Daydream和Cardboard
  • 通过内置网络实现所有设备的实时协作
  • 导入Collada、OBJ、glTF和其他流行的3D文件格式
  • 3D定位音频
  • 通过HTML5 Gamepad API支持游戏手柄
  • 支持Leap Motion、Oculus Touch和Vive控制器等手部追踪设备
  • 使用HTML5视频支持2D、sbs3d/ou3d和360度视频纹理
  • 可脚本化的客户端支持多种自定义用途

使用方法

根据您希望对整个系统的控制程度,可以通过几种不同的方式使用JanusWeb。

使用我们的查看器

我们的默认查看器始终可在https://web.janusvr.com/上使用。您可以编写一个包含[JanusVR标记](https://janusvr.com/docs/build/introtojml/index.html)的HTML页面,并将其托管在任何通常用于托管静态网站的地方。任何常规的网络主机、AWS S3静态站点、CDN,甚至更奇特的位置如IPFS分布式文件系统都可以使用。您甚至可以将标记放在PasteBin或PiratePad等网站上。然后只需在我们的查看器中通过在导航栏中输入URL来加载该URL,您就可以直接链接到它,在社交媒体上分享,或将我们的查看器直接嵌入其他网页、博客文章或文章中。

另请参阅下面的使用特定版本的JanusWeb

将我们的脚本引入您的页面

使用上述方法,所有链接都会通过我们的服务器。如果您更愿意链接到自己的服务器,可以将我们的JS引入您的页面,并通过其API将JanusWeb用作可脚本化的客户端。这看起来像这样:

<html> <head> <title>我的JanusVR房间</title> </head> <body> <script src="https://web.janusvr.com/janusweb.js"></script> <janus-viewer> <FireBoxRoom> <Room use_local_asset="room1"> <Object id="cube" pos="0 1 5" /> <Text col="1 0 0" pos="0 2 4">我的第一个房间</Text> </Room> </FireBoxRoom> </janus-viewer> </body> </html>

elation.janusweb.init()函数可以接受多个参数,并返回一个promise,该promise接收客户端的实例。可以通过其API控制此客户端引用。请参阅下面的参数脚本编写部分。

另请参阅下面的使用特定版本的JanusWeb

从ZIP安装

(待完成 - 我们将在发布v1.0后开始提供JanusWeb的zip版本)

从NPM安装

(待完成 - 我们将在发布v1.0后开始提供JanusWeb的官方NPM包)

npm install janusweb

从源代码构建

如果您想从源代码构建JanusWeb,可以从Github上检出并按照以下步骤进行构建:

$ git clone https://github.com/jbaicoianu/janusweb $ cd janusweb $ npm install --only=prod $ npm run build

这将在您的build/目录中提供最新版本JanusWeb的完整构建。然后您可以根据需要修改build/index.html,并按上述建议进行托管。

参数

JanusWeb在初始化时支持几个参数来控制其行为。

<table> <tr><th> 名称 </th><th> 描述 </th><th> 默认值 </th></tr> <tr><td> autoload </td><td> 默认加载URL或等待脚本 </td><td> true </td></tr> <tr><td> crosshair </td><td> 显示玩家准星 </td><td> true </td></tr> <tr><td> homepage </td><td> 用户按下主页按钮时默认跳转的页面 </td><td> https://web.janusvr.com/ </td></tr> <tr><td> networking </td><td> 启用网络功能 </td><td> true </td></tr> <tr><td> picking </td><td> 启用鼠标交互 </td><td> true </td></tr> <tr><td> resolution </td><td> 如果指定,将渲染器限制为指定大小 </td><td> (无) </td></tr> <tr><td> server </td><td> 要连接的存在服务器 </td><td> wss://presence.janusvr.com:5567/</td></tr> <tr><td> shownavigation </td><td> 控制导航栏的可见性 </td><td> true </td></tr> <tr><td> showchat </td><td> 控制聊天的可见性 </td><td> true </td></tr> <tr><td> stats </td><td> 启用渲染性能统计 </td><td> false </td></tr> <tr><td> url </td><td> 默认加载的页面 </td><td> (homepage) </td></tr> <tr><td> urltemplate </td><td> 生成URL的可选模板 </td><td> (无) </td></tr> <tr><td> useWebVRPolyfill </td><td> 启用WebVR polyfill以兼容移动电话 </td><td> true </td></tr> <tr><td> usevoip </td><td> 启用或禁用VOIP功能 (注意 - 由于浏览器尚不支持通过WebAudio 使用Opus,目前已禁用) </td><td> false </td></tr> </table>

脚本编写

初始化客户端后,elation.janusweb.init()返回一个Promise,该Promise提供对客户端的引用。 您可以通过编程控制此客户端来执行各种操作。例如,我们可以让客户端加载一个URL,等待世界及其所有资产加载完成,然后在指定延迟后对世界进行截图:

var pageinfo = elation.utils.parseURL(document.location.href), urlargs = pageinfo.args || {}, hashargs = pageinfo.hash || {}; var url = elation.utils.any(hashargs.url, urlargs.url, 'http://www.janusvr.com/index.html'), delay = elation.utils.any(hashargs.delay, urlargs.delay, 1000); elation.janusweb.init({ url: url, resolution: '1920x1080', showchat: false, shownavigation: false }).then(function(client) { elation.events.add(client.janusweb.currentroom, 'room_load_complete', function() { setTimeout(function() { client.hideMenu(); client.screenshot().then(function(imagefile) { // 通过XHR上传imagefile到某处 console.log('截图完成!'); }); }, delay); }); });

JanusWeb客户端的许多其他方面也可以通过这种方式进行控制。我们的用户总是在想出使用JanusWeb客户端的新颖和创新方法。将它嵌入到你的博客文章中,用它在你的2D网页背后渲染3D内容,在你的虚拟世界中放置一个虚拟安全摄像头,并从任何网络浏览器查看虚拟世界的实时流。通过网络界面控制虚拟世界。这是你可以随心所欲使用的可编程实时元宇宙门户。可能性是无限的!

你甚至可以在NodeJS中运行JanusWeb进行无头服务器端操作。用它来编写一个在元宇宙中漫游的机器人,或者在服务器上运行你的游戏逻辑和物理引擎,为你的世界提供一个权威的状态来源。如果你对此感兴趣,请告诉我们,我们很乐意帮助你完成这个过程(目前这一切都处于实验阶段!)

使用特定版本的JanusWeb

如果你需要加载特定版本的JanusWeb,所有以前的版本都存储在同一服务器上,可以通过构建形如https://web.janusvr.com/<version>/的URL来访问。这在你有一个已知与特定版本兼容的房间时很有用,该房间依赖于已被弃用或更改的功能,或者用于确定是否引入了错误。

JanusWeb版本遵循语义化版本2.0.0规范,格式为<主版本>.<次版本>.<修订版本>。例如,在撰写本文时(2017年3月),当前的稳定版本是1.0.15。因此,如果你想查看这个版本,可以访问https://web.janusvr.com/1.0.15/,如果你想在页面中引入这个特定版本,可以使用```<script src="https://web.janusvr.com/1.0.15/janusweb.js"></script>```。我们还支持最新版本的别名 - 例如,https://web.janusvr.com/1.0/将始终指向最新的1.0版本,https://web.janusvr.com/0.9/指向最终的0.9版本,等等。

贡献

JanusWeb是开源的,我们欢迎任何贡献!请使用GitHub Issues报告错误,所有的拉取请求都将被考虑。我们特别需要文档方面的帮助!

谁负责这个项目?

JanusWeb由James Baicoianu创建,现在是JanusVR公司的官方开源项目。JanusWeb软件及其API根据MIT许可证发布,可以免费用于你能想到的任何用途。如果你创建了什么很酷的东西,请告诉我们!

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多