[计算机] Unity3D研究院之3D界面与2D界面的结合

查看:1180 |回复:11 | 2021-4-15 19:11:16

您需要 登录 才可以下载或查看,没有账号?注册

x

项目中已经全面采用3D与2D结合的方式来制作UI,3D界面的透视感会更强。但是有一部分UI还必须是不带透视的,所以需要采取正交与非正交摄像机结合的方式。3D界面有两种方式,第一种是需要进行屏幕自适应的,另一种不需要与屏幕自适应,我姑且把第一种称假3D界面,第二种称真3D界面。


01.png

假3D界面的效果是,Image具有透视关系,旋转后有近大远小的效果,而且还能与屏幕进行自适应,做法很容易直接将Camera改成头摄像机就可以。


02.png

此时对Image进行旋转就会有透视关系,而且还能与屏幕自适应。


现在问题来了,如果场景有3D模型,比如给模型头顶要画一张图,图片和模型一样也需要有透视关系,这时候用假3D界面的就不行了,因为图片自适应以后就无法和模型的位置对上的,此时我们要引入一个新的方法纯3D界面。

为了让Image和3D物体坐标单位统一,首先把Canvas的Scale缩小100倍(UI被放大了100倍),然后将RenderMode改成WorldSpace

这时候Image和Text不需要调整width和hight,缩放单位和Cube的3d世界单位完全一致

无论真3D界面还是假3D界面,现在又面临一个问题,如果在同一摄像机同时看3D物体和UI就会产生渲染排序的问题,这会影响到Alpha Blend的结果。

半透明物体是不画深度的,对于UI来说全都是半透明,如果想做一种效果,背景图是UI,前面放个3D角色特效、最前面在放UI,这种叠层的方式就会出问题。因为UI是优先SortingOrder然后才是RenderQueue(在URP下是Priority)无论怎么改RenderQueue也得不到正确的结果

UI因为要处理层级就会修改Canvas的SortingOrder,这样界面的SortingOrder的值就比3D模型大,这就会先画3D模型,然后在画UI,最终显示结果就会出错。所以要给MeshRender修改它的SortingOrder,这样UI、粒子、模型全都统一了SortingOrder作为单位,就好调层级了。

最后就是摄像机的组合了,调整好顺序就万事大吉了。
                                                                                                                                  


评分

参与人数 1活跃度 +15 展开 理由
蒙薪忑哮虱 + 15 【感谢】楼主分享的内容!很棒!

查看全部评分

2021-4-15 19:11:16  
 赞 赞 1

使用道具 登录

11个回答,把该问题分享到群,邀请大神一起回答。
2#
带透视?
回复 收起回复
2021-4-16 09:34:05   回复
 赞 赞 1

使用道具 登录

3#
原来老哥也是大佬。

评价

刚看到回复~我那时候为了做技术文库的文章,然后转发了两个,结果搞错板块。。。然后重新发了两个  发表于 2021-4-26 19:34
回复 收起回复
2021-4-17 20:18:16   回复
 赞 赞 1

使用道具 登录

4#
感觉站内好像是建模的大佬多、游戏相关的大佬多。感觉我一直误解了网站真正面向的群体了。

评价

https://www.element3ds.com/forum.php?mod=viewthread&tid=724 看到界王发的链接,才知道还有个文章描述  发表于 2021-4-26 19:35
回复 收起回复
2021-4-17 20:19:35   回复
 赞 赞 1

使用道具 登录

5#
回复 收起回复
2023-3-1 12:10:28   回复
 赞 赞 1

使用道具 登录

6#
厉害
回复 收起回复
2023-8-30 09:39:44   回复
 赞 赞 0

使用道具 登录

CG 游戏行业专业问题

程序逻辑文章算法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表