Unity云渲染

曾经做过一个数字孪生项目,里面涉及到核心模块是3D效果渲染,刚开始的时候对业务场景不是非常清晰或者交流不够充分,在技术选型上走了很多弯路,也浪费的大量的时间,不过也得到了很多宝贵的实践经验和教训。

         第一次尝试,刚开始参与做3D模块的小伙伴选型了threejs来做3D效果的渲染,当然如果只是单独看做3D效果threejs肯定是可以的,问题的关键是数据还不小。当时他基于这种方式通过文件流的方式作为数据的输入,threejs对这个数据进行加载渲染,当时就卡的不行了,后来放弃了这种方案。

         第二次尝试,另外一个小伙伴基于这种场景技术选型了Unity技术来实现该需求。Unity是基于C#语言来做的开发,可以做客户端方式的3D效果,当然也是可以生成为html被web应用集成,因此选择了Unity生成html的方式进行实践。刚开始做效果的时候也是使用少量的数据做测试的,在Unity中通过http方式远程获取业务数据作为输入,当下载完成之后再进行3D渲染,后来发现3D效果的业务数据可不是一般的多,而是数据量非常大,可以达到上百G的数据,而且还要在很短的时间内就要完成渲染,按照当前的方案无论如何是达不到效果的。因此该方案又被放弃了。

         第三次尝试,山重水复疑无路,柳暗花明又一村。正当冥思苦想寻找思路的时候,有人提出有没有云渲染的方法,后来经过一番资料的查找,发现Unity确实有云渲染的解决方案。其核心技术就是Unity Render Streaming,这也是官方提供的Unity云渲染的解决方案。该解决方案的核心思路就是在服务端上产生了大量的业务数据,产生业务数据的生成器和Unity部署在一台机器上,不经过海量数据的网络传递,也不经过大量文件的IO的读写,产生数据的同时直接传递给Unity,通过Unity进行实时消费渲染之后,通过视频流的方式传递到浏览器端,这样就根本减少了浏览器端的消耗,从而达到了效果。

1Web浏览器将Offer SDP发送到 Web 服务器

2Unity检查Web服务器是否有未处理的Offer SDP,并接收任何找到的

3UnityAnswer SDP发送到Web服务器

4Web浏览器检查Web服务器是否有未处理的Answer SDP并接收任何找到的

5Web浏览器将ICE Candidate发送到Web服务器

6Unity检查Web服务器是否有未处理的ICE Candidates并接收任何找到的

7UnityICE Candidate发送到Web服务器

8Web浏览器检查Web服务器是否有未处理的ICE Candidate并接收任何找到的

参考资料:

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/best-practice-for-unity-remote-rendering

https://blog.csdn.net/wuquanl/article/details/123643685

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

疯癫的老码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值