福建体彩31选7开奖: lxqiang87 UI上显示模型时残留轮廓问题

26
回复
3619
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
3375
昨日变化

福建体彩31选7开奖 www.jlh8.com.cn 8

主题

51

帖子

865

积分

Rank: 9Rank: 9Rank: 9

UID
69950
好友
2
蛮牛币
1412
威望
0
注册时间
2015-1-20
在线时间
241 小时
最后登录
2018-9-28

专栏作家

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 lxqiang87 于 2018-5-17 10:43 编辑

在UI上显示模型大致两种方法,一是直接把模型放在UI上渲染,二是另启一个相机(或者commandbuffer)将模型渲染到rendertexture上,然后把rendertexture在UI上当做图片来渲染。

第一种方式由于不利于UI层级管理,大部分项目用的第二种方式。大体方案是指定一个分辨率的rendertexture,赋给渲染模型的camera,相机clearcolor的a设置成0,这样模型存在的像素上a是大于0的。后续混合到UI背景上时使用One OneMinusSrcalpha的blend就能保证保留实体模型,丢弃原背景。


如上图所示,大体上达到要求,但是细心观察能看到模型的周围有一个轮廓边。轮廓边的产生是由于纹理采样的误差导致的。


在填充一个像素的时候,通过uv坐标去采样纹理,但是uv坐标不一定正好指定在一个像素上,还可能(很可能)指定在四个像素之间,这时候硬件会根据周围四个像素插值出这个坐标的颜色。如下图所示,图中的0和1表示纹理的alpha值,我们把它想象成rendertexture中模型实体和背景的边界,红点表示当前要渲染的像素,此时红点的值应该是0到1之间,blend之后是会渲染出背景颜色的,这个漏出的背景颜色就是我们看到的轮廓边。(比如在渲染模型时用的ClearColor是红色,则轮廓边就是红色的)

想要去掉轮廓边,就需要uv坐标正好取在纹理的像素之上,而不是像素之间。要达到这个要求,需要满足两点:1.渲染像素和输入的纹理像素是一一对应的,也就是渲染的quad的分辨率和输入的rendertexture的分辨率必须一致。2.渲染的每个像素要和输入的纹理像素一一对齐,由于分辨率是一致的,所以只要起始像素对齐,也就都对齐了。

分辨率一致的要求比较简单,需要换算一下渲染的UI上的quad的实际分辨率是多少,然后根据这个分辨率去设置rendertexture的分辨率。
像素对齐的要求可以用一个取巧的方法,把纹理采样的方式从Bilinear改为Point,也就是即使没有对齐,但是会找最近的像素,而不是去相邻四个像素去插值。
欢迎来我的github看其他blog:https://github.com/liuxq/blog



7日久生情
1917/5000
排名
4499
昨日变化

0

主题

1333

帖子

1917

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
267381
好友
6
蛮牛币
3208
威望
0
注册时间
2018-2-1
在线时间
258 小时
最后登录
2018-11-6
沙发
2018-5-17 08:47:03 只看该作者
谢谢分享
7日久生情
2373/5000
排名
1551
昨日变化

53

主题

824

帖子

2373

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219600
好友
7
蛮牛币
3271
威望
0
注册时间
2017-4-27
在线时间
674 小时
最后登录
2019-4-12
板凳
2018-5-17 09:10:06 只看该作者
6蛮牛粉丝
1257/1500
排名
2667
昨日变化

0

主题

252

帖子

1257

积分

Rank: 6Rank: 6Rank: 6

UID
279508
好友
0
蛮牛币
2151
威望
0
注册时间
2018-5-2
在线时间
460 小时
最后登录
2019-4-18
地板
2018-5-17 09:10:34 只看该作者
谢谢分享
7日久生情
1831/5000
排名
1771
昨日变化

4

主题

302

帖子

1831

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
98190
好友
3
蛮牛币
3519
威望
0
注册时间
2015-5-7
在线时间
780 小时
最后登录
2018-8-8
5#
2018-5-17 14:45:35 只看该作者
谢谢分享。。。?。?!
7日久生情
3698/5000
排名
1488
昨日变化

0

主题

2138

帖子

3698

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219676
好友
1
蛮牛币
3088
威望
0
注册时间
2017-7-12
在线时间
706 小时
最后登录
2019-4-19

活力之星

6#
2018-5-18 11:53:36 只看该作者
谢谢分享
5熟悉之中
650/1000
排名
9200
昨日变化
1

0

主题

424

帖子

650

积分

Rank: 5Rank: 5

UID
250036
好友
0
蛮牛币
1482
威望
0
注册时间
2017-10-21
在线时间
100 小时
最后登录
2019-4-17
7#
2018-5-18 14:29:10 只看该作者
谢谢分享
4四处流浪
496/500
排名
7132
昨日变化

0

主题

166

帖子

496

积分

Rank: 4

UID
243107
好友
0
蛮牛币
609
威望
0
注册时间
2017-9-13
在线时间
148 小时
最后登录
2019-1-6
8#
2018-5-18 15:04:33 只看该作者
6蛮牛粉丝
1298/1500
排名
2011
昨日变化

21

主题

212

帖子

1298

积分

Rank: 6Rank: 6Rank: 6

UID
44764
好友
0
蛮牛币
300
威望
0
注册时间
2014-9-13
在线时间
387 小时
最后登录
2019-4-4
9#
2018-5-18 17:05:57 只看该作者
我ngui做atlas时有时候会遇到这种情况,就是sprite边缘有线,很烦,不知道适不适用
8常驻蛮牛
7613/10000
排名
251
昨日变化

0

主题

3915

帖子

7613

积分

Rank: 8Rank: 8

UID
3215
好友
0
蛮牛币
164
威望
0
注册时间
2013-9-4
在线时间
1702 小时
最后登录
2019-4-16
10#
2018-5-19 10:00:52 只看该作者
顶顶顶顶顶顶顶顶顶顶
6蛮牛粉丝
1350/1500
排名
2950
昨日变化

1

主题

489

帖子

1350

积分

Rank: 6Rank: 6Rank: 6

UID
220310
好友
1
蛮牛币
2310
威望
0
注册时间
2017-5-2
在线时间
360 小时
最后登录
2019-4-3
11#
2018-5-22 10:12:22 只看该作者
谢谢分享
3偶尔光临
176/300
排名
25422
昨日变化

0

主题

58

帖子

176

积分

Rank: 3Rank: 3Rank: 3

UID
119006
好友
0
蛮牛币
15
威望
0
注册时间
2015-8-20
在线时间
102 小时
最后登录
2019-2-25
12#
2018-5-25 16:49:51 只看该作者
66666666666
7日久生情
2373/5000
排名
1551
昨日变化

53

主题

824

帖子

2373

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
219600
好友
7
蛮牛币
3271
威望
0
注册时间
2017-4-27
在线时间
674 小时
最后登录
2019-4-12
13#
2018-5-26 09:41:09 只看该作者
感谢分享
2初来乍到
124/150
排名
16217
昨日变化

0

主题

32

帖子

124

积分

Rank: 2Rank: 2

UID
108836
好友
0
蛮牛币
11
威望
0
注册时间
2015-6-16
在线时间
48 小时
最后登录
2019-2-16
14#
2018-5-31 20:03:37 只看该作者
谢谢分享
7日久生情
2742/5000
排名
665
昨日变化

30

主题

578

帖子

2742

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
124569
好友
25
蛮牛币
7431
威望
0
注册时间
2015-10-4
在线时间
809 小时
最后登录
2019-4-16
15#
2018-6-5 07:44:04 只看该作者
这个很有用,谢谢分享
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

471| 193| 419| 527| 200| 739| 827| 619| 864| 463|