前言
大家好,我是Mark。
趁放假有时间记录一下最近在研究的云渲染解决方案,看了几家云渲染厂商收费都不便宜呐秉着没钱还要实现效果的目的。最终目标锁定到 Unity 的 Renderstreaming 看文档应该是19年出来的,话不多说开搞
官方文档:Unity Render Streaming GitHub项目:GitHub-UnityRenderStreaming
一、最终效果
PC端渲染画面
移动端渲染画面

二、安装 WebServer
Release 3.1.0-exp.7 · Unity-Technologies/UnityRenderStreaming (github.com)
上述链接为官方提供的 WebServer,根据自己的系统下载对应的
下载完成双击运行即可
如果端口被占用或想更改为其它端口可以通过cmd来实现指定端口启动
Win+R输入cmd 回车cd C:\xxx\xxx或 通过在文件栏中输入 cmd 回车实现同样效果(跳转到存放 webserver.exe 的文件夹下)webserver.exe -p 8088(将8088端口用作参数传递 WebServer 回车启动服务)

当然,如果你想编译自己的 WebServer 也是可以的,但在这之前你可能需要检查自己的电脑看是否有 Node.js 你可以使用上文中提到的 cmd 命令来检查
node -v(如果你已经安装了 Node.js,这个命令将显示你安装的 Node.js 版本号)- 如果你没有看到 Node.js 版本号,你可以从 Node.js 官方网站下载并安装它 Node.js
- 安装 Node.js 后,你可以通过再次运行
node -v来验证安装是否成功
完成后上述操作后你还需要将上文中提到的 [源码](Release 3.1.0-exp.7 · Unity-Technologies/UnityRenderStreaming (github.com)) 下载并解压。解压后找到文件夹中的 WebAPP ,同样你需要使用 cmd 命令指向该文件夹。在正式编译之前你还需要安装一些依赖
- 输入
npm install安装依赖(如果安装太慢可以考虑使用国内镜像npm config set registry http://mirrors.cloud.tencent.com/npm/) - 如果替换了镜像地址需要再执行一次
npm install(如果安装成功则可忽略这步) - 输入
npm run build构建 WebServer - 输入
npm run start启动 WebServer
如果没问题就可以使用 npm run pack 打包成 exe 文件下次启动服务就能方便很多了

三、安装 RenderStreaming
导航栏 -> Window -> Package Manager
点击 + 按钮,选择下方菜单中的 Add package by name... 按钮
将 com.unity.renderstreaming 填入Name输入框中,点击 Add 按钮等待下载导入…
导入结束会提示需要用到新版输入系统,点击 Yes 等待Unity重启…
重启后会弹出配置窗口,点击 Fix All 等待设置完成。设置完成后默认所有选项都会被打上绿色勾,如果有设置未成功则会有错误信息。(一般不会出现什么错误)

四、配置 RenderStreaming
在任意场景下新建空物体命名为(该命名可随意)UnityRenderStreaming
选中 UnityRenderStreaming 物体在 Inspector 面板中点击 Add Component 按钮,给该物体添加SignalingManager Broadcast VideoStreamSender 脚本,如果有音频的需求则添加 AudioStreamSender 脚本
设置脚本参数如下

五、运行测试
完成上述操作后启动,启动 WebServer 然后运行 Unity 。并打开浏览器输入地址 127.0.0.1:8088 端口根据自身设置输入,笔者在启动服务时设置的端口为 8088 。打开浏览器后点击 Receiver Sample 进入渲染流网页
点击页面的播放按钮,如果你没有改 WebServer 的端口则会看到 Unity 的画面已经被成功渲染到网页端了
如果你更改了 WebServer 的端口则需要在 Unity 中进行其它设置,找到添加脚本的物体并在Inspector 面板中点击 Open Project Settings 按钮
在设置面板中点击 Create New Settings Asset 按钮,创建新的配置文件。并给 URL 输入框中的链接后方加上修改后的端口。之后保存并重新运行 Unity ,再次刷新网页就能看到云渲染效果咯~
如果你想让其它人也可以看,需要确保你们处于同一个局域网下。对方使用你局域网下的 IP+端口就能访问你渲染的画面了(查看IP的方法也提供给大家,使用 cmd 输入ipconfig 回车就能看到详情)

六、外网访问
外网访问可参考官方文档 Setting for TURN Servers | Unity Render Streaming
七、问题
Q:画面畸变
A:打包时分辨率需要和Streaming Size中的一致,如果是编辑器则需要调整 Game 视图下的分辨率

八、结束
结束
对你有帮助的话可以点赞、关注、收藏,有问题评论区见哈~
原创不易,若转载请注明出处,感谢大家~