Unity中UI曲面化

本文探讨了在Unity中实现UI曲面化的方法,包括UI沿着曲面分布和每个元素的曲面效果,以增强VR场景中的沉浸感。通过计算平面上的点映射到曲面上的坐标,实现Text和Image的曲面化处理,详细阐述了每个步骤的技术细节和挑战。
摘要由CSDN通过智能技术生成

在VR下面,曲面UI可以提升用户在场景中的沉浸感,获得更好的视觉体验

方案选择

  1. 做一套基于曲面的UI
    我们项目中基本只用到Image和Text两种,Image是比较好处理的,直接将Texture贴到一个曲面的mesh上就可以了,但是Text相对比较麻烦。我们无法简单的取到某一段文字的Texture,必须自己从字体文件里面裁剪每个文字的Texture,然后拼接到一个Texture,然后再将最终的纹理贴到一个曲面mesh上。

  2. 单独将平面UI渲染到一个纹理,然后贴到曲面mesh上
    这个方案在实现曲面化上是没有问题的,但是为了满足VR下面的立体效果,我们两只眼睛看到的东西是有一定差异的,通过这些差异才有立体感,如果是同一个曲面的UI Texture,UI上的一些立体效果会损失(比如UI向前浮动)。另外,如果使用这种方法,我们眼睛看到的UI和真实的UI有很大的差异,需要重新设计凝视输入。

  3. 让UI沿着曲面分布,且每个UI元素有曲面效果
    让UI沿着曲面分布是比较好实现的,只需要计算合理的位置和角度,让UI整体上呈现出曲面的效果。目前有很多VR的曲面效果都是采用这种简单的方法实现的,但是这种方案实现的曲面效果并不是很好,是一种假曲面化的效果。如下图所示,在上下边缘可以看到很明显的直线。

    UI元素沿着曲面分布

    所以在沿着曲面分布的前提下,如果每个”UI元素都有曲面效果“,那么整体上才会看出曲面效果。如下图所示
    UI元素都有曲面效果

结合实现难度和效果,我们选择了方案 3

曲面化中的数学原理

无论是让UI沿着曲面分布,还是实现每个UI自身的曲面效果,实质上都是做同一种数学运算——计算平面上的点映射到曲面上的坐标。
由于我们曲面化是一个圆柱面,圆柱轴心线与Y轴平行,变化前后Y轴坐标是一样的,下面是原理:

掘金不支持数学公式

几何示意图

其中的关键点是 变换前后的长度对应关系弧长与半径的比是角度。上面给出的过程是一种特殊情况,实际过程中会有些变化,比如圆心不在原点,但是都是可以通过以上的方法推导出来结果。

曲面化<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值