一、Networked-Aframe是什么?
简称NAF,底层基于Mozilla的AFrame框架,用HTML和JS编写多用户VR应用程序的框架。
二、特性
-
支持 WebRTC 和/或 WebSocket 连接。
-
语音聊天。音频流让您的用户在应用程序内交谈(仅限 WebRTC)。
-
视频聊天。在应用程序内查看视频流。
-
带宽敏感。仅在情况发生变化时发送网络更新。
-
适用于所有现代桌面和移动浏览器。 Oculus Rift、Oculus Quest、HTC Vive 和 Google Cardboard。
-
可扩展。同步任何 A-Frame 组件,包括您自己的组件,而无需更改组件代码。
三、入门
git clone https://github.com/networked-aframe/networked-aframe.git # Clone the repository.
cd networked-aframe
npm install # Install dependencies.
npm run dev # Start the local development server.
在服务器运行的情况下,浏览 http://localhost:8080
处的示例。打开另一个浏览器选项卡并将其指向相同的 URL 以查看另一个客户端。
四、示例
<html>
<head>
<title>My Networked-Aframe Scene</title>
<script src="https://aframe.io/releases/1.6.0/aframe.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.5.0/socket.io.slim.js"></script>
<script src="/easyrtc/easyrtc.js"></script>
<script src="https://unpkg.com/networked-aframe@^0.12.0/dist/networked-aframe.min.js"></script>
</head>
<body>
<a-scene networked-scene>
<a-assets>
<template id="avatar-template">
<a-sphere></a-sphere>
</template>
</a-assets>
<a-entity id="player" networked="template:#avatar-template;attachTemplateToLocal:false;" camera wasd-controls look-controls>
</a-entity>
</a-scene>
</body>
</html>
如果没有其他人在线,请在两个选项卡中打开
-
Basic
-
Basic with 4 clients
-
Positional Audio
-
Video Streaming
-
Nametags
-
Tracked Controllers
-
More...
更完整的例子:
-
Nametags with UI in SolidJS/Tailwind CSS(GitHub)
-
Realistic animated avatars with UI to choose your avatar(GitHub)
未更新至最新版本:
-
Dynamic Room Name
-
Form to set room and userna