最近路过一家乐高店,看到里面有Lego Master用乐高拼了一整面墙的图画,就开始想有没有可能我自己也拼一个呢?放家里当一个照片放着就好,不用一面墙。于是就做了一些实验,拼了一个75x75cm的四宫辉夜出来。下面主要介绍怎么从一张照片得到一个乐高零件的列表,进而购买拼装。很明显,这个分为两步,第一步,从一张照片根据现有的乐高的颜色,得到一个低分辨率的类似8bit的图像;第二步,根据不同颜色的乐高的形状,得到零件的列表和拼接指南。下面我们一个一个讲。
从全彩照片到适合乐高的照片用Photoshop很容易解决。我做了一些调研,目前已有的方案大都有两个问题,第一没有考虑到乐高本身有什么颜色,只是单纯用系统提供的颜色,所以实际拼的时候还要调整颜色。第二没有禁用Photoshop的仿色(Dither)功能,所以出来有杂点。我从PS操作的角度介绍一个简便易行且效果好的方法。最后再给出一个用程序大幅减少颗粒数量和成本的例子。
首先打开一个图像:
然后用PS缩小到目标大小。这里我用的是64x64像素(拼出来大约50cm x 50cm):
接下来转换成规定的颜色:
下面是最重要的部分: 颜色暂时选16,强制选暂时选黑白,仿色选无。这样出来的色彩就会比较自然而且没有噪点:
但是,这仍然没有考虑到乐高本身的颜色。乐高本身有多少种颜色呢?如果考虑历史上曾经生产过的颜色,一共有81种(链接)。但很多现在已经停产了。现在乐高的官网还有18种颜色的1x1 brick可以购买(链接)。有人用Pantone色卡一个个和乐高的颜色比对,得到了每种颜色的RGB值(链接)。我把现在乐高网站还在售的型号提取出来,整理如下:
Color | Hex | |
---|---|---|
Brick Yellow | D3BC8D | |
Bright Reddish Violet | AF1685 | |
Light Purple | 981D97 | |
Bright Red | EF3340 | |
Medium Azur | 71C5E8 | |
Dark Stone Grey | 5B6770 | |
New Dark Red | 9B2743 | |
Medium Lilac | 330072 | |
Earth Blue | 003865 | |
Medium Stone Grey | A2AAAD | |
Bright Blue | 003DA5 | |
Medium Blue | 6CACE4 | |
Reddish Brown | 7A3E3A | |
Bright Yellow | FFCD00 | |
Black | 27251F | |
Sand Green | 789F90 | |
Bright Yellowish Green | B5BD00 | |
Bright Orange | FF8200 |
那这个信息怎么用呢?具体地说,需要在上面索引颜色的界面里把调板换成自定...,然后就会弹出来一个对话框可以选具体颜色:
点击其中某个颜色就可以更改RGB值。为了简便起见,我们使用下图中光标高亮的部分(#ffffff)来编辑。
然后输入上面颜色即可。全部打进去以后PS的颜色应该像这样:
可以点击...按钮另存为一个ACT文件,这样下次就不用再打啦。但遗憾的是这18个颜色没有足够多的黄色,所以出来的结果非常鬼畜,颜色基本都丢失了:
但如果我们换一个颜色对比强烈(大红配大绿)的图片,效果就会好很多:
但是否就意味着对于最开始的蓝毛的例子,我们就没办法了吗?也不是。前面提到我们把仿色给禁用了,这是因为它会引入噪点,非常难看:
但仿色到底是干什么的呢?它是一种用有限的颜色来表达更丰富的灰度和颜色的方法。因为64x64的分辨率实在是太低了,所以看起来非常奇怪。如果比如我们想拼一个2m x 2m的乐高墙的话,这个分辨率可以达到256x256。此时dither就非常有效果了(左边是没有Dither的,右边是有Dither的):
所以我们也可以看出来,做一个牛逼的乐高像素画,选一个适合能买到的乐高颗粒的照片,是成功的一大半。这个我们也完全可以自动化批量处理,只要用色彩空间中的距离来排序就好。这个就留做家庭作业啦。
几个相对靠谱的例子(长边96像素):
然后下面怎么办呢?很多网上的教程到这一步就结束了,下面就是去乐高网站买很多1x1的颗粒就好了。但实际上还是有很多优化的空间。比如上面这个96x96的图像,如果全部购买1x1的颗粒需要9216个颗粒,共计645美元。但其实很多颗粒是可以合并的,比如8个1x1的颗粒也许可以合并成一个2x4的颗粒,又省了时间又省了钱。所以我上网手动查询了现在乐高网站上有货的颗粒的尺寸,手工写了个程序生成如何拼贴的方案,得到如下所示的图纸:
用这个程序把颗粒的数量从9200+缩减到了2500+,所需费用从650左右缩减到了300左右。在用程序输出了每种颗粒分别要买多少以后在乐高官网上下了单。这个单据客服说要在波兰手工挑出来,然后运到美国,清关啥的搞了好长时间,过了一个月才拿到。。然后就是拼接啦:b站
最终的效果如图所示:
有感兴趣的小伙伴也可以试试哈!
Comments