ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Unity Render Streaming,3D模型流式云渲染的解决方案

2021-05-29 09:58:44  阅读:759  来源: 互联网

标签:Render 修改 Streaming Unity 版本 运行


Unity Render Streaming是Unity开源的一个高质量、高复杂的3D模型在云端渲染,手机端侧、浏览器显示的解决方案。此解决方案的流技术利用了WebRTC,开发人员甚至可以使用WebRTC包创建自己独特的解决方案。

WebRTC的安装使用我们在此前的博客中说过了,大家可以看我之前的博客查看怎样安装。

好,现在我们开始搭建一个Unity Render Streaming来看看demo的运行。

一、Unity Render Streaming安装部署以及案例的运行

1、首先创建一个工程,在Package Manager 的Advanced中首选勾选上Show preview packages,否则你查询不到Unity Render Streaming。

2、安装Unity Render Streaming,我们安装最新版本3.0.1-preview.1。

3、安装完成之后,我们导入Examples,还是在Unity Render Streaming的安装界面,在右下角点击Import into Project,就可以把Example导入Assets中了。我们就可以跑案例了。

4、接下来我们都知道webrtc client之间需要有个signal server,才能进行连接通信。Unity Render Streaming自己提供了一个web app的服务,能够作为signal server。首先我们可以在github上下载代码。地址: https://github.com/Unity-Technologies/UnityRenderStreaming

5、下载完成之后,运行webapp需要安装npm与nodejs,请自行安装。我们进入WebApp目录,我们点击run.bat进行运行。Webserver默认的监听端口为80,如果你想修改端口,可以打开package.json,修改"start": "node ./build/index.js", 为"start": "node ./build/index.js --port 9000 -w"。点击run.bat就可以运行了。

 

运行结果如下:

6、webapp运行之后,我们可以继续运行Unity Render Streaming的例子了。点击WebBrowserInput场景,点击Render Streaming组件,修改Signaling URL: ws://127.0.0.1:9000,并运行之。

7、我们在浏览器中输入在webapp设置的IP 与端口,比如127.0.0.1:9000。

 

8、点击VideoPlayer Sample,然后运行就可以查看到Unity中渲染的场景了。

当前已经完成了Unity Render Streaming案例的运行,大家就可以行动起来,搭建自己的3D远程渲染服务了。

二、Unity Render Streaming android版本支持

由于Unity Render Streaming还不支持在Android手机版本,会在3.1版本支持,如果大家不着急可以等待官方发布3.1版本支持Android手机。但是,我是比较着急的,就自己尝试修改了Unity Render Streaming代码,来支持android手机上的运行。

1、重新创建一个项目,然后我们找到上个项目中的Unity Render Streaming包的缓存找到,一般都是在项目工程目录的Libray/PackageCache中,我们com.unity.renderstreaming@3.0.1-preview目录拷贝到新的工程的Pakcage目录中。

2、进入com.unity.renderstreaming@3.0.1-preview目录,我们修改package.json文件,把依赖的com.unity.webrtc版本提高到2.4.0-exp.1版本,支持android的版本。

3、修改兼容性代码,首先修改Runtime\Scripts\RenderStreamingInternal.cs文件的第350行,修改函数SendOfferCoroutine,这主要修改的是设置只接收流的方式改变,之前使用RTCOfferOptions option = new RTCOfferOptions { offerToReceiveAudio = true, offerToReceiveVideo = true };来进行设置,新的webrtc版本不支持这种设置方式,修改为

            RTCRtpTransceiver transceiver = pc.AddTransceiver(TrackKind.Video);

            transceiver.Direction = RTCRtpTransceiverDirection.RecvOnly;

修改第447行RTCAnswerOptions改为RTCOfferAnswerOptions。

其他的地方都是修改RTCAnswerOptions改为RTCOfferAnswerOptions。

4、我们知道webrtc只支持ARM64。所以需要进行配置,Build Settings->Android->Player Settings->Player->Other Settings,找到Scripting Backend,把Mono更改为IL2CPP, 把ARM64勾选上。然后在编译到android手机上,就可以正常运行了。当然在配置之前,先Switch Platform一下,否则你无法配置。

最后

一个高质量、高复杂、无法在各种端侧渲染的3D模型,我们可以使用Unity Render Streaming在云端渲染,端侧呈现的解决方案。为以后VR/AR端边云协同渲染提供了一个解决方案,有值得研究的价值。

标签:Render,修改,Streaming,Unity,版本,运行
来源: https://blog.csdn.net/grace_yi/article/details/117378736

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有