排列三标志: 士郎 低多边形化风格——边缘检测、德洛内剖分及其他

34
回复
4359
查看
打印 上一主题 下一主题
[ 复制链接 ]
排名
1
昨日变化

排列三2014079期正版藏机图 www.d0po.cn 7665

主题

8215

帖子

3万

积分

Rank: 16

UID
1231
好友
186
蛮牛币
10283
威望
30
注册时间
2013-7-29
在线时间
3951 小时
最后登录
2019-5-8

活力之星原创精华达人突出贡献奖财富之证游戏蛮牛QQ群会员蛮牛妹VIP

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

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

x
最近看了这个如何使用JavaScript生成lowpoly风格图像?,了解到了德洛内三角形的相关知识,迅速让我想到是否可以将这些内容应用到我目前自学的项目中来。因此尝试学习了该课题,并考虑在自学的项目中将课题应用,以解决素材偏少的问题。

以下是使用到的图片:



边缘检测
边缘检测使用到了《unity shader入门精要》[1]中提到的Sobel算子
   
[AppleScript] 纯文本查看 复制代码
 private float Sobel(int x, int y)
    {
        float Gx = 0;
        Gx += Luminance(x - 1, y - 1) * -1;
        Gx += Luminance(x - 1, y) * -2;
        Gx += Luminance(x - 1, y + 1) * -1;
        Gx += Luminance(x + 1, y - 1) * 1;
        Gx += Luminance(x + 1, y) * 2;
        Gx += Luminance(x + 1, y + 1) * 1;
        float Gy = 0;
        Gy += Luminance(x - 1, y - 1) * 1;
        Gy += Luminance(x, y - 1) * 2;
        Gy += Luminance(x + 1, y - 1) * 1; 
        Gy += Luminance(x - 1, y + 1) * -1;
        Gy += Luminance(x, y + 1) * -2;
        Gy += Luminance(x + 1, y + 1) * -1;
        return Mathf.Sqrt(Gx * Gx + Gy * Gy);//出于性能考虑可以用 Mathf.Abs(Gx) + Mathf.Abs(Gy);
    }

当然,处于不同的表现、性能、采样上的需求,也可以使用规模不等的其他算子计算卷积核结果。
设定门槛为1之后,图片变成了这样:





点的选取
点的选取分为两部分:边缘和背景。之所以要分为两部分选点,是要尽量避免边缘之间出现大块的空白,致使三角网出现交错锐利的形状。
以下是边缘采样门槛0.9f、背景采样率0.999f的分布图:




德洛内三角网
关于德洛内三角形,我参考并简化了mattatz[2]所使用的逐点插入法,其实最开始我参考的是[3]中的写法,但是经过我反复推算,在某些情况下有问题,在写完传统的逐点插入法然后再次阅读此文的时候,愕然发现文末已经有人评论:


大家注意下, 楼主提供的中文伪代码有一处问题: "对edge buffer进行去重" 表意不明. 经测试, 准确的做法应为, "将 edge buffer 中重复的 edge 全部去除(注意并非只是将重复的部分去掉, 而是将发生重复的 edge 全部去除, 即不仅去除重复的部分, 原本的 edge 也要去掉).



色彩
当我们拥有了从Vector2[]生成的诸多三角形,接下来的事情就是要将三角形实例化。由于我还没有写过软渲染器,所以对于如何渲染抗锯齿的图元目前还只停留在用蒙特卡洛方法大量采样的想法上。而一个图形动辄数百个三角形,十几万像素,如果每个像素都要这么做实在是太费时间,因此时间无多的我决定先将三角形导出成Mesh。



三角面片只使用顶点色着色,一个三角面片的颜色来源于其中点的颜色。



更多思考
由于时间关系,我只是草草对边缘检测和德洛内三角剖分进行了浅尝辄止的研究,本课题也仅停留在刚刚能用的地步,有巨大的改进空间。
第一,是将低面数化后的结果以图像的形式输出,这一块必然要用到光栅化的渲染管线知识,我计划之后参考


第二,是改进选点算法,可以看到,风格化后,原本均匀的树枝变得崎岖不平。目前我想到了两个方向,一,将图像尺寸压缩到原本的几分之一进行选点,保证点与点之间密度不至于过于离谱;二,取消背景选点,将图像简化成若干色阶,再做边缘检测,保证边缘附近的点不至于被背景选点所破坏形成的轮廓。
第三,使用更好的剖分算法,目前的插入算法中,对于每个新增的点都会遍历已生成的所有三角形,致使高点数下运算时间过长。
以下是Github地址,若有时间我会继续琢(mo)磨该课题





[1]《Unity Shader入门精要》参考文献


知乎@破晓


排名
25423
昨日变化

0

主题

48

帖子

73

积分

Rank: 2Rank: 2

UID
302397
好友
1
蛮牛币
75
威望
0
注册时间
2018-11-4
在线时间
9 小时
最后登录
2018-12-18
沙发
2018-11-12 12:10:18 只看该作者
边缘检测和德洛内三角剖分
排名
31429
昨日变化

0

主题

20

帖子

32

积分

Rank: 1

UID
302421
好友
1
蛮牛币
93
威望
0
注册时间
2018-11-4
在线时间
2 小时
最后登录
2018-11-23
板凳
2018-11-12 15:49:09 只看该作者
边缘检测、德洛内剖
7日久生情
2011/5000
排名
1897
昨日变化

41

主题

737

帖子

2011

积分

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

UID
214924
好友
4
蛮牛币
17832
威望
0
注册时间
2017-3-28
在线时间
517 小时
最后登录
2019-4-30
地板
2018-11-13 09:06:13 只看该作者
学以致用最是牛
排名
28926
昨日变化

0

主题

3

帖子

18

积分

Rank: 1

UID
224736
好友
0
蛮牛币
33
威望
0
注册时间
2017-6-2
在线时间
3 小时
最后登录
2018-12-24
5#
2018-11-13 09:46:06 只看该作者
感觉很不错
5熟悉之中
575/1000
排名
5512
昨日变化

1

主题

135

帖子

575

积分

Rank: 5Rank: 5

UID
229565
好友
0
蛮牛币
595
威望
0
注册时间
2017-6-30
在线时间
181 小时
最后登录
2019-4-17
6#
2018-11-13 11:34:50 只看该作者
佩服
7日久生情
2248/5000
排名
1621
昨日变化

0

主题

756

帖子

2248

积分

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

UID
148286
好友
0
蛮牛币
3848
威望
0
注册时间
2016-5-11
在线时间
692 小时
最后登录
2019-5-7
7#
2018-11-13 16:06:49 只看该作者
排名
34884
昨日变化
1

0

主题

17

帖子

32

积分

Rank: 1

UID
278420
好友
0
蛮牛币
6
威望
0
注册时间
2018-4-23
在线时间
7 小时
最后登录
2019-1-21
8#
2018-11-13 22:03:05 只看该作者
感谢楼主的分享 学习 学习
6蛮牛粉丝
1052/1500
排名
2092
昨日变化

0

主题

71

帖子

1052

积分

Rank: 6Rank: 6Rank: 6

UID
65205
好友
0
蛮牛币
3862
威望
0
注册时间
2015-1-2
在线时间
319 小时
最后登录
2019-4-24
9#
2018-11-14 11:46:34 只看该作者
跪拜大佬
3偶尔光临
187/300
排名
15298
昨日变化

2

主题

72

帖子

187

积分

Rank: 3Rank: 3Rank: 3

UID
297575
好友
0
蛮牛币
528
威望
0
注册时间
2018-9-19
在线时间
63 小时
最后登录
2019-4-24
10#
2018-11-15 22:11:27 只看该作者
擦,看着就有点牛逼,什么矢量卷积什么的听着就高端
8常驻蛮牛
5024/10000
排名
1669
昨日变化

0

主题

3580

帖子

5024

积分

Rank: 8Rank: 8

UID
185339
好友
1
蛮牛币
3608
威望
0
注册时间
2016-11-20
在线时间
666 小时
最后登录
2019-5-8
11#
2018-11-19 09:06:50 只看该作者
{:93:}
8常驻蛮牛
5024/10000
排名
1669
昨日变化

0

主题

3580

帖子

5024

积分

Rank: 8Rank: 8

UID
185339
好友
1
蛮牛币
3608
威望
0
注册时间
2016-11-20
在线时间
666 小时
最后登录
2019-5-8
12#
2018-11-19 09:13:01 只看该作者
{:93:}
2初来乍到
137/150
排名
16593
昨日变化

0

主题

34

帖子

137

积分

Rank: 2Rank: 2

UID
159377
好友
0
蛮牛币
47
威望
0
注册时间
2016-7-28
在线时间
61 小时
最后登录
2019-5-8
13#
2018-11-19 09:49:32 只看该作者
图形学的东西一定要mark
7日久生情
2504/5000
排名
782
昨日变化

1

主题

706

帖子

2504

积分

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

UID
56496
好友
0
蛮牛币
7700
威望
0
注册时间
2014-11-19
在线时间
579 小时
最后登录
2019-5-8
14#
2018-11-23 10:17:05 只看该作者
有点厉害,谢谢分享!
排名
48131
昨日变化

0

主题

7

帖子

21

积分

Rank: 1

UID
225658
好友
0
蛮牛币
83
威望
0
注册时间
2017-6-7
在线时间
10 小时
最后登录
2019-4-2
15#
2018-11-25 22:02:22 只看该作者

谢谢分享,学习下
您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

  • 【人事】中共临汾市委组织部公示3名拟任职干部 2019-05-18
  • 习近平与人民日报那些事 2019-05-10
  • 很多常用药同属一家族 2019-04-30
  • 小牛犊天生两条腿 走起路来像袋鼠 2019-04-30
  • 就因为“阶级亲”,才应把这些难民送到欧洲。欧洲生活水平高呀,让亲人生活的更好。不能让他们到中国受苦受难呀。 2019-04-27
  • 资管新规来了!打破刚兑  投资者怎么办? 2019-04-27
  • 紫光阁中共中央国家机关工作委员会 2019-04-24
  • 图解:习近平主席这12个金句振奋人心! 2019-04-24
  • 您访问的页面找不回来了 2019-04-07
  • 五莲科技局以“三大”助力动能转换 2019-04-07
  • 匹夫有责之一百一十二—道义大义的博客—强国博客—人民网 2019-03-30
  • 守住青山不放松 护好绿水不辞难——在渝全国人大代表聚焦“共抓大保护、不搞大开发”专题调研记略 2019-03-28
  • 经营者要想“我心换你心”,就要未雨绸缪,让不诚信的诱惑少一点,如此才能在市场中生存下来。反过来说,承担不起亏损就关门歇业,是否也是一种不诚信呢? 2019-03-21
  • 追风上市公司“跌落神坛”-热门标签-华商网数码 2019-03-21
  • 文化艺术交易场所沙龙第一期活动在京顺利举行 2019-03-16
  • 947| 584| 663| 610| 419| 830| 847| 620| 651| 243|