模型在UI上显示

接到的任务需求是在将3d模型的内容在UI上显示

前言

梳理了目前有3个种方式,当然没有好坏之分,只有合适与否。在开源项目中SomeTips的Scenes文件夹中,加入3DUIWayNo1-3的场景,看到以上的实现方式。

UI和场景的混合实现

Camer是skyBox直接与UI混合。如果在放在UI节点下,因为在同一层级下,通过控制Z值设置前后的关系。

RenderTexture

使用Rendertexur,Camera单独照模型,摄像机的内容放到RenderTexure,在UI界面上放入Raw Image。要设置渲染层都为RenderTexture。
renderTexture的方式,可以满足在两个不同的层级之间的需求。问题是美术效果上,需求要对于效果做shader上处理。用Camera和原来的在Camer下有色差,以及如果涉及粒子特效。粒子的效果的衰减。也有研究自己写shader解决Alpha的问题。

原因在于默认的粒子效果使用到的shader中使用了ColorMask RGB,所以只有RGB三个通道的值被存入了缓冲,而没有写入A通道的值, 所以我们得到的texture其实没有粒子的alpha信息,由於使用了ZWrite Off,所以也沒有粒子的深度信息,当我们把这张纹理拿出来显示的时候,由于某些粒子所在位置alpha值为0,所以通过alpha预存得到的RGBA值是(0, 0, 0, 0),所以最后也就看不到颜色了。

对用的解决办法是将shader中的ColorMask RGB改为ColorMask RGBA,写入粒子的alpha信息就行了。

Camera混合

使用多个摄像机混合,但要同时要求Camera都是深度模式,需要脚本去改变camera的depth值。另外渲染的camera的depeth要大于UICamera的。好处在于用的时候加载,在不用的时候就卸载了。方便自己的管理。

总结

自己项目中选择第三种,原因是在需要在不同的场景下打开,如果是美术效果最好,当然是单独场景最好。而且背景上有更大的美术发挥空间。问题在于场景Loading会有点奇怪,不合乎策划设计的初衷,体验上有转场的感受。
研究了下守望先锋的宝箱,其实在同一个场景里,切到了场景某个点,进行操作的,没有加载的过程。如果在场景某个点作为开启的位置,目前多个场景都要处理。带来更多的美术工作量。后期需要美术管理反而变多了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值