JanusWeb是另一个开源的、开发人员友好的metaverse编程框架。它专注于创建在web浏览器中运行的3D环境,渲染由Three.js或WebGL驱动。由于JanusWeb专注于3D世界的创建,其范围目前比XREngine更为有限,XREngine旨在成为开发人员的通用metaverse平台。尽管如此,如果创建3D世界是你的主要目标,那么JanusWeb是一个很好的起点。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
有几种不同的方法可以使用 JanusWeb,具体取决于您希望对整个系统进行多少控制。
我们的默认查看器始终在https://web.janusvr.com/上可用。您可以使用JanusVR 标记编写一个 HTML 页面,并将其托管在您通常托管静态网站的任何地方。任何常规的网络主机、AWS S3 静态站点、CDN,甚至更奇特的位置(如IPFS 分布式文件系统)都可以使用。您甚至可以将标记放在 PasteBin 或 PiratePad 等网站上。然后只需在导航栏中输入 URL 即可将 URL 加载到我们的查看器中,您可以直接链接到它,在社交媒体上分享,或者将我们的查看器直接嵌入到其他网页、博客文章或文章中。
另请参阅下面的使用特定版本的 JanusWeb。
使用上述方法,您的所有链接都将通过我们的服务器。如果您更喜欢链接到您自己的服务器,您可以将我们的 JS 拉到您的页面中,并通过其 API 将 JanusWeb 用作可编写脚本的客户端。这看起来像这样:
<html>
<head>
<title>My JanusVR Room</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">My First Room</Text>
</Room>
</FireBoxRoom>
</janus-viewer>
</body>
</html>
该elation.janusweb.init()
函数可以接受多个参数,并返回一个接收客户端实例的承诺。可以通过其 API 控制此客户端引用。请参阅下面有关参数和脚本的部分。
另请参阅下面的使用特定版本的 JanusWeb。
(TODO - 我们将在发布 v1.0 后开始发布 JanusWeb 的 zip 版本)
(TODO - 我们将在发布 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
然后,您可以按照自己认为合适的方式进行修改,并按照上面的建议托管它。
初始化客户端后,elation.janusweb.init()
返回一个 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) {
// upload imagefile somewhere via XHR
console.log('Screenshot complete!');
});
}, delay);
});
});
JanusWeb 客户端的许多其他方面也可以通过这种方式进行控制。我们的用户总是想出新的和创造性的方式来使用 JanusWeb 客户端。将它嵌入您的博客文章,使用它在您的 2d 网页后面呈现 3D 内容,在您的世界中放置一个虚拟安全摄像头,并从任何网络浏览器查看虚拟世界的实时流。通过网络界面控制虚拟世界。这是您进入元宇宙的可编写脚本的实时门户,可以随心所欲。可能性是无止境!
您甚至可以在 NodeJS 中运行 JanusWeb 以进行无头服务器端操作。用它来编写一个在 metaverse 中漫游的机器人,或者在服务器上运行你的游戏逻辑和物理,为你的世界提供一个权威的状态源。如果您觉得这听起来很有趣,请告诉我们,我们将非常乐意帮助您解决这个问题(现在一切都还处于试验阶段!)
如果您需要加载特定版本的 JanusWeb,所有以前的版本都存储在同一台服务器上,并且可以通过构造一个形式的 URL 来访问https://web.janusvr.com/<version>/
。如果您有一个您知道可以使用特定版本的房间,这将很有用,该版本依赖于此后已被弃用或更改的功能,或者确定是否引入了错误。
JanusWeb 版本遵循语义版本控制 2.0.0规范,该规范遵循格式<major>.<minor>.<patch>
- 例如,在撰写本文时(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释放等
[/hidecontent]