Unity 云渲染文档
编辑前言
本文档写于2023/7/21,主要介绍Unity云渲染的使用方法,教程内使用的UnityRenderStreaming
版本为3.1.0-exp.5
,若版本更新,文档内容可能会有所变动。
环境要求
Unity版本要求
- Unity 2020.3
- Unity 2021.3
- Unity 2022.2
操作系统要求
- Windows
- MacOS
- Linux
- ios
- Android (不支持ARMv7)
浏览器要求
浏览器 | Windows | Mac | iOS | Android |
---|---|---|---|---|
Google Chrome | :white_check_mark: | :white_check_mark: | :white_check_mark: | |
Safari | :white_check_mark: | :white_check_mark: | ||
Firefox | :white_check_mark: | |||
Microsoft edge (Chromium based) | :white_check_mark: |
注意:在Safari和iOS Safari浏览器中,WebRTC功能无法在http下使用,必须使用https。
输入系统
UnityRenderStreaming
仅支持Unity
的Input System
,不支持Legacy Input System
云渲染部署
创建Unity项目
打开Unity Hub,点击New
按钮,创建一个新的Unity项目(支持SRP,URP,HDRP)。
UnityRenderStreaming安装
- 在菜单栏中选择
Window
>Package Manager
- 在
Package Manager window
窗口中点击+
按钮,然后选择Add package by name
。如果你使用的是Unity 2020.3
版本,选择通过git URL添加包
- 输入
com.unity.renderstreaming
,3.1.0-exp.5
,然后点击Add
按钮
- 安装包后会自动打开渲染流向导窗口。选择全部修复
UnityRenderStreaming配置
在Unity场景中创建空物体,并命名为RenderStreamingManager
,并在物体上添加以下组件:
添加完成脚本后,按照下方的配置进行设置摄像机与音频的流传输
脚本中视频传输分辨率可在Video Stream Sender
脚本中的Custom Value
变量中设置,视频与音频的传输码率可在Video Stream Sender
脚本中的Bitrate(kbits/sec)
变量中设置
RenderStreaming脚本中的其他设置将在下文中详细介绍
本地测试
根据操作系统下载 UnityRenderStreaming WebApp
下载后,运行WebApp程序与Unity程序,浏览器访问http://127.0.0.1
,选择Receiver Sample
点击播放,即可在浏览器中看到Unity场景
部署STUN/TURN服务器
STUN/TURN服务器是用于在NAT网络中建立点对点连接的服务器,如果你连接双方在同一个局域网内或均有公网ip,可以不用部署STUN/TURN服务器
本文档中使用的STUN/TURN服务器为Coturn,服务器操作系统为
Ubuntu 22.04.2 LTS
安装Coturn
sudo apt-get update
sudo apt-get install coturn
dpkg -L coturn
配置文件路径:
/etc/turnserver.conf
修改配置内容
listening-port=3478 #监听端口
external-ip=【ip】 #公网ip
user=【用户名】:【密码】 #用户名:密码
realm=【域名】 #绑定域名
启动Coturn
前台启动
turnserver
后台启动
service coturn start
初次运行请使用非后台启动,会显示当前运行状态,如果有错误会直接显示在控制台上
验证监听
lsof -n -i4TCP:3478 | grep LISTEN
测试STUN/TURN服务器
在教程编写的时候,Chrome内核浏览器对TURN服务器的支持不是很好,需要使用Firefox浏览器进行测试
访问 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
删除默认的STUN服务器,添加自己的TURN服务器
进行测试,如果测试列表中出现srflx
与relay
,则说明STUN/TURN服务器配置成功
部署Web服务器(信令服务器)
本文档将使用源码部署
UnityRenderStreaming WebApp
服务器,请保证服务器中已安装Node.js
与npm
下载源码 https://github.com/Unity-Technologies/UnityRenderStreaming/tree/main/WebApp
打开 /WebApp/client/public/js/config.js
文件,修改以下内容
export function getRTCConfiguration() {
let config = {};
config.sdpSemantics = 'unified-plan';
config.iceServers = [
{
urls: 'stun:【域名】:【端口3478】'
},
{
urls: 'turn:【域名】:【端口3478】',
username: '【用户名】',
credential: '【密码】'
}
];
return config;
}
将源码上传至服务器,进入WebApp
目录,执行以下命令
npm install
npm run start -- -p 9089
若在npm install时出现错误,请使用以下命令
npm install --legacy-peer-deps
成功开启后,访问http://【服务器ip】:9089
,若出现以下界面,则说明服务器部署成功
云渲染测试
配置RenderStreamingManager
物体上的Render Streaming
脚本
打开浏览器,访问http://【服务器ip】:9089
,选择Receiver Sample
,点击播放,即可在浏览器中看到Unity场景
- 0
- 0
-
分享